Java applets can be useful front ends to an EJB application. Unlike servlets, JSPs, or standalone Java applications, applets can easily contact a single remote host (the one that delivered it to the user). To contact an EJB from an applet, you need to package some special classes for it to function correctly. In addition, you must consider the special security restrictions imposed on an applet. Due to execution restrictions and environment, you have to take specific factors into account when developing and deploying an applet from which you want to invoke an EJB.

Our sample applet contacts a session bean to invoke its function.

public class EJBInvoker extends JApplet {

  public void init() {
    setSize(new Dimension(400100));

    JButton button = new JButton("Invoke EJB");
    getContentPane().setLayout(new BorderLayout());
    getContentPane().add(button, BorderLayout.CENTER);
    // call our session-bean in button-click:
    button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent event) {

  public void invokeEJB() {
    try {
      InitialContext context = getInitialContext();
      TestBeanHome home = (TestBeanHomePortableRemoteObject.narrow(
        context.lookup("ejb/testSession"), TestBeanHome.class);
      TestBean bean = home.create();

    catch (Exception e) {

  private InitialContext getInitialContext() throws Exception {
    Properties props = new Properties();
    // build the URL to the applet host and...
    String host = getCodeBase().getHost();
    // ...configure initial context...
    return new InitialContext(props);