Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jms 在JBoss 5.1中将.bindings文件与MDB一起使用_Jms_Ibm Mq_Jboss Mdb - Fatal编程技术网

Jms 在JBoss 5.1中将.bindings文件与MDB一起使用

Jms 在JBoss 5.1中将.bindings文件与MDB一起使用,jms,ibm-mq,jboss-mdb,Jms,Ibm Mq,Jboss Mdb,我正在编写一个标准的JEE 5应用程序,需要使用来自MQ服务器的JMS消息。应用服务器是JBOSS EAP 5.1。因为这是一个标准的JEE应用程序,所以MDB非常适合作为消息侦听器。MQ管理员提供了一个.bindings文件作为MQ配置。在搜索web之后,我找不到使用MDB的.bidings文件的方法。我已经试过使用标准激活规范,效果很好。但为此,JMS属性需要位于JBOSS或EE特定的配置文件中。 有人能告诉我一种在MDB中使用.bindings文件的方法吗?a.bindings文件来自文件

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

a.bindings文件来自文件系统JNDI上下文。这是使用FileSystemContext在JNDI中存储对象时写入的文件。它真的不应该到处移动

JBOSS将拥有自己的JNDI提供程序,而该提供程序将无法读取此文件。您需要的是来自需要连接到的queuemanager的MQ sys admin的信息。。i、 e.输入JNDI的信息。可能使用JMSAdmnin或MQExplorer。主机名、端口、通道、任何安全配置等


在JBOSS中,您需要部署MQ资源适配器(a)这个可通过(b)下载的配置信息可以在

中找到,使用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>
注:

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

“java:/BindingsNamingContext”匹配提供程序,“mqConnectionFactory”匹配my.bindings文件中的内容

java:/BindingsNamingContext