EJBHomeFactory.java
上传用户:dinglihq
上传日期:2013-02-04
资源大小:99958k
文件大小:1k
源码类别:

Java编程

开发平台:

Java

  1. package com.borland.training.meetings.sessions;
  2. import javax.naming.*;
  3. import java.util.*;
  4. import javax.ejb.*;
  5. import com.borland.training.meetings.entities.*;
  6. import com.borland.training.meetings.sessions.*;
  7. public class EJBHomeFactory {
  8.   private static EJBHomeFactory instance = null;
  9.   private Context initialContext;
  10.   private Map ejbHomes;
  11.   private EJBHomeFactory() throws NamingException {
  12.     initialContext = new InitialContext();
  13.     ejbHomes = Collections.synchronizedMap(new HashMap());
  14.   }
  15.   public static EJBHomeFactory getInstance() throws NamingException {
  16.     if(instance == null) {
  17.       instance = new EJBHomeFactory();
  18.     }
  19.     return instance;
  20.   }
  21.   public EJBLocalHome lookupByLocalEJBReference(String ejbReferenceComponent)
  22.     throws NamingException {
  23.     java.lang.Object home = ejbHomes.get(ejbReferenceComponent);
  24.     if(home == null) {
  25.       home = initialContext.lookup("java:comp/env/ejb/" + ejbReferenceComponent);
  26.       ejbHomes.put(ejbReferenceComponent, home);
  27.     }
  28.     return (EJBLocalHome) home;
  29.   }
  30.   public EJBHome lookupByRemoteEJBReference(String ejbReferenceComponent, Class homeClass)
  31.     throws NamingException {
  32.     java.lang.Object home = ejbHomes.get(ejbReferenceComponent);
  33.     if(home == null) {
  34.       java.lang.Object obj =
  35.         initialContext.lookup("java:comp/env/ejb/" + ejbReferenceComponent);
  36.       home = javax.rmi.PortableRemoteObject.narrow(obj, homeClass);
  37.       ejbHomes.put(ejbReferenceComponent, home);
  38.     }
  39.     return (EJBHome) home;
  40.   }
  41. }