weblogic bea
本文向您展示如何在Windows®上创建默认的BEA WebLogic Server V8.1 SP4实例,将其连接到IBM®WebSphere®MQ Java™Messaging Service(JMS),以及运行一些示例应用程序。 有关WebLogic的WebSphere MQ需求的信息,请参阅WebSphere MQ系统需求 。 本文使用连接到WebSphere MQ的示例消息驱动Bean(MDB)来接收消息,并且相同的MDB将接收到的消息转发到另一个队列。
创建WebSphere MQ队列管理器并配置JMS JNDI名称空间
要使用此示例,您需要在JNDI名称空间中创建一个QueueConnectionFactory和Queue对象,以连接到队列管理器并访问队列。 使用以下命令在WebSphere MQ中创建队列管理器和队列:
- 创建队列管理器:
crtmqm testqmgr
。 - 启动队列管理器:
strmqm testqmgr
。 - 在队列管理器中创建队列:
runmqsc testqmgr DEFINE QLOCAL("MyMDBQueue") DEFINE QLOCAL("MyReplyQueue") end
接下来,创建一个基于文件的简单JNDI上下文,并在该JNDI名称空间中配置JMS对象。 在WebSphere Application Server社区版中运行的应用程序使用这些JNDI对象来连接到WebSphere MQ队列管理器。 对于本练习,WebLogic和WebSphere MQ应该在同一台机器上。
该设置适用于基于文件的JNDI。 在继续下一步之前,创建目录C:\JNDI-Directory
。 使用以下内容创建MyAdmin.config
:
INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory
PROVIDER_URL=file:/C:/JNDI-Directory
SECURITY_AUTHENTICATION=none
接下来,通过执行以下命令来创建QueueConnectionFactory和Queue对象:
C:\Program Files\IBM\WebSphere MQ\Java\bin\JMSAdmin.bat -cfg MyAdmin.config
您应该看到以下提示,可以在其中配置JNDI对象: InitCtx>
在提示符下,键入以下命令,并在每个命令之后按Enter :
def xaqcf(ReceiverQCF) qmgr(testqmgr)
def xaqcf(SenderQCF) qmgr(testqmgr)
def q(MyMDBQueue) qmgr(testqmgr) queue(MyMDBQueue)
def q(MyReplyQueue) qmgr(testqmgr) queue(MyReplyQueue)
end
以上配置是基本步骤。 有关JMSAdmin工具的更多信息,请参阅WebSphere MQ文档:Using Java中的 “第5章。使用WebSphere MQ JMS管理工具”。
现在,WebSphere MQ JMS配置已准备好进行点对点消息传递。
创建WebLogic服务器实例
创建一个WebLogic服务器实例,然后将WebSphere MQ JMS JAR文件添加到其类路径并执行以下配置步骤:
- 安装WebLogic Server,例如在
C:\bea
。 - 打开命令窗口(
cmd.exe
)。 - 执行
C:\bea\weblogic81\server\bin\setWLSEnv.cmd
。 - 使用向导创建服务器:单击开始=>所有程序=> BEA WebLogic Platform 8.1 =>配置向导 。 或者,您可以使用以下命令:
- 创建一个要在其中运行测试的目录,例如
C:\jms\WebLogic\test\server
,并将其设为当前目录。 - 执行以下命令来创建域和服务器:
java -Dweblogic.Domain=MQJMSTEST -Dweblogic.Name=MQJMSTESTSERVER -Dweblogic.management.username=weblogic -Dweblogic.management.password=weblogic -Dweblogic.management.GenerateDefaultConfig=true weblogic.Server
- 创建一个要在其中运行测试的目录,例如
- 上面的命令完成后,停止服务器,打开另一个命令窗口,然后通过执行以下命令来调用
C:\bea\weblogic81\server\bin\setWLSEnv.cmd
:java weblogic.Admin -url t3://localhost:7001 -username weblogic -password weblogic FORCESHUTDOWN
- 通过编辑
C:\jms\WebLogic\test\server\startMQJMSTEST.cmd
并在启动服务器JVM的最后一条命令之前添加以下行,来配置WebLogic Server类路径以访问WebSphere MQ JMS JAR文件:set MQ_JAVA=C:\Program Files\IBM\WebSphere MQ\Java\lib set CLASSPATH=%MQ_JAVA%\com.ibm.mq.jar;%CLASSPATH% set CLASSPATH=%MQ_JAVA%\com.ibm.mqjms.jar;%CLASSPATH%; set CLASSPATH=%MQ_JAVA%\com.ibm.mqetclient.jar;%CLASSPATH% (Above line is applicable only for WebSphere MQ + Extended Transactional Client) set CLASSPATH=%MQ_JAVA%\fscontext.jar;%CLASSPATH% set PATH=%MQ_JAVA%;%PATH%
- 通过执行
C:\jms\WebLogic\test\server\startMQJMSTEST.cmd
。
WebLogic Server应该正在运行。 使用http://localhost:7001/console
访问其管理控制台,并使用用户名和密码进行身份验证(在此示例中,我们都使用了weblogic
)。
配置WebLogic外部JMS服务器
接下来,使用JNDI设置配置WebLogic外部JMS提供程序以对其进行访问。
访问http://localhost:7001/console
,并使用上面创建WebLogic服务器实例时使用的用户名和密码进行身份验证。 登录后,导航至MQJMSTEST =>服务=> JMS =>外部JMS服务器 。 在右窗格中,单击“ 配置新的外部JMSServer”,然后输入以下值:
- 名称 :
MQJMSTEST Foreign JMS Server
- JNDI初始上下文工厂 :
com.sun.jndi.fscontext.RefFSContextFactory
- JNDI连接URL :
file:/C:/JNDI-Directory
屏幕应如下所示:
图1.创建新的外部JMS服务器。
单击右下角的创建 。 您将获得另一个屏幕,以选择需要在其中创建此外部JMS服务器的WebLogic Server实例。 选择MQJMSTESTSERVER ,然后单击Apply 。
现在,您可以在新创建的外部JMS提供程序中配置QueueConnectionFactory和Queue对象。 通过此步骤,我们要做的是将基于文件的JNDI中定义的QueueConnectionFactory和Queue引用为外部JMS提供程序。
在外部JMS提供程序中创建QueueConnectionFactory对象
导航至MQJMSTEST =>服务=> JMS =>外部JMS服务器=> MQJMSTEST外部JMS服务器=>外部JMS连接工厂 。 在右窗格中,单击“ 配置新的外部JMSConnection工厂”,然后输入以下值:
- 名称 :
WLSenderQCF
- 本地JNDI名称 :
jms/WLSenderQCF
- 远程JNDI名称 :
SenderQCF
远程JNDI名称应与使用JMSAdmin工具在基于文件的JNDI中创建的QueueConnectionFactory名称匹配。 屏幕应如下所示:
图2.创建QueueConnectionFactory。
单击右下角的创建以完成此操作。
在外部JMS提供程序中创建目标对象
要创建目标,请导航至MQJMSTEST =>服务=> JMS =>外部JMS服务器=> MQJMSTEST外部JMS服务器=>外部JMS目标 。 在右窗格中,单击“ 配置新的外部JMSDestination”,然后输入以下值:
- 名称 :
WLMyReplyQueue
- 本地JNDI名称 :
jms/WLMyReplyQueue
- 远程JNDI名称 :
MyReplyQueue
远程JNDI名称应与使用JMSAdmin工具在基于文件的JNDI中创建的目的地匹配。 屏幕应如下所示:
图3.创建队列目的地。
单击右下角的创建以完成操作。 现在,您已经准备好使用外部JMS配置来研究MDB应用程序。
开发示例应用程序并将其部署在WebLogic上
在这里,我们使用一个MDB,它在队列管理器testqmgr
监听来自MyMDBQueue
的消息。 onMessage()
通过调用putMessage(javax.jms.Message msg)
方法来拾取消息并将相同的消息转发到MyReplyQueue
。 您可以在下面下载的wlresources.zip
文件包含示例应用程序和用于部署到WebLogic的WLSampleMDB.ear
文件。
将wlresources.zip
压缩到C:\wlresources
等目录,并使用以下步骤构建名为WLSampleMDB.ear
的EAR文件。 为了您的方便,下载文件中提供了一个已经组装好的WLSampleMDB.ear
文件。
- 打开命令提示符并执行以下命令:
-
cd C:\wlresources
-
C:\bea\weblogic81\server\bin\setWLSEnv.cmd
-
javac com\ibm\WLSampleMDB\SampleMDBBean.java
-
jar -cvf WLSampleMDB.jar com META-INF
(创建WLSampleMDB.jar,您将在其上进行进一步的工作以将其部署在服务器上)。 - 启动应用程序构建器:单击开始=>所有程序=> BEA WebLogic Platform 8.1 =>其他开发工具=> WebLogic Builder 。
- 在WebLogic Builder中,单击File => Open,然后选择在步骤5中创建的WLSampleMDB.jar (如果出现提示,请单击Yes,以创建Deployment Descriptor)。
- 单击左侧树视图上的SampleMDBBean ,选择“ 常规”选项卡,然后更改以下值:
- JNDI名称 :
SampleMDBBean
- 交易超时 :
300
- 目标类型 :
javax.jms.Queue
- 目标JNDI :
MyMDBQueue
(这是使用JMSAdmin工具创建队列时提供的名称)
- JNDI名称 :
- 选择“ 外部JMS提供程序”选项卡,选择“ 使用外部JMS提供程序” ,然后输入以下值:
- 提供者URL :
file:/C:/JNDI-Directory
- 连接工厂JNDI名称 :
ReceiverQCF
(我们使用JMSAdmin工具为MDB接收消息而创建的连接工厂名称) - 初始上下文工厂 :
com.sun.jndi.fscontext.RefFSContextFactory
- 提供者URL :
- 选择“ 高级”选项卡,并确保为“ 交易类型 ”选择了“ 容器 ”值。
- 从左侧树视图的SampleMDBBean下,选择“ 方法”,并确保根据需要选择了“ 默认”事务 。
- 在左侧树视图的SampleMDBBean下,选择Resources 。
- 从右侧窗格中选择Resource Reference选项卡,然后单击Add (如果已经定义了资源,请单击Edit )。 输入以下值:
- 资源参考名称 :
WLSenderQCF
- 资源类型 :
javax.jms.QueueConnectionFactory
- 资源授权 :
Application
- JNDI名称 :
jms/WLSenderQCF
- 共享范围 :
Unsharable
共享
- 资源参考名称 :
- 单击确定 。 同样,使用以下值添加另一个资源引用:
- 资源参考名称 :
MyReplyQueue
- 资源类型 :
javax.jms.Queue
- 资源授权 :
Application
- JNDI名称 :
jms/MyReplyQueue
- 共享范围 :
Unsharable
共享
- 资源参考名称 :
- 单击文件=>保存以保存保存WLSampleMDB.jar。
- 要部署此组装的JAR文件,请单击Tools => Deploy Module 。 如果要求您提供配置值以连接到WebLogic Server,请验证它们是否与以下值匹配:
- 协议 :
t3
- 主机 :
localhost
- 港口 :
7001
- 服务器名称 :
MQJMSTESTSERVER
- 系统用户名 :
weblogic
- 系统用户密码 :
weblogic
- 现在,单击“ 连接”,然后在下一个弹出窗口中,单击“ 部署模块” 。
- 协议 :
- 在命令提示符处使用命令amqsput MyMDBQueue testqmgr测试应用程序,然后键入要作为消息输入的任何文本,现在观察运行WebLogic Server的控制台,您应该能够看到以下内容:
Message Received: JMS Message class: jms_text JMSType: null JMSDeliveryMode: 1 JMSExpiration: 0 JMSPriority: 0 JMSMessageID: ID:414d512074657374716d6772202020203f40254420000908 JMSTimestamp: 1143559825190 JMSCorrelationID:null JMSDestination: null JMSReplyTo: null JMSRedelivered: false JMS_IBM_PutDate:20060328 JMSXAppID:WebSphere MQ\bin\amqsput.exe JMS_IBM_Format:MQSTR JMS_IBM_PutApplType:11 JMS_IBM_MsgType:8 JMSXUserID:sanjay JMS_IBM_PutTime:15302519 JMSXDeliveryCount:1 This is a Test Message putting the message to MyReplyQueue looked up QueueConnectionFactory: weblogic.deployment.jms.PooledConnectionFactory@8710bd looked up Queue: queue://testqmgr/MyReplyQueue Message send
在按下Enter键并带空行之后,您将退出amqsput
命令。 有关amqsput
更多信息,请参阅WebSphere MQ文档。
结论
我们已经配置了WebLogic Server和WebSphere MQ相互连接,并使用MDB示例获取消息并将其转发到全局事务中的另一个队列。
翻译自: https://www.ibm.com/developerworks/websphere/library/techarticles/0604_kesavan/0604_kesavan.html
weblogic bea