OC4J下的EJB 2.0 MDB的部署和运行

MDB Sample搭建和运行手册

蒋彪@南京 2010-8-23

1. MDB的运行环境

运行环境

Oc4j

JDK

JDK 1.3以上

编译环境

ANT 1.4

示例程序地址

www.oracle.com/technetwork/middleware/ias/how-to-ejb-mdb-128132.zip

2. MDB Sample的目录结构

src

ejb

mdb

MessageLogger.java

MDB代码

web

logmessageform.htm

提交数据

logmessage.jsp

将数据封装成MessageJMS发送

etc

application.xml

标准的J2EE 描述文件

ejb-jar.xml

标准的Ejb描述文件

Web.xml

标准的Web描述文件

orion-ejb-jar.xml

OC4J特有的EJB描述文件

Bulid.xml

编译打包的Ant 脚本

Common.xml

编译打包时所需要的一些资源

3. MDB Sample的打包

首先在系统PATH中设置,OC4J_HOME.

其次,打开bulid.xml,如下将用户名和密码修改成自己本地的配置

<!-- Make sure these are correct for your instance -->

<property name="deploy.ormi" value="ormi://localhost" />

<property name="deploy.username" value="oc4jadmin" />

<property name="deploy.password" value="admin" />

然后在Sample的目录下,如下执行Ant

打包成功之后,能在lib文件夹下面找到如下文件

< messagelogger.ear>

4. MDB Sample的部署

4.1 修改OC4J JMS配置

如下,在{OC4J_HOME}/ jms.xml 中添加本MDB所属的配置文件

<topic name="Demo Topic" location="jms/theTopic">

<description>A dummy topic</description>

</topic>

<topic-connection-factory name="Demo Topic Connection Factory"

location="jms/theTopicConnectionFactory">

<description>A dummy topic connection factory</description>

</topic-connection-factory>

4.2 MDB Sample的目录下执行如下CMD

<前提是OC4J启动成功>

ant deploy-usingadmin.jar

4.3 修改{OC4J}/j2ee/home/config/default-web-site.xml(看版本而定)

在该文件中,添加如下一行

<web-app application="messagelogger" name="messagelogger-web" root="/messagelogger" />

4.5 如下所示,访问部署成功的页面

http://localhost:8888/messagelogger/

5. MDB SampleEAR包的加载顺序

ear包中读取application.xml文件,了解module组件的定义

|

ejb.jar包中首先读取 ejb-jar.xml,了解MDB的声明和JMS的类型定义

|

ejb.jar包中读取orion-ejb-jar.xml,连接jms.xml中的具体的jms-connection-factory的定义

|

编译EJB代码,初始化EJB代码

#以上#

补充一:如何把JMSTopic换成Quene

我实验了一把,先改OC4J下面的JMS.xml里的Topic换成Quene,然后把ejb-jar.xmlorion-ejb-jar.xml里面的Topic换成Quene就可以了。代码层次什么都不需要改

补充二:如何实现JMS的回滚

如果MDB接受失败,就可以回滚对JMS的接受,让发送者再次发送,代码改写如下:

public void onMessage(Message msg)

{

Try{

}

catch(Exception e)

{

context.setRollbackOnly();

}

}

上面的context就是MessageDrivenContext

你可能感兴趣的:(ejb)