`
chnic
  • 浏览: 227732 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用JDK+记事本来完成一个无状态SessionBean

    博客分类:
  • Java
阅读更多

        废话不多讲,先介绍下开发环境:JDK 1.4 + Weblogic 8.1 + j2ee.jar(这个jar包能在很多IDE的J2EE Library Container找到)。无状态SessionBean应该是Enterprise JavaBean里使用最普遍的一种bean,今天就从这种最普遍使用的bean开始。

        搭好环境是第一步在这里就一笔带过,之后把j2ee.jar这个文件随便找一个目录放下,在这里我放的是C:\lib目录。对EJB稍微熟悉点的人应该知道无状态SessionBean应该实现一个Remote接口、一个Home接口和一个最终的实体类。前两个接口都是需要暴露给客户端进行调用的,真正具体的逻辑是封装在实体类当中。我们就从这两个接口开始。

       我们先实现Romte接口,我们先建立一个工程目录在这里假设是TestEJB,再按照包层次结构把相应的目录建好,之后新建一个文本文件命名为Count.java ,在其中写入一个抽象方法。

java 代码
  1. package  com.chnic;  
  2.   
  3. import  javax.ejb.EJBObject;  
  4. import  java.rmi.RemoteException;  
  5.   
  6. public   interface  Count  extends  EJBObject {  
  7.     public   abstract   int  count( int  a,  int  b)  throws  RemoteException;  
  8. }  

         
       可以看到count(int a, int b)其实是个抽象方法,这个方法的具体实现在是在继承了SessionBean的那个实体类中。客户端通过接口调用容器中的具体实现,因为是远程的RMI调用,所以可能会抛出RemoteException这个异常。完成了Romte接口之后来完成Home接口。新建文本文件并命名为CountHome.java。

 

 

java 代码
  1. package  com.chnic;  
  2.   
  3. import  javax.ejb.EJBHome;  
  4. import  javax.ejb.CreateException;  
  5. import  java.rmi.RemoteException;  
  6.   
  7. public   interface  CountHome  extends  EJBHome {  
  8.     public   abstract  Count create()  throws  RemoteException, CreateException;  
  9. }  


       在客户端中,客户通过JNDI得到的就是这个接口。然后通过Home接口的create()方法在容器里产生一个实例之后用户再通过刚刚实现的那个Remote接口来调用容器中的SessionBean。因为也是远程调用所以程序也可能会抛出RemoteException这个异常,如果创建不出实例则会抛出 CreateException这个异常。两个客户端接口都实现了。接下来就是实现最重要的SessionBean这个实体类了,文类名为CountBean.java。

java 代码
  1. package  com.chnic;  
  2.   
  3. import  java.rmi.RemoteException;  
  4. import  javax.ejb.EJBException;  
  5. import  javax.ejb.SessionBean;  
  6. import  javax.ejb.SessionContext;  
  7.   
  8. public   class  CountBean  implements  SessionBean {  
  9.     public   void  ejbCreate(){ 
  10.     }  
  11.       
  12.     public   void  ejbActivate()  throws  EJBException, RemoteException {  
  13.     }  
  14.   
  15.     public   void  ejbPassivate()  throws  EJBException, RemoteException {  
  16.     }  
  17.   
  18.     public   void  ejbRemove()  throws  EJBException, RemoteException {  
  19.     }  
  20.   
  21.     public   void  setSessionContext(SessionContext arg0)  throws  EJBException,  
  22.             RemoteException {  
  23.     }  
  24.       
  25.     public   int  count( int  a,  int  b){  
  26.         return  a+b;  
  27.     }  
  28. }  

         这个 CountBean 的实体类实现了 SessionBean这个接口, ejbCreate()这个方法可以看成是这个SessionBean的构造函数,在这个SessionBean被产生实例的时候就会执行这个方法。而最后的 count( int  a,  int  b)这个方法就是Remote接口方法的具体实现了。下来我们来写配置文件在与com文件夹平级的目录建一个META-INF文件夹,新建文本文件保存为ejb-jar.xml。

xml 代码
  1. <? xml   version = "1.0"   encoding = "UTF-8" ?>   
  2. <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
  3.      "http://java.sun.com/dtd/ejb-jar_2_0.dtd">   
  4. < ejb-jar >   
  5.     < enterprise-beans >   
  6.         < session >   
  7.             < display-name > My Count Stateless SessionBean </ display-name >   
  8.             < ejb-name > mycount </ ejb-name >   
  9.   
  10.             < home > com.chnic.CountHome </ home >   
  11.             < remote > com.chnic.Count </ remote >   
  12.             < ejb-class > com.chnic.CountBean </ ejb-class >   
  13.   
  14.             < session-type > Stateless </ session-type >   
  15.             < transaction-type > Container </ transaction-type >        
  16.         </ session >   
  17.     </ enterprise-beans >   
  18. </ ejb-jar >   

 

         从节点的名字上不难发现一些配置的含义,这个ejb的名字是mycount。下面三个描述了Home、Remote、和实体Class的实现类。session-type描述的是这个Bean是有状态Bean还是无状态SessionBean。至于两种Bean的区别在这里就不啰唆了,以后有空解释吧。transaction-type则描述的是 transaction的管理类型,有Container和Bean两种方式。搞定了 ejb-jar.xml这个xml之后我们来写另外的一个xml命名为 weblogic-ejb-jar.xml

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'   
  3.             'http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd'>   
  4. < weblogic-ejb-jar >   
  5.     < weblogic-enterprise-bean >   
  6.         < ejb-name >   
  7.             mycount    
  8.         </ ejb-name >   
  9.         < jndi-name > count </ jndi-name >   
  10.     </ weblogic-enterprise-bean >   
  11. </ weblogic-ejb-jar >   

       这个文件就不多解释,从节点名字上就能看的很清楚,一个是ejb的名字一个是jndi的路径。其实这里还有很多可选的配置选项,但因为这篇博文的重点的是如何实现一个EJB。所以这些深入的话题以后再介绍。
       OK,所有代码编写工作都已经完成,下面就是打包发布了。CMD打开控制台进入包含.java文件的那个目录,输入命令

  1. javac -extdirs c:\lib *.java  

      c:\lib就是存放j2ee.jar这个文件的目录,因为我们刚刚编写的一些API是属于这个jar包的,所以要把这个jar包放在classpath下。至于-extdirs的含义可以去看一下虚拟机类加载原理的相关信息。编译完成我们把.java文件剪切到别处因为接下来打jar包不需要这些文件。cmd控制台进入工程目录(TestEJB)输入命令

  1. jar cvf Count.jar com/chnic META-INF/ *. class   

       这时在工程目录就会生成Count.jar这个文件。我们不用理会,接着在控制台输入命令
       java -Djava.ext.dirs=C:\bea\weblogic81\server\lib;C:\bea\jdk142_05\lib weblogic.ejbc Count.jar

       因为我的weblogic安装在C盘根目录,具体路径根据实际情况而定。编译完之后就可以发现原来的Count,jar文件变胖了,用winrar打开之后发现增加了不少新的文件。做到这一步就可以说一个EJB已经被完成了,接下来就是发布 。weblogic发布很简单进入后台页面upload这个jar文件接下来一路下一步就是。

       发布成功就开始测试我们这个bean,新建一个Test.java测试文件。

java 代码
  1. package  com.chnic;  
  2.   
  3. import  java.util.Hashtable;  
  4. import  javax.naming.Context;  
  5. import  javax.naming.InitialContext;  
  6. import  javax.rmi.PortableRemoteObject;  
  7.   
  8. public   class  Test {  
  9.   
  10.     public   static   void  main(String[] args){  
  11.         Hashtable ht = new  Hashtable();  
  12.         ht.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory" );  
  13.         ht.put(Context.PROVIDER_URL, "t3://localhost:7001/" );  
  14.         try  {  
  15.             Context ctx = new  InitialContext(ht);  
  16.             Object o = ctx.lookup("count" );  
  17.             CountHome home = (CountHome)PortableRemoteObject.narrow(o, CountHome.class );  
  18.             Count ac = home.create();  
  19.             System.out.println(ac.count(2 2 ));  
  20.               
  21.         }catch (Exception e) {  
  22.             e.printStackTrace();  
  23.         }  
  24.     }  
  25. }  

         编译之后,控制台进入相应目录输入执行命令

 

  1. java -Djava.ext.dirs=c:\lib;C:\bea\weblogic81\server\lib Test  

       
        执行之后发现控制台返回一个4,说明测试成功。就此我们完成了全部工作。

 

分享到:
评论

相关推荐

    jdk+tomcat+nginx+redis+session共享从头搭建一套完整服务

    由于session在Web应用中用于保持用户状态,因此在分布式环境中,共享session成为一个挑战。Redis可以通过其持久化和高速读写能力来解决这个问题。配置Redis作为session存储,需要在Tomcat的web.xml中添加相关配置,...

    JDK + Tomcat + MySQL环境集成工具

    在这个集成工具中,"JTM-2.5.7z"可能是一个包含预配置的JDK、Tomcat和MySQL环境的压缩文件,而"防虫.txt"可能是提供的一份说明文档或注意事项,用于指导用户如何正确使用和防止常见问题。 总的来说,"JDK + Tomcat ...

    Android (jdk+sdk+adt)卷1 (共4卷)

    Android 卷一(jdk+sdk+adt)--由于文件太大,只好分卷压缩。 无需安装(前提已经安装Java)直接打开 Eclipse 运行即可 注:Java安装的版本必须是32位

    Linux+JDK+Tomcat+Oracle

    本文将基于“Linux+JDK+Tomcat+Oracle”这一主题,深入解析如何在Linux操作系统下安装配置JDK(Java Development Kit)、Apache Tomcat以及Oracle数据库,形成一个完整的Java Web应用程序运行平台。 ### Linux系统...

    在用Eclipse+JDK+Tomact5.5开发遇到的问题

    在IT开发领域,尤其是Java Web开发中,使用Eclipse、JDK与Tomcat进行集成开发是一种常见的技术组合。然而,在实际操作过程中,开发者可能会遇到一系列的技术难题,这些难题往往涉及环境配置、依赖管理以及插件集成等...

    javaJDK+eclipse开发环境搭建指导

    3. 第三个对话框涉及JavaFX 2.1 SDK的安装,这是一个可选组件,如果你不打算使用JavaFX,可以跳过或按照提示完成注册。 安装完成后,需要配置环境变量以使系统能够识别Java命令。具体步骤如下: 1. 右键点击...

    CentOS系统安装JDK+Crowd+JIRA+Confluence教程1

    一、JDK 安装 JDK(Java Development Kit)是 Java 语言的开发工具包,用于编译、调试和运行 Java 程序。在 CentOS 系统中安装 JDK 需要经过以下步骤: 1. 查询 JDK 版本命令:使用 `java -version` 命令查询当前...

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

    【无状态会话Bean实验指导】的文档主要涵盖了如何开发和测试无状态Session Bean的步骤,这是企业级JavaBeans(EJB)技术的一部分,属于中间件领域的知识。EJB是Java平台上的一个标准,用于构建可扩展、可靠的分布式...

    JDK1.8+API+中文文档+高清完整版+CHM.rar JDK1.8+API+中文文档+高清完整版+CHM.rar

    JDK1.8+API+中文文档+高清完整版+CHM.rar JDK1.8+API+中文文档+高清完整版+CHM.rar JDK1.8+API+中文文档+高清完整版+CHM.rar JDK1.8+API+中文文档+高清完整版+CHM.rar JDK1.8+API+中文文档+高清完整版+CHM.rar JDK...

    jdk8+201+321

    jdk8+201+321,,,,jdk8+201+321,,,,jdk8+201+321,,,,jdk8+201+321,,,,jdk8+201+321,,,,jdk8+201+321,,,,jdk8+201+321,,,,jdk8+201+321,,,,jdk8+201+321,,,,jdk8+201+321,,,,jdk8+201+321,,,,jdk8+201+321,,,,jdk8+201...

    Myeclipse7.0JDK+jdk1.6.0_05+mysql+myeclipse 必备单词jsp的session介绍

    您买不了吃亏,买不了上当,绝对实惠资源. Myeclipse7.0JDK + jdk1.6.0_05 + mysql + myeclipse 必背单词 + jsp的session介绍 + ActionScript 3.0语言和组件参考 + Java专业术语标准化规范

    Java+JDK+7学习笔记_林信良编著.pdf

    《Java JDK7学习笔记》是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习java时遇到的概念、操作、应用或认证考试等问题及解决方案。《Java JDK7学习笔记》针对java se 7新功能全面改版,无论是章节架构...

    tomcat7+jdk1.7+redis session共享;tomcat8+jdk1.8+redis session共享 jar包+配置文件

    在构建分布式系统时,session共享是一个关键问题,特别是在使用多个应用服务器(如Tomcat)的集群环境中。这里的主题是利用Redis作为中间缓存来实现Tomcat集群中的session共享,这可以确保用户在集群中的任意一台...

    JDK环境配置+apache-maven-3.6.3+1.8JDK+apache-tomcat-9.0.39

    对于很多初学者来说,我想可能很多人都会遇到JDK环境变量的配置问题。明明就是按照度娘上的教程去一步步配置的,但还是会有很多的人出现配置不成功的问题。所以今天在这里分享一下windows 10 系统下配置JDK的教程,...

    JDK+Eclipse+tomcat+maven(一键安装)

    网上各种安装方法太烦,这次电脑连续被重装,不得不装这些工具N次,在此总结下,备用,省的下次再百度(好多安装步骤用不了。。。) 实践安装成功4次啦。。。。。。 文件目录如下: 资源包 1.JDK安装步骤 2....

    JDK+JRE+Eclipse+环境配置脚本一次完成

    一次下载即可完成java开发环境,包括1.8版本的JDK+JRE,java环境配置脚本(附使用说明),Eclipse在线安装程序和离线压缩包,让你学习java不再被开发环境劝退。 PS:请认真阅读使用说明,资源为百度云链接,在资源...

    linux下tomcat+JDK+redhat配置文档+安装软件

    linux下tomcat+JDK+redhat配置文档+安装软件linux下tomcat+JDK+redhat配置文档+安装软件linux下tomcat+JDK+redhat配置文档+安装软件linux下tomcat+JDK+redhat配置文档+安装软件linux下tomcat+JDK+redhat配置文档+...

    jdk+tomcat+Eclipse(JAVA环境开发配置)

    总的来说,配置一个完整的Java Web开发环境可能需要一些时间,但是一旦设置好,你将拥有一个高效且稳定的开发平台。记得在配置过程中耐心细致,遇到问题不要怕,多查阅文档或在线求助,相信你很快就能熟练掌握。

    CentOS系统安装JDK+Crowd+JIRA+Confluence教程

    JDK+Crowd+JIRA+Confluence安装教程 JDK+Crowd+JIRA+Confluence安装教程

Global site tag (gtag.js) - Google Analytics