Sometimes it could be useful to save (serialize) an EJB home object reference so that you can avoid looking it up again using JNDI. By storing a previously retrieved home object reference of an EJB, you can reuse it to create or find new instances of an EJB. You improve the performance of your client by avoiding repeated calls to the JNDI system for the home reference lookup. Persisting the home object will let you shut down your client, restart, and start creating references of an EJB without another JNDI lookup.

In this tip we define some code that saves EJB home instance retreived previously to a file, then loads it again:

public class HomeSaver {
  
  public void example() {

    // perform a JNDI lookup to get home reference:
    BeanHome home = getHomeReference();  
    ...
    // save home reference:
    saveHome(home);
    
    // do something continous...
    ...
    // load home again:
    home = loadHome();
  }

  private void saveHome(BeanHome home) {

    try {
      ObjectOutputStream output = new ObjectOutputStream(
        new FileOutputStream("ejb.obj"));

      output.writeObject(home.getHomeHandle());
      
      output.flush();
      output.close();

    catch (Exception e) {
      e.printStackTrace();
    }
  }

  private BeanHome loadHome() {

    try {
      ObjectInputStream output = new ObjectInputStream(
        new FileInputStream("ejb.obj"));
      
      Handle handle = (Handleoutput.readObject();
      output.close();
      
      return (BeanHomehandle.getEJBHome();

    catch (Exception e) {
      e.printStackTrace();
    }
    return helper;
  }
}