2013-11-15 84 views
0

我想知道如何配置JMS运输与IBM MessageSight,类似的工作:眼下http://docs.wso2.org/display/ESB460/Configure+with+ActiveMQ配置WSO2 ESB JMS运输与IBM Messagesight

,我有在axis2.xml如下:

<transportReceiver name="ibmMsgSightJMS" class="org.apache.axis2.transport.jms.JMSListener"> 
     <parameter name="myTopicConnectionFactory" locked="false"> 
      <parameter name="java.naming.factory.initial" locked="false">com.ibm.ima.jms.ImaJmsFactory</parameter> 
      <parameter name="java.naming.provider.url" locked="false">tcp://192.168.154.128:1883</parameter> 
      <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter> 
      <parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter> 
     </parameter> 

     <parameter name="myQueueConnectionFactory" locked="false"> 
      <parameter name="java.naming.factory.initial" locked="false">com.ibm.ima.jms.ImaJmsFactory</parameter> 
      <parameter name="java.naming.provider.url" locked="false">tcp://192.168.154.128:1883</parameter> 
      <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter> 
      <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter> 
     </parameter> 
     <parameter name="default" locked="false"> 
      <parameter name="java.naming.factory.initial" locked="false">com.ibm.ima.jms.ImaJmsFactory</parameter> 
      <parameter name="java.naming.provider.url" locked="false">tcp://192.168.154.128:1883</parameter> 
      <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter> 
      <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter> 
     </parameter> 
    </transportReceiver> 

而且我有在ESB代理服务是这样的:

<proxy xmlns="http://ws.apache.org/ns/synapse" 
     name="esbProcessMqttJMSPS" statistics="disable" trace="disable" transports="ibmMsgSightJMS"> 
    <parameter name="transport.jms.ConcurrentConsumers">1</parameter> 
    <parameter name="transport.jms.ConnectionFactory">myTopicConnectionFactory</parameter> 
    <parameter name="transport.jms.DestinationType">B</parameter> 
    <parameter name="transport.jms.Destination">B</parameter> 
</proxy> 

当我启动的ESB服务器,我收到以下错误:无法获取JNDI上下文,JMS连接工厂:TopicConnectionFactory或默认目标:JMS的空值CF

任何帮助将不胜感激。谢谢!

+0

在你的代理服务中,“transport.jms.DestinationType”应该是'topic'。传输目标类型接受的值是'队列'或'主题'。你可以检查以上的变化? http://axis.apache.org/axis2/java/transports/jms.html#Service_configuration:http://axis.apache.org/axis2/java/transports/jms.html#Service_configuration – Chandana

+0

良好的通话 - 我在玩周围有东西,忘了改回来。 –

回答

0

好吧,所以我想通了。

的JMS配置在axis2.xml应该是:

<transportReceiver name="ibmMsgSightJMS" class="org.apache.axis2.transport.jms.JMSListener"> 
     <parameter name="myTopicConnectionFactory"> 
      <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter> 
      <parameter name="java.naming.provider.url" locked="false">file:/C:/path/to/wso2/repository/conf/jndi</parameter> 
      <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">connFactory1</parameter> 
      <parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter> 
     </parameter> 

     <parameter name="myQueueConnectionFactory"> 
      <parameter name="java.naming.factory.initial">com.sun.jndi.fscontext.RefFSContextFactory</parameter> 
      <parameter name="java.naming.provider.url">file:/C:/path/to/wso2/repository/conf/jndi</parameter> 
      <parameter name="transport.jms.ConnectionFactoryJNDIName">connFactory1</parameter> 
      <parameter name="transport.jms.ConnectionFactoryType">queue</parameter> 
     </parameter> 

     <parameter name="default"> 
      <parameter name="java.naming.factory.initial">com.sun.jndi.fscontext.RefFSContextFactory</parameter> 
      <parameter name="java.naming.provider.url">file:/C:/path/to/wso2/repository/conf/jndi</parameter> 
      <parameter name="transport.jms.ConnectionFactoryJNDIName">connFactory1</parameter> 
      <parameter name="transport.jms.ConnectionFactoryType">topic</parameter> 
     </parameter> 
    </transportReceiver> 

而且我有一个JNDI属性文件名为.bindings下列要求:

connFactory1/ClassName=com.ibm.ima.jms.impl.ImaConnectionFactory 
connFactory1/FactoryName=com.ibm.ima.jms.impl.ImaConnectionFactory 
connFactory1/RefAddr/0/Encoding=String 
connFactory1/RefAddr/0/Type=Port 
connFactory1/RefAddr/0/Content=16102 
connFactory1/RefAddr/1/Encoding=String 
connFactory1/RefAddr/1/Type=Server 
connFactory1/RefAddr/1/Content=192.168.154.128 
connFactory1/RefAddr/2/Encoding=String 
connFactory1/RefAddr/2/Content=common 
connFactory1/RefAddr/2/Type=ObjectType 
RequestTopic/ClassName=com.ibm.ima.jms.impl.ImaTopic 
RequestTopic/FactoryName=com.ibm.ima.jms.impl.ImaTopic 
RequestTopic/RefAddr/0/Encoding=String 
RequestTopic/RefAddr/0/Type=Name 
RequestTopic/RefAddr/0/Content=testRequestTopic 
ResponseTopic/ClassName=com.ibm.ima.jms.impl.ImaTopic 
ResponseTopic/FactoryName=com.ibm.ima.jms.impl.ImaTopic 
ResponseTopic/RefAddr/0/Encoding=String 
ResponseTopic/RefAddr/0/Type=Name 
ResponseTopic/RefAddr/0/Content=testResponseTopic 

另外,不要忘了把组件/ lib中的ImaJmsClient.jar。

我仍然有问题,每个服务创建主题/队列,并且因为它们没有在.bindings中定义,服务器正在呕吐。我已经通过删除每个数据服务和jar服务上的jms传输协议来解决此问题。