`
fanjava
  • 浏览: 240091 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

JBoss3.0 下配置和部署EJB简介

阅读更多

1.JBoss简介

JBoss是一个运行EJBJ2EE应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web 操作系统(operating system for web),它体现了J2EE规范中最新的技术,并且它还在the JavaWorld Editors' Choice 2002评选中获得“最佳Java应用服务器”大奖。无论是学习还是应用,JBoss为我们提供了一个非常优秀的平台。有关JBoss的详细信息请参阅其主页http://www.jboss.org<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

刚开始使用JBoss进行EJB开发时,由于可供参考的资源不是很多,所以有一个比较困难的起步阶段。JBoss的配置和使用没有提供图形向导界面,所以开发部署EJB相对比较复杂。本文通过尽量具体的演示来对JBoss3.0下的EJB开发和部署的进行一个简单的介绍,从而使刚开始使用JBoss的用户可以很快地进入到真正的J2EE应用开发中。

由于本文主要介绍JBoss3.0中不同类型EJB的配置和部署,不对基本的EJB开发做太多的描述,所以希望读者具有J2EEEJB的经验。想要了解有关信息请查阅参考资料1

2.JBoss3.0中基本的ejb配置和部署

根据J2EE规范的要求,一个基本的ejb jar包使用的描述文件是ejb-jar.xmlweb应用的war包使用的是web.xml。企业应用的ear包使用的是application.xml。这些配置文件都是中性的和平台无关的。同时应用服务器可以使用一些其他的配置文件用于描述特定服务器的相关信息。在JBoss中这样的文件有jboss.xmljboss-web.xml等。JBoss容器中这些文件不是必须的,如果提供了那么jboss.xmlejb-jar.xml放在同一目录下,jboss-web.xmlweb.xml放在同一目录下。关于jboss.xmljboss-web.xml的规范请参考JBoss安装目录下docs/dtd/目录下的对应的DTD文件。

2.1 JBoss中关于EJB客户端的配置:

调用EJB的客户端可以是JSPServlet或客户端应用程序。如果客户端和服务器不在同一个Java VM上,那么在客户端必须提供一个jndi.properties文件告诉客户端进行有关JNDI命名服务的信息,并且把这个文件所在目录设定到环境变量classpath中。

以下是一个jndi.properties的样例:

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost:1099 (服务器地址和端口号)
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces

通过这个文件和JBoss的一些客户端类库,就可以使用JBoss提供的EJB对象服务了。

2.2 JBoss中部署EJB:

首先介绍JBoss容器中部署各类EJB对象的两种方法。下面的演示以Session Bean为例,客户端是一个本机上的web应用。这里不对演示程序进行具体介绍。

第一种方式:

把开发好的ejb jar包和web应用的war包公共放在deploy目录下。

演示1:不需要jboss.xml文件和其他任何特殊的设置。

ejb-jar.xml:

<ejb-jar>

······

<ejb-name>ejbtest</ejb-name>

······

</ejb-jar>

客户端:web应用中对web.xml不需要添加ejb信息,不需要jboss-web.xml文件。引用ejb对象的jsp文件如下:

······

InitialContext ctx = new InitialContext();

Object objref = ctx.lookup("ejbtest"); //使用<ejb-name> beanHome=(zcxejb1Home)PortableRemoteObject.narrow(objref,ejbtestHome.class);

······

演示2:使用jboss.xml文件。

在缺省情况下JBossJNDI服务将通过ejb-jar.xml<ejb-name>XXX</ejb-name>中的XXX来使用EJBhome interface。但是如果有多个ejb对象在相同的ejb jar包中,在ejb-jar.xml中通过<ejb-name>XXX</ejb-name>就可能不能很好的表示某一个ejb对象,所以一般我们希望可以提供一些附加的信息,例如采用这样的格式"[应用名]/[bean]"来引用一个EJB对象。这时JNDI服务就可能不能正确地找到你的ejb对象,我们就需要使用jboss.xml文件,通过它实现jndi 名到ejb名的重定向。这个文件必须和ejb-jar.xml一起放到META-INFO目录下。

ejb-jar.xml:

<ejb-jar>

······

<ejb-name>ejbtest</ejb-name>

······

</ejb-jar>

jboss.xml:

<jboss>

<ejb-name>ejbtest</ejb-name>

<jndi-name>example/ejbtest</jndi-name>

</jboss>

客户端:需要使用新的jndi名进行ejb定位。

······

InitialContext ctx = new InitialContext();

Object objref = ctx.lookup("example/ejbtest"); //使用<jndi-name> beanHome=(zcxejb1Home)PortableRemoteObject.narrow(objref,ejbtestHome.class);

······

第二种方式:

ejbweb应用包装成一个企业应用包。部署ear时可以简单地把通过application.xml描述ejb jar包和web应用的war包,同样在web.war中不需要提供特殊的信息就可以和第一种方式一样使用ejb对象。客户端代码也不需要进行改动。这里不再举例说明。

此外我们可以进行更进一步的部署,这时需要使用到web.xmljboss-web.xmljboss-web.xmlJBoss提供的一个针对web应用进行配置的文件。jboss-web.xmlweb.xml一起放在web应用的WEB-INF目录下。

演示1:改动web.xml文件,添加<ejb-ref>标记,不使用jboss-web.xml文件。

(注意<ejb-ref>包括内部引用和外部引用。如果是同一个单元的可以通过<ejb-link>直接进行引用,而不用提供其他信息。)

web.xml:

······

<ejb-ref>

<ejb-ref-name>ejb/ejbtest</ejb-ref-name> <!--采用sun推荐的命名方式-->

<ejb-ref-type>Session</ejb-ref-type>

<home>org.zcx.test.zcxejb1Home</home>

<remote>org.zcx.test.zcxejb1</remote>

<ejb-link>ejbtest</ejb-link> <!--必须和被应用的ejb-name匹配-->

</ejb-ref>

······

客户端:由于在web.xml中引入ejb引用描述这时ejb定位发生了变化:

······

InitialContext ctx = new InitialContext();

Object objref = ctx.lookup("java:comp/env/ ejb/ejbtest "); //使用java:comp/env命名空间 beanHome=(zcxejb1Home)PortableRemoteObject.narrow(objref,ejbtestHome.class);

······

演示2:联合使用web.xmljboss-web.xml

web.xml

······

<ejb-ref>

<ejb-ref-name>ejb/ejbtest</ejb-ref-name> <!--采用sun推荐的命名方式-->

<ejb-ref-type>Session</ejb-ref-type>

<home>org.zcx.test.zcxejb1Home</home>

<remote>org.zcx.test.zcxejb1</remote>

</ejb-ref>

······

jboss-web.xml

<ejb-ref>

<ejb-ref-name> ejb/ejbtest </ejb-ref-name>

<jndi-name> example/ejbtest </jndi-name> <!-- 这里对应ejb对象的jndi-->

</ejb-ref>

客户端:

nitialContext ctx = new InitialContext();

Object objref = ctx.lookup("java:comp/env/ ejb/ejbtest "); beanHome=(zcxejb1Home)PortableRemoteObject.narrow(objref,ejbtestHome.class);

以上的所有演示说明了ejb-jar.xmljboss.xmlweb.xmljboss-web.xml之间的基本关系和它们的使用方式。它们是部署各类ejb对象的关键文件。接下来介绍针对不同类型的ejb对象所需要的特殊配置。

3.JBoss3.0中对于CMP2.0 Entity Bean的有关配置

JBoss3.0JBossCMP引擎实现了EJB2.0 CMP2.0规范。JBoss3.0以前的版本CMP的引擎是Jaws,它通过standardjaws.xmljaws.xml进行有关的配置。在新的JBossCMP引擎中Jboss3.0通过standardjbosscmp-jdbc.xmljosscmp-jdbc.xml来配置Entity BeanJBoss3.0首先处理standardjbosscmp-jdbc.xml然后根据ejb jar中是否提供jbosscmp-jdbc.xml来做进一步处理。通过standardjbosscmp-jdbc.xmljbosscmp-jdbc.xml可以为entity bean的部署提供如下的功能有:

l 指定所使用的数据源和对应的类型映射

l 指定一些引擎关心的属性

l 指定引擎如何创建和管理数据库表的原则

l 描述finderejbSelect方法

l 指定属性和字段的类型映射

这里主要根据standardjbosscmp-jdbc.xml/jbosscmp-jdbc.xml介绍CMP2.0的配置方法。JBoss中原有的Jaws引擎的配置方法和新的JBossCMP的配置方法类似。这些文件的具体的信息可以参考JBoss安装路径下\docs\dtd中对应的DTD文件。

3.1增加新的数据源

JBoss自带的数据库是Hypersonic数据库,我们可以增加一些新的数据源。具体的步骤很简单,参照Jboss安装目录下\docs\examples\jca中的*-service.xml文件可以增加找到对应类型的数据库配置样本文件。以mysql-service.xml文件为例,它可以配置一个MySQL数据库作为Entity Bean的数据源。以下演示创建一个名为MySQLDSMySQL数据源。

图一是配置好的mysql-service.xml文件的一段代码样本,通过属性设置可以定制数据源的名称和有关连接的其他属性。注意该文件中所有name属性必须保持一致。

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><shapetype id="_x0000_t75" path=" m@4@5 l@4@11@9@11@9@5 xe" stroked="f" filled="f" o:spt="75" o:preferrelative="t" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0 "></f><f eqn="sum @0 1 0 "></f><f eqn="sum 0 0 @1 "></f><f eqn="prod @2 1 2 "></f><f eqn="prod @3 21600 pixelWidth "></f><f eqn="prod @3 21600 pixelHeight "></f><f eqn="sum @0 0 1 "></f><f eqn="prod @6 1 2 "></f><f eqn="prod @7 21600 pixelWidth "></f><f eqn="sum @8 21600 0 "></f><f eqn="prod @7 21600 pixelHeight "></f><f eqn="sum @10 21600 0 "></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 477pt; HEIGHT: 237pt" coordsize="21600,21600" type="#_x0000_t75"><imagedata src="./jboss3_ejb.files/image001.png" o:title="cmp1"><font size="2"></font></imagedata></shape>

图一 mysql-servic.xml的样本代码

在配置好这个文件后,把它部署在JBossdeploy目录下,把对应的jdbc驱动也放在lib目录下。重新启动Jboss就会加载这个新的数据源。

3.2 Entity Bean 对数据源的使用

第一种方式:

直接改动standardjbosscmp-jdbc.xml。把原有的数据源java:/DefautlDS屏蔽掉使用新的数据源java:/MySQLDS。(Java前缀是必须的。)不需在其他地方作改动。JBoss会实现新的数据源做为缺省的数据源。图二是一个配置好的文件片断。

<shape id="_x0000_i1026" style="WIDTH: 414.75pt; HEIGHT: 269.25pt" coordsize="21600,21600" type="#_x0000_t75"><imagedata src="./jboss3_ejb.files/image003.png" o:title="cmp2"><font size="2"></font></imagedata></shape>

图二 standardjbosscmp-jdbc.xml的样本代码

第二种方式:

由于有可能不同的Entity Bean使用不同的数据源,而不是都使用同样的缺省配置,所以必须为单独的Entity Bean提供定制数据源信息的支持。这时不需要改动standardjbosscmp-jdbc.xml文件,可以通过在Entity Beanjar包中META-INFO目录下添加新的部署文件jbosscmp-jdbc.xml来完成。通过这个文件可以描述特定的Entity Bean的关于数据源的配置信息。图三是一个配置好的文件片断。

<shape id="_x0000_i1027" style="WIDTH: 415.5pt; HEIGHT: 165pt" coordsize="21600,21600" type="#_x0000_t75"><imagedata src="./jboss3_ejb.files/image005.png" o:title="cmp3"><font size="2"></font></imagedata></shape>

图三 jbosscmp-jdbc.xml的样本代码

4.JBoss3.0中对于Message Driven Bean的配置

JBoss中开发MDB需要使用JMS功能。JMSSun公司开发的面向消息的中间件API。它的主要目的是创造一种统一的面向消息编程的JavaAPI,从而避免使用提供商特定的API。现在有几种不同的JMS系统可供使用。JBoss3.0中提供的是JBossMQ

4.1 JBoss3.0中配置JMS服务

JBoss3.0中与JMS服务相关的配置文件包括两个文件:jbossMQ-service.xmljbossMQ-destinations-service.xmljbossMQ-service.xml配置了jbossMQ服务中的核心对象信息。一般我们不需要处理这个配置文件。jbossMQ-destinations-service.xml用于定义具体应用所需的目的地信息。通过编辑它我们可以创建新的TopicQueue用于具体的JMS应用的目的地。在JBoss中创建应用特定的TopicQueues的步骤比较简单,参照jbossMQ-destinations-service.xml文件格式在该文件中添加自己应用程序所需的Topic名为myTestAppTopicQueue名为myTestAppQueue。如图四所示。

<shape id="_x0000_i1028" style="WIDTH: 469.5pt; HEIGHT: 360.75pt" coordsize="21600,21600" type="#_x0000_t75"><imagedata src="./jboss3_ejb.files/image007.png" o:title="jms"><font size="2"></font></imagedata></shape>

图四 jbossMQ-destinations-service.xml的样本代码

4.2 JBoss3.0中EJB使用JMS服务的配置

在开发MDB 时要在部署文件中指定所使用的JMS服务中的目的地信息。JBoss中通过ejb-jar.xmljboss.xml共同说明。在jboss.xml中通过<destination-jndi-name>标记描述所使用的目的地信息。

Ejb-jar.xml

<message-driven>

<ejb-name>HelloTopicMDB</ejb-name>

<ejb-class>org.zcx.test.HelloMDB</ejb-class>

<message-selector></message-selector>

<transaction-type>Container</transaction-type>

<message-driven-destination>

<destination-type>javax.jms.Topic</destination-type>

<subscription-durability>NonDurable</subscription-durability>

</message-driven-destination>

</message-driven>

jboss.xml

<message-driven>

<ejb-name>HelloTopicMDB</ejb-name>

<configuration-name>Standard Message Driven Bean</configuration-name>

<destination-jndi-name>topic/myAppTestTopic</destination-jndi-name>

</message-driven>

客户端:

······

Context context = new InitialContext();

// Get the connection factory

// Create the connection

// Create the session

······

// Look up the destination

topic = (Topic)context.lookup("topic/myTestAppTopic");

// Create a publisher

// Publish the message

······

5.JBoss3.0中EJB使用JavaMail服务的配置。

由于JBoss提供了JavaMail服务的实现,所以在JBoss中使用JavaMail是非常方便地。它所需要配置的是mail.service文件。这个文件非常地简单不用多介绍。按照mail.service文件的的注释就可以顺利地完成配置。

图五是使用JavaMail服务的一个sessionBean的代码片断

<shape id="_x0000_i1029" style="WIDTH: 415.5pt; HEIGHT: 290.25pt" coordsize="21600,21600" type="#_x0000_t75"><imagedata src="./jboss3_ejb.files/image009.png" o:title="mail"><font size="2"></font></imagedata></shape>

图五 使用javamail的样本代码

以上通过例子简单的介绍了JBoss3.0Session BeanEntity Bean Message Drive Bean 最基本的配置和部署方法,通过这些介绍现在已经可以在JBoss中进行基本的EJB应用的开发了。本文中对于EJB应用中比较复杂的一些配置像权限设置、资源管理和CMP2.0中的众多配置等都没有涉及到,希望大家可以在不断的实践和交流中更好地掌握JBoss的使用和配置。

分享到:
评论

相关推荐

    JBoss3.0下配置和部署EJB简介

    【JBoss3.0下配置和部署EJB简介】 JBoss是开源的Java应用服务器,尤其在处理Enterprise JavaBeans(EJB)方面表现卓越。EJB是Java EE平台中的核心组件,用于构建分布式、可扩展的企业级应用。本文将详细介绍在JBoss...

    JBoss3.0快速入门指导

    通过阅读《JBoss3.0 QuickStart.pdf》这份文档,初学者可以快速了解JBoss3.0的基本概念、安装步骤、配置方法以及如何部署和管理Java应用程序。文档通常会包含实例演示,帮助读者更好地理解和实践这些知识点。随着对...

    JBoss 3.0 Quick Start Guide

    ### JBoss 3.0 快速入门指南 #### 概述 《JBoss 3.0 快速入门指南》是一本专为希望...通过本书的学习,开发者不仅可以了解如何安装和配置 JBoss 3.0,还能深入理解如何利用 JBoss 开发和部署复杂的企业级应用程序。

    Jboss上部署EJB方法

    本文旨在通过实例简化这一过程,帮助新用户快速熟悉在JBoss 3.0中配置和部署EJB。 3. EJB配置与部署基础 - **ejb-jar.xml**:按照J2EE规范,每个EJB jar包都需要一个ejb-jar.xml文件,定义EJB的相关元数据。 - **...

    在JBoss下配置EJB

    4. **部署**:在JBoss中部署EJB 2.0应用,通常需要将ejb-jar.jar、client-ejb-jar.jar和相应的jboss.xml放入`server/default/deploy`目录下。 接下来,我们转向EJB 3.0的配置: 1. **注解驱动**:EJB 3.0引入了...

    jboss ejb3.0开发介绍

    本文将详细介绍如何使用 jBoss AS 4.2 和 MyEclipse 6.5 进行 EJB 3.0 的实体 Bean 开发。 #### 二、环境搭建 1. **安装开发工具** - **MyEclipse 6.5**: 一个基于 Eclipse 的集成开发环境,支持 Java 应用程序...

    EJB3.0+JBOSS+MyEclipse初体验(完整代码和过程)

    你将找到一个完整的示例,涵盖了上述所有步骤,包括具体的代码片段和执行过程,这对于初学者来说是一个很好的起点,可以快速理解并实践EJB 3.0在JBOSS和MyEclipse环境下的开发流程。通过这个初体验,你可以了解到...

    Jboss下开发EJB简介[借鉴].pdf

    部署EJB在JBoss中有两种主要方法,以下以Session Bean为例,假设客户端是一个本地Web应用: 1. 直接部署:将ejb jar包和war包放入deploy目录下。ejb-jar.xml中定义ejb-name,如"ejbtest"。客户端的web应用无需在web...

    ejb3.0+Weblogic+Jboss安装配置及入门例子

    WebLogic以其高可用性、可扩展性和性能而闻名,是部署EJB应用的常见选择。 **WebLogic的EJB部署** 在WebLogic中部署EJB通常涉及以下步骤: 1. 创建新的WebLogic域并配置服务器。 2. 将EJB项目的JAR文件添加到...

    Jboss 下开发EJB简介.doc

    本文将详细介绍如何在JBoss 3.0环境下配置和部署EJB,帮助初学者快速入门。 #### 二、基本的EJB配置与部署 根据J2EE规范,EJB的部署涉及到几个重要的配置文件: - `ejb-jar.xml`: 描述EJB的基本信息。 - `web.xml...

    java解析word文件的相关代码

    - **定义路径**:指定待读取的Word文件路径,例如`"E:\\POI\\word\\JBoss3.0 下配置和部署EJB简介.doc"`。 - **读取文件**: ```java public static void main(String[] args) { File file = new File("E:\\POI...

    EJB3.0开发环境配置

    ### EJB 3.0 开发环境配置详解 #### 一、引言 EJB (Enterprise JavaBeans) 是 Java 平台为企业级应用提供的一种组件模型。随着技术的发展,EJB 3.0 引入了许多改进,简化了开发过程并增强了性能。本文将详细介绍...

    JBoss下部署EJB3.0

    JBoss是一个运行EJB的J2EE应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web 操作系统(operating system for web),它体现了J2EE...

    JBoss EJB3.0实例教程

    它提供了完整的EJB容器,可以管理和部署EJB组件。开发者可以通过JBoss AS(Application Server)或者后来的WildFly来运行和调试EJB应用程序。 通过《JBoss EJB3.0实例教程》这本书,读者可以深入理解EJB3.0的各种...

    ejb3.0及JBoss配置运行动画全过程

    JBoss是基于Java的开源应用服务器,它是Red Hat公司的产品,广泛用于部署EJB应用。JBoss AS(Application Server)在EJB 3.0时代是流行的平台之一,因为它支持EJB规范,并且提供了丰富的管理和监控工具。 配置EJB ...

Global site tag (gtag.js) - Google Analytics