EJB循序渐进,手把手创建简单的无状态会话BEAN

转载 2006年05月26日 20:28:00

    示例环境:jdk1.3 + j2eesdk1.3

    EJB开发过程:

    1.定义EJB Remote接口.

    2.定义EJB需要的create,remove,find等Home接口.

    3.使用EJB class实现EJB Remote接口.

    4.实现EJB Home接口.

    5.使用ejb-jar.xml配置发布信息.

    6.部署EJB组件.

    7.我们最后还会编写客户端程序访问EJB.

     一.环境配置

    首先我们需要安装jdk1.3和j2eesdk1.3,安装过程我这里就不多说了,安装好后需要做一下配置,配置如下:

    1.右击我的电脑->系统->详细设置->环境变量,如下图所示:

   

    2.在系统变量一栏里新建一个变量JAVA_HOME,值为JDK安装的目录,如下图所示:

   

    然后按照以上方法再建立一些环境变量如下:

    变量名:J2EE_HOME        值:J2EE安装的根目录,我这里是E:/j2sdkee1.3.1

    变量名:LIB                         值:%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar;

    变量名:Path                       值:%J2EE_HOME%/bin;%JAVA_HOME%/bin;

 

    好了,环境配置好了,我们开始我们的EJB之旅了.

    二.创建EJB

    1.定义远程接口.

    首先我们编写Converter.java,定义无状态会话Bean的远程接口,代码如下:

    import javax.ejb.EJBObject;
    import java.rmi.RemoteException;
    /**
     * @author bluesky35
     */
    public interface Converter extends EJBObject{
     public double DollarsTORMB(double dollars) throws RemoteException;
     public double RMBTODollars(double RMB) throws RemoteException;
    }

    2.定义本地接口.

    然后我们编写ConverterHome.java,定义无状态会话Bean的本地接口,代码如下:

    import java.rmi.RemoteException;
    import javax.ejb.CreateException;
    import javax.ejb.EJBHome;

    /**
     * @author bluesky35
     */
    public interface ConverterHome extends EJBHome{
     public Converter create() throws RemoteException,CreateException;
    }

    3.定义Bean类.

    最后我们编写ConverterEJB.java,定义无状态会话Bean的Bean类,代码如下:

    import javax.ejb.SessionBean;
    import javax.ejb.SessionContext;

    /**
     * @author bluesky35
   */
    public class ConverterEJB implements SessionBean{
 
     private SessionContext ctx;
 
     public double DollarsTORMB(double dollars){
      return dollars * 8.3000;
     }
     public double RMBTODollars(double RMB){
      return RMB / 8.3000;
     }

     public ConverterEJB(){
     }
 
     public void ejbCreate(){
     }

     public void ejbRemove(){
     }

     public void ejbActivate(){
     }

     public void ejbPassivate(){
     }

     public void setSessionContext(SessionContext sc){
      ctx = sc;
     }
    }

    4.编译EJB源代码

    我们编写compileEJB.bat,使用批处理编译EJB源代码,将该bat放在和刚才编写的3个EJB文件的同一目录下即可,bat内容如下:

    set J2EE_HOME=<J2EE的根目录>我这里是E:/j2sdkee1.3.1
    set EEPATH=.;%J2EE_HOME%/lib/j2ee.jar
    javac -classpath %EEPATH% ConverterEJB.java ConverterHome.java Converter.java

    我们已经实现了一般EJB开发过程的前四步,即定义了远程,本地接口和Bean类,并且已经进行了编译.大家按以上步骤做好后看一下目录中的文件和结构是不是和我的相同,见下图:

    如果相同的话恭喜你,你可以进入下一步了,接下来我们使用J2EE的SDK直接发布和部署EJB组件,一般开发过程第五步中的ejb-jar.xml将会在发布时自动创建.

    三.打包和部署EJB组件

    1.打包EJB组件

    我们写好EJB并且编译好以后就可以发布组件了,EJB不能直接部署到J2EE Server上,它必须先被添加,再被部署到一个J2EE应用上,现在创建一个J2EE应用ConverterApp,并将它保存为文件ConverterApp.ear中,过程如下:

    (1).用j2ee -verbose命令,在命令行环境下启动J2EE Server,看到J2EE server startup complete这句话,表示服务器已经启动,如下图所示:

   

    (2).接下来在另一个终端窗口使用deploytool命令运行应用部署工具(Application Deployment Tool),如下图所示:

   

    启动好以后大家可以看到以下画面:

   

    (3).创建一个新的J2EE应用.在应用部署工具中选择[File]菜单,从[File]菜单中选择[New Application],单击[Brows],在文件选择中,定位要放置ConverterApp.ear的目录,输入文件名:ConverterApp.ear,单击[New Application]按钮,单击[OK],完成后如下图所示:

    (4)在[File]菜单中选择[New Enterprise Bean],显示Wizard对话框,单击[Next]按钮,在Create New JAR File in Application中选定Converter,在JAR Display Name框中输入ConverterJAR,然后单击Contents右边的[Edit...]按钮,选择Converter.class,ConverterEJB.class和ConverterHome.class并单击[Add]按钮加到Contents of Converter JAR框中,如下图所示:

    单击[OK]按钮,完成结果如下图所示:

   

    单击[Next]按钮,在下面的General对话框中的Bean Type项目中选择Session,下面选择Stateless,Enterprise Bean Class框中选择ConverterEJB,Enterprise Bean Name框中输入ConverterBEAN,在右边的Remote Home Interface框中选择ConverterHome,Remote Interface框中选择Converter,完成后的画面如下:

   

    单击[Next]按钮,然后在随后的对话框中单击[Finish]按钮完成部署.

    部署完后的主画面如下图:

   

    2.部署EJB组件

    在主画面上选择Converter结点,单击菜单栏上的[Tools]->[Deploy...]弹出发布对话框,在Object to Deploy一栏里选择我们要发布的EAR Converter,在Target Server一栏里我们选择localhost,选择Return Client Jar和Save object before deploying复选框,发布向导会为我们创建ConverterClient.jar,单击[Next]按钮,在第二个对话框中,确定ConverterBean的JNDI名是MyConverter,单击[Next]按钮,在随后的对话框中,单击[Finish]按钮.部署完毕后,在Deployment Progress对话框中,单击[OK]按钮.至此,J2EE应用部署完毕!

    EJB组件已经部署完毕,大家的目录结构应该和下面的目录结构相同:

   

    四.编写客户端应用程序进行测试

    1.编写客户端App

    编写客户端测试应用程序ConverterClient.java,代码如下:

    /**
     * @author bluesky35
     */
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.rmi.PortableRemoteObject;

    public class ConverterClient{

     public static void main(String[] args) {
      try{
       Context initial = new InitialContext();
       Object objref = initial.lookup("MyConverter");
       ConverterHome home =
       (ConverterHome)PortableRemoteObject.narrow(objref,ConverterHome.class);
       Converter currencyConverter = home.create();
       double amount = currencyConverter.DollarsTORMB(100.00);
       System.out.println(String.valueOf(amount));
       amount = currencyConverter.RMBTODollars(100.00);
       System.out.println(String.valueOf(amount));
       currencyConverter.remove();
      }
      catch(Exception e){       
      }
     }
    }

    2.编译客户端应用程序

    编写compileClient.bat批处理程序编译客户端应用程序,代码如下:

    set J2EE_HOME=E:/j2sdkee1.3.1
    set EEPATH=.;%J2EE_HOME%/lib/j2ee.jar;Converter.class;ConverterEJB.class;ConverterHome.class;
    javac -classpath %EEPATH% ConverterClient.java   

    运行compileClient.bat,在目录下会生成ConverterClient.class

    3.运行测试程序

    好了,终于到了最后最激动人心的时刻了,我们即将运行测试程序进行测试.

    编写testClient.bat批处理程序进行测试,内容如下:

    set J2EE_HOME=E:/j2sdkee1.3.1
    set EEPATH=%J2EE_HOME%/lib/j2ee.jar;E:/EjbTest/ConverterClientApp.jar;
    java -classpath %EEPATH% ConverterClient

    注意:如果你停止了Server,请别忘了在测试程序之前在命令行下使用j2ee -verbose命令启动Server,因为我们前面发布的EJB组件在Server Container里呢.

    最后在命令行下运行testClient.bat,结果如下:

   

相关文章推荐

ejb3.0学习之一:无状态会话bean开发

1.介绍:ejb3.0把bean组件分为不同的类型,主要有 a、会话bean:(主要用于业务流程的建模,如对数据的crud) b、实体bean(用于建模业务数据) c、消息驱动bean(类似于会话be...

Ejb in action(四)——购物车实例演示有状态会话Bean

前面,我们介绍了一个入门实例,其实那就是无状态回话Bean的常用情况。 上一篇文章中,我们介绍了无状态会话Bean和有状态会话Bean的相关概念。为了加深大家对它们的理解,我们一起来实现一个有状态会...

EJB3~无状态会话bean

无状态会话bean用于完成在单个方法的生命周期内的操作。无状态bean可以实现许多业务操作,但是每个方法都不能假定任何其他的方法会在它之前调用。后半句的意思是现在的你可能不是刚才的你,明天的你可也能不...

ejb3.0学习之二:有状态会话bean开发

1、说明: 有状态的会话bean与无状态的会话bean是有区别的 a.无状态会话bean中ejb组件会使他忘记过去,他不会维护方法调用其间的会话信息。 b.而有状态的就不一样,ejb容器会维护其方法调...

EJB2学习笔记——无状态会话Bean

EJB的执行过程 一、客户端通过JNDI检索Home对象的引用; 二、JNDI返回Home对象的引用; 三、请求创建一个新的EJB对象; 四、创建EJB对象; 五、返回EJB对象; 六、调...

EJB3~有状态会话bean

在会话bean综述中,描述了无状态和有状态bean的区别在于客户端和服务器之间交互形式不同。对于无状态会话bean,交互的开始和结束都在同一个方法中。有时客户端需要发出多个服务请求(需要调用多个方法)...

EJB基础一 无状态会话BEAN使用

EJB基础一 无状态会话BEAN使用 EJB是J2EE的一条标准。以往EJB被人诟病,缺点是复杂,沉重。然后spring崛起了,spring因其轻量级,开发方便而得到了迅速地推广。但是这是过去了,E...

JAVAEE7 有状态会话bean项目

  • 2015年12月18日 10:11
  • 3.24MB
  • 下载

无状态会话Bean实验指导.doc

  • 2010年06月17日 15:57
  • 661KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:EJB循序渐进,手把手创建简单的无状态会话BEAN
举报原因:
原因补充:

(最多只允许输入30个字)