【问题标题】:Error while creating JMS configuration in wso2esb在 wso2esb 中创建 JMS 配置时出错
【发布时间】:2015-07-20 15:23:23
【问题描述】:

我正在使用 wso2esb4.7.0 和 wso2mb-2.2.0。我希望使用 wso2mb 创建 jms 代理服务。为此,我已经配置了 wso2mb 和 wso2esb,例如:

Wso2esb 配置: (jndi.properties 的变化)

# register some connection factories
# connectionfactory.[jndiname] = [ConnectionURL]
 connectionfactory.QueueConnectionFactory = amqp://admin:admin@clientID/carbon?brokerlist='tcp://localhost:5673'
 connectionfactory.TopicConnectionFactory = amqp://admin:admin@clientID/carbon?brokerlist='tcp://localhost:5673'


# register some queues in JNDI using the form
# queue.[jndiName] = [physicalName]
queue.MyQueue = MyQueue

axis2.xml 的变化:

取消注释以下代码:

 <transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"/>

 <transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
        <parameter name="myTopicConnectionFactory" locked="false">
           <parameter name="java.naming.factory.initial" locked="false">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
            <parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</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">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
            <parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</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">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
            <parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
            <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ConnectionFactory</parameter>
            <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
        </parameter>
    </transportReceiver>

还将 andes-client-*.jargeronimo-jms_1.1_spec-*.jar 从 $MB_HOME/client-lib 复制到 $ESB_HOME/repository/components/lib

重新启动服务器。直到它工作正常。

现在希望使用 jms 端口创建服务。它正在创建一个服务,但它立即进入有故障的服务,并且 esb 记录它显示如下错误:

 ERROR - JMSListener Unexpected error when configuring service SampleJMS for the JMS transport. It will be disabled for this transport and marked as faulty.
java.lang.NullPointerException
    at org.apache.axis2.transport.jms.JMSListener.getConnectionFactory(JMSListener.java:132)
    at org.apache.axis2.transport.jms.JMSEndpoint.loadConfiguration(JMSEndpoint.java:193)
    at org.apache.axis2.transport.base.AbstractTransportListenerEx.startListeningForService(AbstractTransportListenerEx.java:153)
    at org.apache.axis2.transport.base.AbstractTransportListener.internalStartListeningForService(AbstractTransportListener.java:213)
    at org.apache.axis2.transport.base.AbstractTransportListener$2.serviceAdded(AbstractTransportListener.java:126)
    at org.apache.axis2.transport.base.tracker.AxisServiceTracker.serviceAdded(AxisServiceTracker.java:212)
    at org.apache.axis2.transport.base.tracker.AxisServiceTracker.start(AxisServiceTracker.java:188)
    at org.apache.axis2.transport.base.AbstractTransportListener.start(AbstractTransportListener.java:178)
    at org.apache.axis2.transport.base.AbstractTransportListenerEx.start(AbstractTransportListenerEx.java:83)

在重新启动时也会显示如下错误:

错误 - 名称 ConnectionFactory 的 BaseUtils JNDI 查找返回了 org.wso2.andes.client.AMQQueue,而接口应为 javax.jms.ConnectionFactory [2015-01-20 10:22:27,709] 错误 - ListenerManager 无法初始化 jmstransport 侦听器 org.apache.axis2.transport.base.BaseTransportException:名称 ConnectionFactory 的 JNDI 查找返回 org.wso2.andes.client.AMQQueue,而接口 javax.jms.ConnectionFactory 是预期的

我的代理配置是:

  <target> 
      <inSequence> 
         <property name="Action" 
                   value="urn:placeOrder" 
                   scope="default" 
                   type="STRING"/> 
         <log level="full"/> 
         <send> 
            <endpoint> 
               <address uri="http://localhost:9000/services/SimpleStockQuoteService"/> 
            </endpoint> 
         </send> 
      </inSequence> 
      <outSequence> 
         <drop/> 
      </outSequence> 

为什么会这样?他们的 jms 配置有问题吗?请指导我。

【问题讨论】:

  • 您能否在问题中也包含失败代理的 XML?

标签: jms wso2 wso2esb wso2mb


【解决方案1】:

在 jndi.properties 中,您已经定义了:

  • QueueConnectionFactory
  • TopicConnectionFactory

在axis.xml中,你使用:

  • QueueConnectionFactory
  • TopicConnectionFactory
  • 并且,在默认部分,一个“ConnectionFactory

我不使用 WSO2MB 我想知道这不是你的问题

【讨论】:

  • 谢谢Jean-Michel..这是基本配置。我以前做过
猜你喜欢
  • 2015-03-19
  • 2013-08-31
  • 1970-01-01
  • 2023-03-16
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多