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

STM32 RT-Thread 系统分析(1)- 启动文件 RT-Thread STM32 系统分析(1)- 启动文件前言基本信息前言说明三级目录 前言 基本信息 名称 描述说明 RT-Thread Studio 软件版本 版本: 1.1.3 RT-Thread 系统版本 4.0.2 STM32CubeIDE 软件版本 1.4.0 STM32芯片型号 STM32F013VG 前言说明 使用了STM32CubeIDE 和 RT-Thread Studio 建立了相同型号芯片的工程,对比其中启动文件内容差异如下: 左侧是RT-Threa 阅读详情

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

       刚开始使用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属性必须保持一致。

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

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

3.2 Entity Bean 对数据源的使用

第一种方式:

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

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

第二种方式:

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

图三 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。如图四所示。

图四  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的代码片断

图五  使用javamail的样本代码

 

 

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

 

手把手教你用运放和基准源,把±10V信号变成ADC能吃的0-4V(附完整计算过程) 本文详细介绍了如何利用OP07运放和REF5040基准源设计工业级信号调理电路,将±10V传感器信号转换为0-4V ADC可接受范围。通过七步流程,包括需求分析、元器件选型、电路设计、理论计算、PCB布局、实测验证与性能优化,帮助工程师解决信号不匹配问题,提升系统精度与稳定性。 阅读详情

相关推荐

【Python&RS】哨兵2号(Sentinel2)轨道条带说明+图幅统计(表格+矢量)

今天给大家带来哨兵2号的图幅编号介绍以及全国省、市所需图幅数的统计。网上教程极少,而且结果也不公开。因为每次下载的时候都不知道需要几幅,所以研究后给大家分享一下。

Remote Sensing迷途小书童 1625

JMS,EJBJBOSS及其它

看资料也有一段日子了,大约也或多或少对JMSEJBJBOSS下的应用有了些了解,现记下来,以作资料存档之用。XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX JBoss作为一个运行EJB的J2EE应用服务器,现在已经发展成基于J2EE的一个web操作系统了。虽然它是一个很优秀的平台,但配置使用并没有图形界面,需要手动对配置文件进行调整,以实现合适的配置。 JBOSS里还集成了To...

一草一木一湖水 一山一石一掬沙 266

机器学习的低代码与无代码平台:便捷入门之路

机器学习领域正涌现出大量低代码和无代码平台,使非技术人员也能轻松应用AI技术。低代码平台(如PyCaret、H2O AutoML)需少量编程但灵活性强,而无代码工具(如Google Cloud AutoML、Teachable Machine)则完全无需编程基础。这些平台覆盖图像识别、文本处理、业务预测等多种场景,适合快速部署简单项目。但专业人士仍需注意,这些工具无法替代复杂场景下的定制化开发。随着技术进步,低门槛AI工具正在改变各行业的创新方式。

2501_90323865的博客 132

jboss使用ejb3部署MDB保存,JNDI=null

ejb项目的META-INF建一个/hornetq-jms.xml,文件内容加入你要部署的MDB即可。 如:                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"                xsi:schemaLocation="urn:hornetq /schema/hornetq-jms.xsd

trifywang的专栏 549

Eclipse jboss搭建EJB项目

Eclipse JBoss 创建EJB项目并启动和测试

csdn122325735的专栏 2400

JBoss3.0配置和部署EJB简介

1.JBoss简介 JBoss是一个运行EJB的J2EE应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web 操作系统(operating system for web),它体现了J2EE规范中最新的技术,并且它还在the JavaWorld Editors Choice 2002评选中获得“最佳Java

!Java 3741

jboss hornetq jms 用户文档

HornetQ 2.1用户手册 Putting the buzz in messaging Table of Contents 1. 法律声明 2. 前言 3. 项目信息 3.1. 软件下载 3.2. 其它相关信息 4. 消息的相关概念 4.1. 消息相关的概念 4.2. 消息的种类 4.2.1. 消息队列模式 4.2.2. 消息

风起!破浪! 6292

Jboss配置javamail的问题。

1.今天在jboss下面发送电子邮件的时候,抛出了如下异常: Java代码 [JmsServerSession] Unexpected error delivering message org.jboss.mq.SpyMapMessage {Header { jmsDestination: TOPIC.EmailServ...

weixin_34211761的博客 435

php cdi_CDI和EJB:在事务成功时发送异步邮件

php cdi 再次问好! :) 这次,我选择了一项常见任务,我认为大多数情况下都以错误的方式完成:发送电子邮件。 并非所有人都不知道电子邮件API的工作方式,例如JavaMail或Apache的commons-email 。 我通常看到的一个问题是,它们低估了使发送邮件例程异步的需求,并且该例程也应该仅在基础事务成功提交(大多数情况下)时运行。 想一想用户在线购物的常见用例。 完成后...

最佳 Java 编程 255

CDI和EJB:在事务成功时发送异步邮件

再一次问好! :) 这次,我选择了一项常见任务,我认为大多数情况下都以错误的方式完成:发送电子邮件。 并非所有人都不知道电子邮件API的工作方式,例如JavaMail或Apache的commons-email 。 我通常看到的一个问题是,它们低估了使发送邮件例程异步的需求,并且它也应该仅在基础事务成功提交(大多数情况下)时运行。 想一想用户在线购物的常见用例。 完成后,他可能想要接收...

最佳 Java 编程 402

在glassfish中部署使用Inbound JCA 1.5 (by quqi99)

在glassfish中部署使用Inbound JCA 1.5 (by quqi99)   作者:张华 发表于:2009-10-19版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明。http://blog.csdn.net/quqi99 1 MDBejb-jar.xml文件为:       

技术并艺术着 2282

深入浅出java高级编程【2011-12-3

有bland enterprise server5.1的license吗!!! 用cactus测试j2ee EJB技术介绍 关于apache与tomcat的整合问题,急急!!! [请教]对一篇文章进行分页的思路? 一个问题!(如何在HTML table上加滚动条,显示所有数据?) 关于EJB与JABBAR通信 使用 PreparedStatement如何将null值插入到数据库中

师以长技以制夷 778

j2ee简介

<br />    servlet是学习j2ee开发最为重要的一部分,但是只有servlet是不会起作用的。<br />    j2ee是sun公司为了企业开发所提供的一个标准平台,这定义了满足这个标准的产品要实现容器、服务和通讯方式等内容,使开发者尽量只注重于业务逻辑的开发。<br /> <br />    在J2ee中定义了四种组件、也是我们常说的基于组件的开发,并且每一种组件还都对应着一种容器。Applets 运行在浏览器中,能够跟其他j2ee组件进行加护,其对应的容器为浏览器。Application

wangzijian777的专栏 812

关于Java/RMI/JBoss/EJB/WebService/JMS使用

写一篇巨杂的流水记录下对j2ee的某些技术的浏览。 webservice是为跨平台设计的通信语言,不过HelloWorld而言,C#要做得比java要好很多很多! 第一方面:C#提供WebService,C#或Java调用。 C#新建WebService的步骤如下: 新建Asp.net Web工程。添加文件=>webservice,输入文件名。右键文件=>在浏览器中预览就可

OSSRS 3359

jboss8+EJB3+MDB Queue

1)在使用jboss8即WildFly进行MDB的试验时首先要在jboss8中配置jms 队列。 我使用的是修改配置文件的方式配置Jms Queue队列。 进入jboss8 安装目录的standalone\configuration文件夹下: 因为使用的是standalone-full.xml文件,所以将该文件的文件名修改为standalone.xml ...

weixin_30919571的博客 322

Jboss入门精简篇 (ejb)

Jboss入门精简篇 (ejb)   作者:不详 来源:周星驰和周润发的博客-----生命元素

sunshyman的专栏 732

EJB3.0 JBossJMS实例

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34384557的博客 178

JBoss下开发、部署EJB

作者:肖文鹏        JBoss是一个开放源码的EJB服务器,它与其它服务器整合后可以提供一个完整的J2EE平台。本文介绍如何在Linux环境下安装和配置JBoss,以及如何在JBoss平台上实现EJB的开发和部署。 作为J2EE架构中最重要的构件,EJB是实现服务器端分布式计算的核心。EBJ服务器是EJB的容器,它控制着EJB的运行,并为其提供事务处理、数据库访问、安全控制等一系列系统级的

myali88的专栏 1621

松下Panasonic SC-CH404组合音响磁带播放器RS-CH404原理图维修手册

松下Panasonic SC-CH404组合音响磁带播放器RS-CH404原理图维修手册,兼容Technics品牌同型号

stata测Dagum基尼系数及其分解(教程和代码)

老师同学们大家好,现将stata测Dagum基尼系数及其分解给大家分享!此资料包括stata测Dagum基尼系数及其分解的教程和代码,并且参照文献讲的,大家一看就会,一看就懂参考文献:章激扬.长三角城市群创新发展空间差异及收敛性研究——基于Dagum基尼系数分解[J].长江流域资源与环境,2023,32(02):235-249.

上一篇: J2EE
allenzhong0932
博客等级 码龄21年 0粉丝 3原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值