Session Bean
 
Files List:
 
BaseSeesionBean.java
which extnds javax.ejb.seesionbean, main include some  normal method but not include ejbCreate(), which is in another specail file.
 
code:
package base; 
import java.rmi.RemoteException; 

import javax.ejb.EJBException; 
import javax.ejb.SessionBean; 
import javax.ejb.SessionContext; 
import javax.naming.InitialContext; 

import org.apache.log4j.Logger; 


public  class BaseSessionBean  implements SessionBean { 

     /** Log4j instance for actual implementation class */ 
         public  transient Logger log; 
         private SessionContext ctx; 

         /** Cached initial context to save JNDI lookups */ 
         transient InitialContext cacheCtx =  null
         
         
         /** 
         * Initializes logging mechanism per instance 
         */
 
         public BaseSessionBean() { 
                log = Logger.getLogger( this.getClass()); 
        } 

         /** 
         * Logs a message with priority TRACE 
         * 
         * @param msg Message 
         */
 
         public  void trace(String msg) { 
                log.trace(msg); 
        } 

         /** 
         * Logs a message and an exception with priority TRACE 
         * 
         * @param msg Message 
         * @param t Exception 
         */
 
         public  void trace(String msg, Throwable t) { 
                log.trace(msg, t); 
        } 

         /** 
         * Logs a message with priority DEBUG 
         * 
         * @param msg Message 
         */
 
         public  void debug(String msg) { 
                log.debug(msg); 
        } 

         /** 
         * Logs a message and an exception with priority DEBUG 
         * 
         * @param msg Message 
         * @param t Exception 
         */
 
         public  void debug(String msg, Throwable t) { 
                log.debug(msg, t); 
        } 

         /** 
         * Logs a message with priority INFO 
         * 
         * @param msg Message 
         */
 
         public  void info(String msg) { 
                log.info(msg); 
        } 

         /** 
         * Logs a message and an exception with priority INFO 
         * 
         * @param msg Message 
         * @param t Exception 
         */
 
         public  void info(String msg, Throwable t) { 
                log.info(msg, t); 
        } 

         /** 
         * Logs a message with priority WARN 
         * 
         * @param msg Message 
         */
 
         public  void warn(String msg) { 
                log.warn(msg); 
        } 

         /** 
         * Logs a message and an exception with priority WARN 
         * 
         * @param msg Message 
         * @param t Exception 
         */
 
         public  void warn(String msg, Throwable t) { 
                log.warn(msg, t); 
        } 

         /** 
         * Logs a message with priority ERROR 
         * 
         * @param msg Message 
         */
 
         public  void error(String msg) { 
                log.error(msg); 
        } 

         /** 
         * Logs a message and an exception with priority ERROR 
         * 
         * @param msg Message 
         * @param t Exception 
         */
 
         public  void error(String msg, Throwable t) { 
                log.error(msg, t); 
        } 
         
         
  @Override 
   public  void ejbActivate()  throws EJBException, RemoteException { 
     log = Logger.getLogger( this.getClass()); 

  } 

  @Override 
   public  void ejbPassivate()  throws EJBException, RemoteException { 
     // TODO Auto-generated method stub 

  } 

  @Override 
   public  void ejbRemove()  throws EJBException, RemoteException { 
     // TODO Auto-generated method stub 

  } 

  @Override 
   public  void setSessionContext( final javax.ejb.SessionContext ctx)  throws EJBException, 
      RemoteException { 
     this.ctx = ctx; 

  } 

   /** 
         * Get session contect 
         * 
         * @return current session context 
         */
 
         public SessionContext getSessionContext() { 
                 return ctx; 
        } 

         /** 
         * return the environment entries locator 
         * @return return the environment entries locator 
         */
 
         protected ServiceLocator getLocator() { 
                 return ServiceLocator.getInstance(); 
        } 

 
 
ServiceLocator.java
Tool class for gethome interface of remote or local, and some others.
package base; 

import java.net.URL; 
import java.util.Collections; 
import java.util.HashMap; 
import java.util.Map; 

import javax.ejb.EJBHome; 
import javax.ejb.EJBLocalHome; 
import javax.mail.Session; 
import javax.naming.Context; 
import javax.naming.InitialContext; 
import javax.naming.NameNotFoundException; 
import javax.naming.NamingException; 
import javax.rmi.PortableRemoteObject; 
import javax.sql.DataSource; 


public  class ServiceLocator { 

     /** ejb home cache */ 
        @SuppressWarnings( "unchecked"
   private  transient Map ejbHomes = Collections.synchronizedMap( new HashMap()); 

         /** the jndi context */ 
         private  transient Context ctx; 

         /** the singleton instance */ 
         private  static  transient ServiceLocator instance; 

         /** 
         * Create a new service locator object. 
         * @throws ServiceLocatorException if the context failed to be initialized 
         */
 
         private ServiceLocator()  throws ServiceLocatorException { 
                 try { 
                         this.ctx =  new InitialContext(); 
                }  catch (NamingException e){ 
                         throw  new ServiceLocatorException(e); 
                } 
        } 

         /** 
         * return the singleton instance 
         * @return the singleton instance 
         * @throws ServiceLocatorException if the instance could not be initialized the first time 
         */
 
         public  static  final ServiceLocator getInstance()  throws ServiceLocatorException { 
                 // synchronization is intentionally left out. It 'should' not have dramatic 
                 // consequences as it is not that destructive. 
                 if (instance ==  null){ 
                        instance =  new ServiceLocator(); 
                } 
                 return instance; 
        } 
         
         /** 
         * return the ejb local home. 
         * clients need to cast to the type of EJBHome they desire 
         * @param jndiHomeName the jndi home name matching the requested local home. 
         * @return the Local EJB Home corresponding to the home name 
         */
 
         public EJBLocalHome getLocalHome(String jndiHomeName)  throws ServiceLocatorException { 
                EJBLocalHome home = (EJBLocalHome)ejbHomes.get(jndiHomeName); 
                 if (home ==  null) { 
                        home = (EJBLocalHome)getObject(jndiHomeName); 
                        ejbHomes.put(jndiHomeName, home); 
                } 
                 return home; 
        } 

         /** 
         * return the ejb remote home. 
         * clients need to cast to the type of EJBHome they desire 
         * @param jndiHomeName the jndi home name matching the requested remote home. 
         * @return the Local EJB Home corresponding to the home name 
         */
 
         public EJBHome getRemoteHome(String jndiHomeName, Class className)  throws ServiceLocatorException { 
                EJBHome home = (EJBHome)ejbHomes.get(className); 
                 if (home ==  null) { 
                        Object objref = getObject(jndiHomeName); 
                        home = (EJBHome) PortableRemoteObject.narrow(objref, className); 
                        ejbHomes.put(className, home); 
                } 
                 return home; 
        } 

         /** 
         * return the datasource object corresponding the the env entry name 
         * @return the DataSource corresponding to the env entry name parameter 
         * @throws ServiceLocatorException if the lookup fails 
         */
 
         public DataSource getDataSource(String dataSourceName)  throws ServiceLocatorException { 
                 return (DataSource)getObject(dataSourceName); 
        } 

         /** 
         * return the URL object corresponding to the env entry name 
         * @param envName the env entry name 
         * @return the URL value corresponding to the env entry name. 
         * @throws ServiceLocatorException if the lookup fails 
         */
 
         public URL getUrl(String envName)  throws ServiceLocatorException { 
                 return (URL)getObject(envName); 
        } 

         /** 
         * return a boolean value corresponding to the env entry 
         * @param envName the env entry name 
         * @return the boolean value corresponding to the env entry. 
         * @throws ServiceLocatorException if the lookup fails 
         */
 
         public  boolean getBoolean(String envName)  throws ServiceLocatorException { 
                 return ((Boolean)getObject(envName)).booleanValue(); 
        } 

         /** 
         * return a string value corresponding to the env entry 
         * @param envName the env entry name 
         * @return the boolean value corresponding to the env entry. 
         * @throws ServiceLocatorException if the lookup fails 
         */
 
         public String getString(String envName)  throws ServiceLocatorException { 
                String ret =  null
                 try { 
                        ret = (String)getObject(envName);                    
                }  catch (ServiceLocatorException e) { 
                   if (e.getCause()  instanceof NameNotFoundException) { 
         // ignore this and return null, otherwise we can not have empty values in Glassfish 
                    ret =  null
      } 
                } 
                 return ret; 
        } 

         /** 
         * return a mail session corresponding to the env entry 
         * @param envName the env entry name 
         * @return the mail session corresponding to the env entry. 
         * @throws ServiceLocatorException if the lookup fails 
         */
 
         public Session getMailSession(String envName)  throws ServiceLocatorException { 
                 return (Session)getObject(envName); 
        } 

         /** 
         * return a known java object corresponding to the env entry 
         * @param envName the env entry name 
         * @return the java object corresponding to the env entry 
         * @throws ServiceLocatorException if the lookup fails 
         */
 
         public Object getObject(String envName)  throws ServiceLocatorException { 
                 try { 
                         return ctx.lookup(envName); 
                }  catch (NamingException e) { 
                         throw  new ServiceLocatorException(e); 
                } 
        } 

 
LocalUserAdminSessionBean.java
Mian Biz class, include ejbCreate emthod.
package ejbBeans; 

import java.rmi.RemoteException; 

import javax.ejb.CreateException; 
import javax.ejb.EJBException; 

import base.BaseSessionBean; 

public  class LocalUserAdminSessionBean  extends BaseSessionBean{ 

   /** 
    *    
    */
 
   private  static  final  long serialVersionUID = 5028163905841527500L; 
   private IUserAdminSessionLocal useradminsession; 

   /** 
         * Default create for SessionBean. 
         * 
         * @throws CreateException if bean instance can't be created 
         * @see org.ejbca.core.model.log.Admin 
         */
 
         public  void ejbCreate()  throws CreateException { 
//                try {                     
// 
//                        IUserAdminSessionLocalHome useradminsessionhome = (IUserAdminSessionLocalHome) getLocator().getLocalHome(IUserAdminSessionLocalHome.COMP_NAME); 
//                        useradminsession = useradminsessionhome.create();                         
//                         
//                } catch (Exception e) { 
//                        error("Error creating session bean:", e); 
//                        throw new EJBException(e); 
//                } 
        } 
         
         public  void setDaniel()  throws RemoteException{ 
//          useradminsession.setString("daniel"); 
        } 
         
     public String setString(java.lang.String str ){ 
     System.out.println(str); 
      return str+str; 
    } 

 
 
UserAdminSessionSession
package ejbBeans; 

public  class UserAdminSessionSession  extends LocalUserAdminSessionBean 
     implements javax.ejb.SessionBean { 
   /** 
    *    
    */
 
   private  static  final  long serialVersionUID = 1964534241710585774L; 

   public  void ejbActivate()  throws javax.ejb.EJBException, 
      java.rmi.RemoteException { 

     super.ejbActivate(); 
  } 

   public  void ejbPassivate()  throws javax.ejb.EJBException, 
      java.rmi.RemoteException { 
     super.ejbPassivate(); 
  } 

   public  void setSessionContext(javax.ejb.SessionContext ctx) 
       throws javax.ejb.EJBException, java.rmi.RemoteException { 
     super.setSessionContext(ctx); 
  } 

   public  void unsetSessionContext() { 
  } 

   public  void ejbRemove()  throws javax.ejb.EJBException, 
      java.rmi.RemoteException { 
     super.ejbRemove(); 
  } 


 
IUserAdminSessionHome.java
/** 
*    
*/
 
package ejbBeans; 

/** 
* Home interface for UserAdminSession. 
*/
 
public  interface IUserAdminSessionHome 
      extends javax.ejb.EJBHome 

      public  static  final String COMP_NAME= "java:comp/env/ejb/UserAdminSession"
      public  static  final String JNDI_NAME= "UserAdminSession"

      public IUserAdminSessionRemote create() 
             throws javax.ejb.CreateException,java.rmi.RemoteException; 


 
IUserAdminSessionLocal.java
package ejbBeans; 

import javax.ejb.EJBLocalObject; 

public  interface IUserAdminSessionLocal  extends EJBLocalObject { 

     public String setString(java.lang.String str ) ; 

 
IUserAdminSessionLocalHome.java
 
package ejbBeans; 

import javax.ejb.EJBLocalHome; 

public  interface IUserAdminSessionLocalHome  extends EJBLocalHome { 

   public  static  final String COMP_NAME= "java:comp/env/ejb/UserAdminSessionLocal"
         public  static  final String JNDI_NAME= "UserAdminSessionLocal"

         public IUserAdminSessionLocal create() 
              throws javax.ejb.CreateException; 


 
IUserAdminSessionRemote.java
 
package ejbBeans; 

import javax.ejb.EJBObject; 

public  interface IUserAdminSessionRemote  extends EJBObject { 

      public String setString(java.lang.String str )  throws java.rmi.RemoteException; 


 
Deploy XMl
 
ejb-jar.xml
<? xml  version ="1.0"  encoding ="UTF-8" ?> 
< ejb-jar  id ="ejb-jar_ID"  version ="2.1"  xmlns ="http://java.sun.com/xml/ns/j2ee"  xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd" > 
   < display-name >ejb21 </ display-name > 
    
   < enterprise-beans > 

            <!--  Session Beans -->            
            
  <!--  UserAdminSession bean --> 
     < session  id ="Session_UserAdminSession" > 
                  < description ><![CDATA[Administrates users in the database using UserData Entity Bean.]]> </ description > 


                  < ejb-name >UserAdminSession </ ejb-name > 
                 
                  < home >ejbBeans.IUserAdminSessionHome </ home > 
                  < remote >ejbBeans.IUserAdminSessionRemote </ remote > 
                  < local-home >ejbBeans.IUserAdminSessionLocalHome </ local-home > 
                  < local >ejbBeans.IUserAdminSessionLocal </ local > 
                  < ejb-class >ejbBeans.UserAdminSessionSession </ ejb-class > 
                  < session-type >Stateless </ session-type > 
                  < transaction-type >Container </ transaction-type > 
                    
                  < env-entry > 
                         < env-entry-name >DataSource </ env-entry-name > 
                         < env-entry-type >java.lang.String </ env-entry-type > 
                         < env-entry-value ><![CDATA[java:/EjbcaDS]]> </ env-entry-value > 
                  </ env-entry > 
                    
                  < ejb-local-ref  id ="EJBLocalRef_48" > 
                         < ejb-ref-name >ejb/UserAdminSessionLocal </ ejb-ref-name > 
                         < ejb-ref-type >Session </ ejb-ref-type > 
                         < local-home >ejbBeans.IUserAdminSessionHome </ local-home > 
                         < local >ejbBeans.IUserAdminSessionLocal </ local > 
                         < ejb-link >UserAdminSession </ ejb-link > 
                  </ ejb-local-ref > 
     </ session > 
     
        <!--  UserAdminSession bean --> 
< session  id ="Session_RaAdminSession" > 
                  < description ><![CDATA[Session bean handling core CA function,signing certificates]]> </ description > 
                  < display-name >RaAdminSB </ display-name > 

                  < ejb-name >RaAdminSession </ ejb-name > 

                  < home >RABeans.IRaAdminSessionHome </ home > 
                  < remote >RABeans.IRaAdminSessionRemote </ remote > 
                  < local-home >RABeans.IRaAdminSessionLocalHome </ local-home > 
                  < local >RABeans.IRaAdminSessionLocal </ local > 
                  < ejb-class >RABeans.RaAdminSessionSession </ ejb-class > 
                  < session-type >Stateless </ session-type > 
                  < transaction-type >Container </ transaction-type > 

             </ session > 
            
      </ enterprise-beans > 
        
      < assembly-descriptor > 
        
          < container-transaction  id ="MethodTransaction_273" > 
              < method  id ="MethodElement_297" > 
                     < ejb-name >UserAdminSession </ ejb-name > 
                      < method-name >* </ method-name > 
                 </ method > 
                 < trans-attribute >Required </ trans-attribute > 
          </ container-transaction > 
            
          < container-transaction  id ="MethodTransaction_305" > 
              < method  id ="MethodElement_329" > 
                     < ejb-name >UserAdminSession </ ejb-name > 
                     < method-intf >Local </ method-intf > 
                     < method-name >setString </ method-name > 
                     < method-params > 
                          < method-param >java.lang.String </ method-param > 
                     </ method-params > 
              </ method > 
              < trans-attribute >Supports </ trans-attribute > 
         </ container-transaction > 
         
         < container-transaction  id ="MethodTransaction_104" > 
             < method  id ="MethodElement_128" > 
                  < ejb-name >RaAdminSession </ ejb-name > 
                     < method-name >* </ method-name > 
              </ method > 
              < trans-attribute >Required </ trans-attribute > 
         </ container-transaction > 
         </ assembly-descriptor > 
</ ejb-jar > 
 
Jboss.xml
<? xml  version ="1.0"  encoding ="UTF-8" ?> 
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 3.2//EN" "http://www.jboss.org/j2ee/dtd/jboss_3_2.dtd"> 

< jboss > 
   < unauthenticated-principal >nobody </ unauthenticated-principal > 

   < enterprise-beans > 
    
     < session >     
                  < ejb-name >UserAdminSession </ ejb-name > 
                 <!--  jdni-name 主要是处理多个ejb组件同处一个ejb-jar.xml文件时候的jndi名字到ejb名的重定向 --> 
                  < jndi-name >UserAdminSession </ jndi-name > 
                  < local-jndi-name >UserAdminSessionLocal </ local-jndi-name > 
     
                 < method-attributes > 
                 </ method-attributes >                 
             </ session > 
             < session > 
                  < ejb-name >RaAdminSession </ ejb-name > 
                  < jndi-name >RaAdminSession </ jndi-name > 
                  < local-jndi-name >RaAdminSessionLocal </ local-jndi-name > 

                 < method-attributes > 
                 </ method-attributes > 
             </ session > 
   </ enterprise-beans > 

</ jboss >
 
 
Entity Bean
 
Similar with Sessionbean, main have 5 files,
 
BaseEntityBean.java
Include some common method except ejbCreate(), and some tool method.
 
UserDataBean.java 
Extends BaseEntityBean, an abstract class, implments some getter and setter which have identity in UserDataLocal.java , include mian class ejbCreate().
 
UserDataLocal.java
Extends EJBLocalObject, an interface file, identity some method for user.
 
UserDataLocalHome.java
Extends EJBLocalHome, an interface , identity COMP_NAME and JDNI_NAME and include an main Create() method.