| |
技术文档>>JAVA>>新手入门>>基础入门>查看文档 |
|
| |
在jboss下开发、部署ejb |
|
| |
文章作者:未知 文章来源:水木森林 |
|
| |
查看:89次 录入:管理员--2007-11-17 |
|
| |
jboss是一个开放源码的ejb服务器,它与其它服务器整合后可以提供一个完整的j2ee平台。本文介绍如何在linux环境下安装和配置jboss,以及如何在jboss平台上实现ejb的开发和部署。 作为j2ee架构中最重要的构件,ejb是实现服务器端分布式计算的核心。ebj服务器是ejb的容器,它控制着ejb的运行,并为其提供事务处理、数据库访问、安全控制等一系列系统级的服务。 ejb服务器是j2ee应用服务器的一个重要组成部分。sun公司的j2ee sdk、ibm公司的websphere,以及bea公司的weblogic等j2ee实现都内嵌了ejb服务器。虽然jboss目前还不是一个完整的j2ee应用服务器,但它却是一个完整的ejb服务器,在与tomcat、jetty等web服务器整合后,能够提供一个完整的j2ee平台。 jboss最大的优点在于它是源代码开放的自由软件,并完全遵循j2ee规范。由于jboss强大的功能和优异的性能,以及与linux等gnu项目的结合,目前已经成为j2ee服务器端企业级应用的一股强大力量。 安装jboss jboss的安装和配置相对比较简单。首先到http://www.jboss.org上下载jboss软件包。目前jboss的最高版本为3.0,建议下载相对稳定的jboss2.4.4和tomcat3.2.3集成的二进制软件包,这样就避免了单个软件包下载后jboss和tomcat之间的配置问题。 下载的软件包解压缩到/usr目录后,将生成/usr/jboss-2.4.4_tomcat-3.2.3这目录。为方便今后的使用,把该目录更名为/usr/jb_tom。在/usr/jb_tom目录下可以找到/usr/jb_tom/jboss和/usr/jb_tom/tomcat两个子目录,它们分别为jboss和tomcat的根目录。 在正式启动jboss之前,应该先安装好jdk(建议安装jdk 1.3以上的版本),并将环境变量classpath设置好。位于/usr/jb_tom/jboss/bin目录下的run_withtomcat.sh文件是jboss和tomcat的启动脚本,按照jboss和tomcat的默认配置,运行该脚本后将分别在8080和8083端口启动jboss和tomcat的http服务。如果一切正常,此时在浏览器中输入http://localhost:8080将出现tomcat的首页,而输入http://localhost:8080则出现无错误的空白页面。 创建ejb 下面以一个简单的无状态会话bean为例,讲述如何为jboss平台编写ejb。按照ejb规范,一个ejb中至少应该包含如下三个类的实现: ◆远程接口 远程接口暴露了整个ejb对外界的接口,在本例中远程接口封装在greet.greet类中。 ◆本地接口 本地接口描述了创建、管理和销毁ejb时的行为,在本例中本地接口封装在greet.greethome类中。 ◆bean类 bean类实现了远程接口中定义的所有方法,在本例中bean类封装在greet.greatbean类中。 ejb在发布时是以一个jar包的形式提供的。ejb服务器要求该jar包中必须包含所有的类文件和相应的部署文件,并且要按照ejb开发时的目录结构进行组织。在我们的例子中,所有的类文件都位于greet目录下,部署文件则位于meta-inf目录下,相应的目录结构为: greet +-- greet.java +-- greethome.java +-- greetbean.java meta-inf +-- ejb-jar.xml +-- jboss.xml 1.定义远程接口 ejb向外界暴露的接口都在远程接口中进行定义,本例中的ejb只向外界提供了一个接口为calculatemagic,相应的源文件为greet.java,代码如下: package greet; import javax.ejb.ejbobject; import java.rmi.remoteexception; /** * 这个接口为‘greet’定义了远程接口 public interface greet extends ejbobject { public double calculatemagic(double seed) throws remoteexception; } 2.定义本地接口 ejb的本地接口对创建、管理和销毁ejb的行为进行了描述,本地接口至少应该提供create()方法,以便对ejb创建时的行为进行相应的描述。例子中本地接口对应的源文件为greethome.java,代码如下: package greet; import java.io.serializable; import java.rmi.remoteexception; import javax.ejb.createexception; import javax.ejb.ejbhome; public interface greethome extends ejbhome { greet create() throws remoteexception, createexception; } 3. 实现bean类 ejb真正完成的工作是在bean类中实现的,bean类必须为远程接口中定义的所有方法提供相应的实现。本例中的bean类对应的源文件为greetbean.java: package greet; import java.rmi.remoteexception; import javax.ejb.sessionbean; import javax.ejb.sessioncontext; public class greetbean implements sessionbean { public double calculatemagic(double seed) { system.out.println ("someone called `calculatemagic!'"); return seed * math.random(); } public greetbean() {} public void ejbcreate() { system.out.println("create greet ejb."); } public void ejbremove() { system.out.println("remove greet ejb."); } public void ejbactivate() { system.out.println("activate greet ejb"); } public void ejbpassivate() { system.out.println("passivate greet ejb"); } /** * set context for `greet' ejb */ public void setsessioncontext(sessioncontext sc) { system.out.println("set context for greet ejb"); } } 在给出ejb的接口定义并提供了bean类的具体实现后,用下面的命令对这些.java文件进行编译,生成相应的.class文件: javac *.java -classpath /usr/jb_tom/jboss/lib/ext/jboss-j2ee.jar:. 部署描述符 根据ejb规范,要想将ejb成功地部署到ejb服务器上,必须为ejb服务器提供相应的部署描述符。部署描述符对所要部署的ejb进行了说明,包括该ejb的远程描述符、本地描述符和bean类等信息。由于ejb服务器只有在获得这些基本信息后才能正确完成ejb的部署,因此编写ejb描述符是开发ejb时必不可少的一个环节。 对于不同的ejb服务器来说,部署同一ejb时所需的部署描述符可能并不相同。在jboss平台上,任何将要被部署的ejb都必须提供ejb-jar.xml和jboss.xml两个文件,这两个文件均位于jar包中的meta-inf目录下,用于对将要部署的ejb进行简要的说明。 ejb-jar.xml ejb-jar.xml是ejb规范定义的标准部署描述符,在任何ejb服务器上部署ejb时都需要用到该部署描述符。本例中用到的ejb-jar.xml代码如下所示: jboss test application test greetejb greet.greethome greet.greet greet.greetbean stateless bean jboss.xml 虽然ejb-jar.xml对所有的ejb服务器都是通用的,但它并没有为ejb服务器提供将要被部署的ejb的全部信息。为了能够对ejb的部署进行更灵活的控制,大部分ejb服务器都要求ejb开发者同时提供另外一个文件来对将要部署的ejb进行描述,在jboss中该文件为jboss.xml,它也位于jar包中的meta-inf目录中。jboss.xml中可以对ejb对应的jndi名字以及相应的持久性进行说明,在本例中用到的jboss.xml如下所示: greetejb greetingejb false 部署ejb 开发ejb的最后一步是将其中所有的类文件和相应的部署描述符压缩成jar包,然后部署到ejb服务器上。在本例中,jar包的生成可以通过下面这条命令来实现: jar cf greetejb.jar greet/*.class meta-inf/*.xml 该命令将greet目录下的.class文件和meta-inf目录下的.xml文件压缩成greetejb.jar文件。如果想知道生成的jar包是否正确地包含了所有的文件,可以用命令: jar cvf greetejb.jar 来查看greetejb.jar中包含的文件。如果得到如下的类似信息,则说明所需的文件都已经被正确地包含在该压缩包中了,信息如下: 0 sun may 24 15:32:10 cst 2002 meta-inf/ 68 sun may 24 15:32:10 cst 2002 meta-inf/manifest.mf 1007 sun may 24 14:35:46 cst 2002 greet/greetbean.class 209 sun may 24 14:35:46 cst 2002 greet/greet.class 251 sun may 24 14:35:46 cst 2002 greet/greethome.class 493 sun may 24 08:40:00 cst 2002 meta-inf/ejb-jar.xml 303 sun may 24 08:43:22 cst 2002 meta-inf/jboss.xml 生成的jar包在jboss上的部署相当简单,只需要将该文件复制到jboss的deploy目录下
|
|
|
|
相关文档
|