第一个EJB3.0范例

转载 2006年06月07日 17:46:00

 

第一个EJB3.0范例
20047月,EJB专家委员会公布了新的EJB3.0规范草本。2004107号,JBoss发布了支持EJB3.0的第一个预览版本jboss-EJB-3.0_Preview_12004115号,JBoss发布了支持EJB3.0的第二个预览版本jboss-EJB-3.0_Preview_2
我们来完成第一个EJB3.0程序。
搭配环境
实现EJB3.0的环境要求使用JBossjboss-4.0.1RC1(已经有了RC2)和JDK1.5及更高版本。jboss-4.0.1RC1可以在http://www.jboss.org/上下载,JDK1.5可以在java.sun.com得到。我们在windows环境下使用,所以下载相应windows版本。
首先安装JDK。下载jdk-1_5_0_01-windows-i586-p.exe,安装至相应目录,我安装至D:/Program Files/Java/jdk1.5.0_01。然后配置环境。在我的电脑->属性->高级->环境变量->系统变量中,设置JAVA_HOMED:/Program Files/Java/jdk1.5.0_01Path中将D:/Program Files/Java/jdk1.5.0_01/bin;写在最前。
下载jboss-4.0.1RC1.zip,直接解压缩到D:/jboss4下。相同方法设置JBOSS_HOMED:/jboss4
由于用到ant,所以还需要取得Apache Ant相关执行程序。在Apache服务器,WeblogicJbuilder等安装目录下可以找到,最好版本较高。我使用JBuilder2005下的,路径为D:/Borland/JBuilder2005/thirdparty/ant/bin;仍然设置在系统变量的Path中,写在JDK路径之后。(注意:如果ant版本较低将编译时报错,我的为Apache Ant version 1.6.2 compiled on July 16 2004)。
       还要用到jboss-EJB-3.0_Preview_2包,可以在http://www.jboss.org/得到。解压后包括docslib两个文件夹和RELEASE_NOTES.txtINSTALL.html两个说明文件。Docs文件夹中有主页文件index.html,包括了EJB3.0的规范草本ejb-3_0-edr-spec.pdf,指南文件夹tutorial(包括范例说明文件和源文件),配置说明文件夹referenceHibernate3的文件夹。Lib文件夹是部署EJB3.0环境所需要的ejb3-interceptors-aop.xmlejb3.deployer
       运行简单的EJB3.0范例,我们只需要将ejb3-interceptors-aop.xmlejb3.deployer文件夹拷贝到D:/jboss4/server/all/deploy下即可。
    我们将范例部署在all下,所以运行JBoss时我们使用
    Run –c all
    启动JBoss后我们就完成了环境的配置。
编写程序
    Docs文件夹下提供了许多EJB3.0各个方面的范例。我们以无状态bean为例运行范例。
    无状态bean范例在stateless文件夹下。包括了存放源文件的src和运行配置文件build.xml,JNDI配置文件jndi.properties和说明文件stateless.html。
    源文件包括Calculator.javaCalculatorBean.javaCalculatorLocal.javaCalculatorRemote.javaClient.java
    在EJB3.0环境下编写无状态bean时很容易的。所有的bean类型就是homeless所以只需要创建一个bean类和实现至少一个接口。
在CalculatorBean.java我们声明一个无状态bean只需要声明为 @Stateless,EJB容器就会部署这个类为无状态bean。
import javax.ejb.Stateless;
@Stateless
public class CalculatorBean implements CalculatorRemote, CalculatorLocal
{
   public int add(int x, int y)
   {
      return x + y;
   }
   public int subtract(int x, int y)
   {
      return x - y;
   }
}
这个CalculatorBean实现了两个接口。一个是remote,一个是local。现在在EJB3.0中你可以仅仅实现一个remote,一个local或两个都实现。
 
在CalculatorRemote.java定义Calculator bean 的remote接口你仅仅需要标识其为@Remote。
import javax.ejb.Remote;
 
@Remote
public interface CalculatorRemote extends Calculator
{
}
同样在CalculatorLocal.java你也仅仅需要标识一个@Local就可以定义Calculator bean 的local接口
import javax.ejb.Local;
 
@Local
public interface CalculatorLocal extends Calculator
{
}
Calculator bean需要两个JNDI的绑定分别对应@Remote 和@Local接口。默认的,JBoss使用接口的全名作为JNDI的名字。这使得你可以容易的调用CalculatorRemote.class.getName()来查找一个JNDI名字对应的引用。
在Client.java中你可以发现是使用remote接口的全名来查找无状态bean,也可以注意到并不存在HOME接口。
import org.jboss.tutorial.stateless.bean.Calculator;
import org.jboss.tutorial.stateless.bean.CalculatorRemote;
import javax.naming.InitialContext;
 
public class Client
{
   public static void main(String[] args) throws Exception
   {
      InitialContext ctx = new InitialContext();
      Calculator calculator = (Calculator) ctx.lookup(CalculatorRemote.class.getName());
 
      System.out.println("1 + 1 = " + calculator.add(1, 1));
      System.out.println("1 - 1 = " + calculator.subtract(1, 1));
   }
}
现在你可以直接执行这个无状态bean了。
运行结果
   这个实例使用ant机制运行,所以需要配置build.xml。不同的build.xml中需要设置不同的run参数中的classname:
   <target name="run" depends="ejbjar">
      <java classname="org.jboss.tutorial.stateless.client.Client" fork="yes" dir=".">
         <classpath refid="classpath"/>
      </java>
   </target>
JNDI的配置相同jndi.properties:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost
 
    打开命令运行窗口,到范例目录下,如
D:/jboss-EJB-3.0_Preview_2/docs/tutorial/stateless,键入命令ant编译文件。编译成功会显示:BUILD SUCCESSFUL。
成功编译后会目录下会多一个build目录,为编译后的class文件和tutorial.ejb3的文件。
然后运行 ant run,执行程序,我们可以看到:
Buildfile: build.xml
prepare:
compile:
ejbjar:
run:
     [java] 2005-01-12 15:07:25,296 INFO org.jboss.remoting.InvokerRegistry[main
] - Failed to load soap remoting transport: org/apache/axis/AxisFault
     [java] 1 + 1 = 2
     [java] 1 - 1 = 0
BUILD SUCCESSFUL
Total time: 3 seconds
 
其中的信息
[java] 2005-01-12 15:07:25,296 INFO org.jboss.remoting.InvokerRegistry[main
] - Failed to load soap remoting transport: org/apache/axis/AxisFault
是JBoss的一个bug,我们可以不去关心。他们会在下一版本改进。
 
至此,我完成了一个EJB3.0的范例。我们可以发现EJB3.0带给我们的惊喜。我们不必再去配置大量繁琐的部署描述和复杂的接口。相信更多的EJB3.0的惊喜在等待着我们去发掘

数据库模型设计,第一范式、第二范式、第三范式简单例子理解

有几年经验了,也经历了不少项目,接触了各种数据模型,可是数据库模型设计范式只是知道有这个东西,具体范式的要求是什么呢?你是不是还很模糊?赶紧来普及下吧,第一范式、第二范式、第三范式简单例子理解。...
  • xu252659774
  • xu252659774
  • 2014年04月04日 14:21
  • 4709

第一范式、第二范式及第三范式的定义与举例

第一范式 存在非主属性对码的部分依赖关系 R(A,B,C) AB是码 C是非主属性 B-->C B决定C C部分依赖于B 第一范式 定义:如果关系R 中所有属性的值域都是单纯域,那么关系模式R是...
  • sunzhenhua0608
  • sunzhenhua0608
  • 2013年11月20日 20:59
  • 12352

第一范式、第二范式、第三范式

第一范式 如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF(即R符合第一范式)。 第二范式 若关系模式R∈1NF(即R符合第一范式),并且每一个非主属性都完全依赖于R的...
  • u013011841
  • u013011841
  • 2014年09月03日 10:29
  • 2170

(1)EJB3.0 简介以及开发第一个无状态的会话bean 以及 客户端【关于JNDI】

(1)关于jboss的下载,这个可以再网上自己搜索。 (2)当下载完成后,就可以直接解压,解压完成后,就相当于已经安装好了 jboss服务器。 (3)为jboss配置环境变量: (4)启动j...
  • itm_hadf
  • itm_hadf
  • 2012年06月18日 22:35
  • 1908

EJB3.0学习笔记---第一个EJB程序:

第一个EJB程序: 开发服务端程序: 1.新建一个EJB project:EJBTest_01 2.在src下建包:com.credream.ejb 3.写接口:FirstEjb.java ...
  • lidew521
  • lidew521
  • 2013年01月04日 00:07
  • 873

初识EJB3.0的答疑总结(一)

第一:什么是EJB?      EJB是sun的服务器端组件模型。EJB是用于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的可重用构件体系结构,使用EJB结构编写的应用程序具有可...
  • llhhyy1989
  • llhhyy1989
  • 2013年04月09日 20:16
  • 1926

一个基于JBoss5.1+EJB3.0 登陆应用

花了几天的时间研究了一下EJB的使用,一直以来都主要是在写终端中的程序,对Java框架的相关的开发很不熟悉,中间遇到了不少麻烦,还好总算都解决了。写篇日志记录一下。 经验总结 为什么选择JBoss5....
  • u012797220
  • u012797220
  • 2015年06月26日 17:18
  • 911

EJB3.0消息驱动Bean

一、工程环境 Myeclipse6.5.1 GA, jboss-5.1.0.GA 二、消息驱动Bean(MyMDBBean.java) import javax.ejb.Activation...
  • shanghui815
  • shanghui815
  • 2012年03月26日 15:22
  • 898

EJB3.0开发环境的搭建

原文地址:http://blog.csdn.net/xyls_2009/article/details/4818823 EJB Container的介绍 SUN公司正式推出了EJB的规范之...
  • littlebeat123
  • littlebeat123
  • 2015年04月24日 15:25
  • 409

EJB3.0读书笔记 之 会话Bean介绍(一)

1 生命周期:从客户视图看待,Bean实例开始于客户获得其引用时,而终止于客户会话的中介。通常,客户会话(Client Session)的持续期决定了使用中的会话Bean的存活期。会话Bean仅仅是内...
  • greenqingqingws
  • greenqingqingws
  • 2012年03月31日 16:59
  • 467
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第一个EJB3.0范例
举报原因:
原因补充:

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