在JBoss 5.1中使用带有MDB的.bindings文件

时间:2014-08-14 08:51:33

标签: jms ibm-mq jboss-mdb

我正在编写标准的JEE 5应用程序,需要使用来自MQ服务器的JMS消息。应用服务器是JBOSS EAP 5.1。由于这是一个标准的JEE应用程序,因此MDB非常适合作为消息监听器。 MQ管理员提供了一个.bindings文件作为MQ配置。搜索完网页后,我无法找到一种方法来使用带有MDB的.bidings文件。我已经尝试过使用标准激活规范。这很好。但为此,JMS属性需要在JBOSS或EE特定的配置文件中。 有人可以告诉我们使用.bindings文件和MDB吗?

2 个答案:

答案 0 :(得分:1)

.bindings文件来自文件系统JNDI上下文。这是在FileSystemContext用于在JNDI中存储对象时写入的文件。它不应该被转移。

JBOSS将拥有它自己的JNDI提供商,并且无法读取此文件。您需要的是您需要连接到的queuemanager的MQ系统管理员的信息,即输入JNDI的信息。大概使用JMSAdmnin或MQExplorer。主机名,端口,频道,任何安全配置等等。

在JBOSS中你需要部署MQ资源适配器(a)这个可下载的http://www-01.ibm.com/support/docview.wss?uid=swg21633761(b)配置信息可以在http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.dev.doc/q031820_.htm找到

答案 1 :(得分:0)

使用JBoss 5.1上的IBM MQ工具创建的.bindings文件相对简单。

据推测,您已经拥有了由MQ管理员创建的.bindings文件。

在JBOss方面,您将使用:

com.sun.jndi.fscontext.RefFSContextFactory

命名上下文工厂以读取并将.bindings文件加载到JBoss JNDI中。为此,您需要额外的jar,这些jar不是作为IBM MQ JCA rar文件的一部分提供的。在Unix系统上,可以在:

下的IBM MQ分发中找到它们
/opt/mqm/java/lib/

目录。你需要:

fscontext.jar
mqcontext.jar
providerutil.jar

将它们放在$ {JBOSS_PROFILE)/ lib目录中。

然后,在$ {JBOSS_PROFILE)/ deploy / messaging目录中,创建一个名为wmq-bindings-ds.xml的文件:

<?xml version="1.0" encoding="UTF-8"?>
<connection-factories>

  <!-- Load the bindings file for the naming context -->
  <mbean code="org.jboss.naming.ExternalContext" name="jboss.jndi:service=ExternalContext,jndiName=BindingsNamingContext">
    <attribute name="JndiName">java:/BindingsNamingContext</attribute>
    <attribute name="Properties">
      java.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory
      java.naming.provider.url=file:///${jboss.server.data.dir}/mq
    </attribute>
    <attribute name="InitialContext">javax.naming.InitialContext</attribute>
  </mbean> 

  <!-- The WSMQ JMS provider loader -->
  <mbean code="org.jboss.jms.jndi.JMSProviderLoader" name="jboss.mq:service=JMSProviderLoader,name=BindingsWSMQJMSProvider">
    <attribute name="ProviderName">BindingsWSMQJMSProvider</attribute>
    <attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute>
    <attribute name="QueueFactoryRef">java:/BindingsNamingContext/mqConnectionFactory</attribute>
    <attribute name="TopicFactoryRef">java:/BindingsNamingContext/mqConnectionFactory</attribute>
  </mbean>

</connection-factories>

请注意,我的$ {jboss.server.data.dir}中有一个名为&#39; mq&#39;的目录。 .bindings文件就在那里。您的命名上下文将在JNDI中加载:

java:/BindingsNamingContext

注意:

的java:/ BindingsNamingContext / mqConnectionFactory 的java:/ BindingsNamingContext / mqConnectionFactory

&#39; java:/ BindingsNamingContext&#39;匹配提供商,&#39; mqConnectionFactory&#39;匹配我的.bindings文件中的内容。