开发一个简单的EJB

来源:互联网 发布:基础教育网络教研平台 编辑:程序博客网 时间:2024/04/29 16:04
 一:EJB开发基本上都遵循一个过程,从总体上说,可以分成 五个步骤: 


  .EJB程序代码编写   


  .EJB程序代码编译 
  .EJB部署描述文件编写    
  .打包 
  .编译生成容器代码 


  二:简单介绍 EJB代码编写 
  HelloWorld EJB程序代码包括的接口和类名如下: 


  HelloHome 主接口 继承  javax.ejb.EJBHome  
  HelloHome.java 文件名 


  功能:定义创建方法  
  Hello 远程接口  继承  javax.ejb.EJBObject  
  Hello.java 文件名 


  功能:定义业务逻辑方法  


  HelloBean Bean   类 继承  javax.ejb.SessionBean   HelloBean.java 文件名 


  功能:实现业务逻辑  
  HelloClient   客户端类  HelloClient.java 文件名 
  功能:测试程序 


  三:代码编写源码 


  <1>:HelloHome.java 


     1.  package com.aaa.cjh;    
     2.  public interface HelloHome extends javax.ejb.EJBHome {    
     3.      Hello  create()throws java.rmi.RemoteException,    
     4.      javax.ejb.CreateException;    
     5.  }   


   <2>:Hello.java 


     1.  package com.aaa.cjh;    
     2.     
     3.  public interface Hello extends javax.ejb.EJBObject{    
     4.      public String hello()throws java.rmi.RemoteException;    
     5.      public String helloOne()throws java.rmi.RemoteException;    
     6.  }    


   <3>:HelloBean.java 


     1.  package com.aaa.cjh;    
     2.     
     3.  import javax.ejb.SessionContext;    
     4.     
     5.  import org.apache.log4j.Logger;    
     6.     
     7.  public class HelloBean implements javax.ejb.SessionBean {    
     8.     
     9.   Logger log    Logger.getLogger(HelloBean.class);    
    10.       

    11.      private SessionContext ctx; 

     12.        
     13.      public void ejbCreate(){    
     14.       log.debug("ejbCreate()");    
     15.      }    
     16.      public void ejbRemove(){    
     17.       log.debug("ejbRemove()");    
     18.      }    
     19.      public void ejbActivate(){    
     20.       log.debug("ejbActivate()");    
     21.      }    
     22.      public void ejbPassivate(){    
     23.       log.debug("ejbPassivate()");    
     24.      }    
     25.      public void setSessionContext(javax.ejb.SessionContext ctx){    
     26.          this.ctx    ctx;    
     27.      }    
     28.      public String hello(){    
     29.       log.debug("hello()");    
     30.          return "Hello,-----------------World!";    
     31.      }    
     32.          
     33.      public String helloOne(){    
     34.       log.debug("helloOne()");    
     35.          return "helloOne,-----------------World!";    
     36.      }    
     37.   }    


     <4>:HelloClient.java 


       1.  package com.aaa.cjh;    
      2.  import java.util.Properties;    
       3.     
      4.  import javax.naming.Context;    
       5.  import javax.naming.InitialContext;    
      6.  import javax.rmi.PortableRemoteObject;    
       7.     
      8.  public class Test {    
       9.     
     10.   /**   
     11.    * @param args   
     12.    */   
     13.   public static void main(String[] args) {    
     14.     
     15.    Properties prop    new Properties();    
     16.          prop.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");    
     17.          prop.put(Context.PROVIDER_URL, "t3://localhost:端口号");    
     18.          prop.put(Context.SECURITY_PRINCIPAL, "weblogic用户名");    
     19.          prop.put(Context.SECURITY_CREDENTIALS, "weblogic密码");    
     20.              
     21.          Context context    null;    
     22.          try {    
     23.           context    new InitialContext(prop);    
     24.           HelloHome home    (HelloHome) PortableRemoteObject.narrow(context.lookup("HelloBean"),HelloHome.class); 

     25.              Hello hello    home.create();    
    26.              String docc   hello.hello();    
    27.              String doccc    hello.helloOne();    
    28.              System.out.println("完成");    
    29.              System.out.println(docc);    
    30.              System.out.println(doccc);    
    31.              context.close();    
    32.          } catch(Exception ex) {    
    33.           ex.printStackTrace();    
    34.          }    
    35.     
    36.   }    
    37.     
    38.  }    


   四:EJB部署文件编写 


   <1>:ejb-jar.xml 


      1.  <?xml version  "1.0" encoding           "UTF-8"?>   
      2.  <!DOCTYPE ejb-jar PUBLIC "- 
          //Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">   
      3.  <ejb-jar>   
      4.    <enterprise-beans>   
      5.      <session>   
      6.        <display-name>HelloBean</display-name>   
      7.        <ejb-name>HelloBean</ejb-name>   
      8.        <home>com.aaa.cjh.HelloHome</home>   
      9.        <remote>com.aaa.cjh.Hello</remote>   
    10.        <ejb-class>com.aaa.cjh.HelloBean</ejb-class>   
    11.        <session-type>Stateless</session-type>   
    12.        <transaction-type>Container</transaction-type>   
    13.      </session>   
    14.    </enterprise-beans>   
    15.    <assembly-descriptor>   
    16.      <container-transaction>   
    17.        <method>   
    18.          <ejb-name>HelloBean</ejb-name>   
    19.          <method-name>*</method-name>   
    20.        </method>   
    21.        <trans-attribute>Required</trans-attribute>   
    22.      </container-transaction>   
    23.    </assembly-descriptor>   
    24.  </ejb-jar>   


   <2>:weblogic-ejb-jar.xml 


      1.  <?xml version  "1.0" encoding           "UTF-8"?>   
      2.  <!DOCTYPE weblogic-ejb-jar PUBLIC "- 
          //BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN" "http://www.bea.com/servers/wls810/dtd/weblogic-ejb- 
          jar.dtd">   
      3.  <weblogic-ejb-jar>   
      4.    <weblogic-enterprise-bean>   
      5.      <ejb-name>HelloBean</ejb-name>  

 6.      <jndi-name>HelloBean</jndi-name>   
     7.    </weblogic-enterprise-bean>   
     8.  </weblogic-ejb-jar>   


  <3>:MANIFEST.MF 


  Manifest-Version: 1.0 
  Created-By: 1.5.0_04 (Sun Microsystems Inc.) 


  五:打包  pkg.bat 文件 


  @echo off 
  set PATH  D:\Program Files\Java\jdk1.5.0_04\bin;%PATH% 


  del HelloBean.jar 
  jar -cvf HelloBean.jar . 


  六:部署EJB 该实例在weblogic中部署EJB的jar包 


  以上操作完成后,执行HelloClient.java内进行调用测试 

原创粉丝点击