1

我正在尝试使用 JBoss AMQ 6.3 在托管在大型机上的 WebSphere MQ 和在分布式环境中运行的应用程序之间充当桥梁。为了使它工作,我已经成功地安装了 WebSphere MQ 的 OSGi 库并部署了一个骆驼组件文件:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" default-activation="eager">
  <camelContext xmlns="http://camel.apache.org/schema/blueprint">
    <route>
        <from uri="wmq:queue:DLC1.PBX.LS000004"/>
        <to uri="activemq:queue:GreenQueue?username=jbamq&amp;password=ThisIsABig10-4"/>
    </route>
    <route>
        <from uri="activemq:queue:BlueQueue?username=jbamq&amp;password=ThisIsABig10-4" />
        <to uri="wmq:queue:DLC1.PBX.LE000002" />
    </route>
  </camelContext>

<bean id="amqConnectionFactory"
   class="org.apache.activemq.ActiveMQConnectionFactory">
   <property name="brokerURL" value="tcp://localhost:61616" />
</bean>


<bean id="pooledConnectionFactory"
   class="org.apache.activemq.pool.PooledConnectionFactory" init-method="start" destroy-method="stop">
   <property name="maxConnections" value="8" />
   <property name="connectionFactory" ref="amqConnectionFactory" />
</bean>

<bean id="amqConfig"
   class="org.apache.camel.component.jms.JmsConfiguration">
   <property name="connectionFactory" ref="pooledConnectionFactory"/>
   <property name="concurrentConsumers" value="10"/>
</bean>

<bean id="activemq"
    class="org.apache.activemq.camel.component.ActiveMQComponent">
    <property name="configuration" ref="amqConfig"/>
</bean>


<bean id="wmqConnectionFactory" class="com.ibm.mq.jms.MQConnectionFactory">
   <property name="hostName" value="DLC1.thisorganization.org" />
   <property name="port" value="1414" />
   <property name="queueManager" value="DLC1" />
   <property name="channel" value="DLC1.PBX010.SVRCONN" />
   <property name="transportType" value="1" />
   <property name="shareConvAllowed" value="0" />
</bean>

<bean id="wmq" class="org.apache.camel.component.jms.JmsComponent">
  <property name="connectionFactory" ref="wmqConnectionFactory"/>
  <property name="maxConcurrentConsumers" value="5"/>
  <property name="cacheLevelName" value="CACHE_NONE"/>
</bean>
</blueprint>

一开始启动JBoss AMQ时组件刚刚部署,但一周后它不再能够启动,抛出以下错误:

2016-11-16 16:24:43,028 | ERROR | FelixStartLevel  | BlueprintContainerImpl           | container.BlueprintContainerImpl  409 | 21 - org.apache.aries.blueprint.core - 1.4.5 | Unable to start blueprint container for bundle DeployedQueues.xml/0.0.0
org.osgi.service.blueprint.container.ComponentDefinitionException: Error setting property: PropertyDescriptor <name: connectionFactory, getter: null, setter: [class org.apache.camel.component.jms.JmsComponent.setConnectionFactory(interface javax.jms.ConnectionFactory)]
        at org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:963)[21:org.apache.aries.blueprint.core:1.4.5]
        at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:929)[21:org.apache.aries.blueprint.core:1.4.5]
        at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:910)[21:org.apache.aries.blueprint.core:1.4.5]
        at org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:844)[21:org.apache.aries.blueprint.core:1.4.5]
        at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:811)[21:org.apache.aries.blueprint.core:1.4.5]
        at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)[21:org.apache.aries.blueprint.core:1.4.5]
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_80]
        at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)[21:org.apache.aries.blueprint.core:1.4.5]
        at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:247)[21:org.apache.aries.blueprint.core:1.4.5]
        at org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:183)[21:org.apache.aries.blueprint.core:1.4.5]
        at org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:688)[21:org.apache.aries.blueprint.core:1.4.5]
        at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:383)[21:org.apache.aries.blueprint.core:1.4.5]
        at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:270)[21:org.apache.aries.blueprint.core:1.4.5]
        at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:294)[21:org.apache.aries.blueprint.core:1.4.5]
        at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:263)[21:org.apache.aries.blueprint.core:1.4.5]
        at org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:253)[21:org.apache.aries.blueprint.core:1.4.5]
        at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500)[15:org.apache.aries.util:1.1.0]
        at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433)[15:org.apache.aries.util:1.1.0]
        at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725)[15:org.apache.aries.util:1.1.0]
        at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463)[15:org.apache.aries.util:1.1.0]
        at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422)[15:org.apache.aries.util:1.1.0]
        at org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1127)[org.apache.felix.framework-4.4.1.jar:]
        at org.apache.felix.framework.util.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:696)[org.apache.felix.framework-4.4.1.jar:]
        at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:484)[org.apache.felix.framework-4.4.1.jar:]
        at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4429)[org.apache.felix.framework-4.4.1.jar:]
        at org.apache.felix.framework.Felix.startBundle(Felix.java:2100)[org.apache.felix.framework-4.4.1.jar:]
        at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1299)[org.apache.felix.framework-4.4.1.jar:]
        at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:304)[org.apache.felix.framework-4.4.1.jar:]
        at java.lang.Thread.run(Thread.java:745)[:1.7.0_80]
Caused by: java.lang.Exception: Unable to convert value |   com.ibm.mq.jms.MQConnectionFactory@c79b6829  :-
|   |   XMSC_ADMIN_OBJECT_TYPE             :-  20
|   |   XMSC_ASYNC_EXCEPTIONS              :-  1
|   |   XMSC_CLIENT_ID                     :-  <null>
|   |   XMSC_CONNECTION_TYPE               :-  1
|   |   XMSC_CONNECTION_TYPE_NAME          :-  com.ibm.msg.client.wmq
|   |   XMSC_RTT_DIRECT_AUTH               :-  0
|   |   XMSC_RTT_PROXY_HOSTNAME            :-  <null>
|   |   XMSC_RTT_PROXY_PORT                :-  443
|   |   XMSC_WMQ_BROKER_CC_SUBQ            :-  SYSTEM.JMS.ND.CC.SUBSCRIBER.QUEUE
|   |   XMSC_WMQ_BROKER_CONTROLQ           :-  SYSTEM.BROKER.CONTROL.QUEUE
|   |   XMSC_WMQ_BROKER_PUBQ               :-  SYSTEM.BROKER.DEFAULT.STREAM
|   |   XMSC_WMQ_BROKER_QMGR               :-
|   |   XMSC_WMQ_BROKER_SUBQ               :-  SYSTEM.JMS.ND.SUBSCRIBER.QUEUE
|   |   XMSC_WMQ_CCDTURL                   :-  <null>
|   |   XMSC_WMQ_CF_DESCRIPTION            :-  <null>
|   |   XMSC_WMQ_CHANNEL                   :-  SQD1.AXB010.SVRCONN
|   |   XMSC_WMQ_CLEANUP_INTERVAL          :-  3600000
|   |   XMSC_WMQ_CLEANUP_LEVEL             :-  1
|   |   XMSC_WMQ_CLIENT_RECONNECT_OPTIONS  :-  0
|   |   XMSC_WMQ_CLIENT_RECONNECT_TIMEOUT  :-  1800
|   |   XMSC_WMQ_CLONE_SUPPORT             :-  0
|   |   XMSC_WMQ_CONNECTION_MODE           :-  1
|   |   XMSC_WMQ_CONNECTION_NAME_LIST_INT  :-
|   |   |   0  :-  SQD1.axa-seguros-es.intraxa(1414)
|   |   XMSC_WMQ_CONNECTION_TAG            :-  [B@32525605
|   |   XMSC_WMQ_CONNECT_OPTIONS           :-  0
|   |   XMSC_WMQ_HEADER_COMP               :-
|   |   |   0  :-  0
|   |   XMSC_WMQ_LOCAL_ADDRESS             :-
|   |   XMSC_WMQ_MAP_NAME_STYLE            :-  true
|   |   XMSC_WMQ_MAX_BUFFER_SIZE           :-  1000
|   |   XMSC_WMQ_MESSAGE_RETENTION         :-  1
|   |   XMSC_WMQ_MESSAGE_SELECTION         :-  0
|   |   XMSC_WMQ_MSG_BATCH_SIZE            :-  10
|   |   XMSC_WMQ_MSG_COMP                  :-
|   |   |   0  :-  0
|   |   XMSC_WMQ_OPT_PUB                   :-  false
|   |   XMSC_WMQ_OUTCOME_NOTIFICATION      :-  true
|   |   XMSC_WMQ_POLLING_INTERVAL          :-  5000
|   |   XMSC_WMQ_PROCESS_DURATION          :-  0
|   |   XMSC_WMQ_PROVIDER_VERSION          :-  unspecified
|   |   XMSC_WMQ_PUB_ACK_INTERVAL          :-  25
|   |   XMSC_WMQ_QMGR_CCSID                :-  819
|   |   XMSC_WMQ_QUEUE_MANAGER             :-  SQD1
|   |   XMSC_WMQ_RECEIVE_EXIT              :-  <null>
|   |   XMSC_WMQ_RECEIVE_EXIT_INIT         :-  <null>
|   |   XMSC_WMQ_RECEIVE_ISOLATION         :-  0
|   |   XMSC_WMQ_RESCAN_INTERVAL           :-  5000
|   |   XMSC_WMQ_SECURITY_EXIT             :-  <null>
|   |   XMSC_WMQ_SECURITY_EXIT_INIT        :-  <null>
|   |   XMSC_WMQ_SEND_CHECK_COUNT          :-  0
|   |   XMSC_WMQ_SEND_EXIT                 :-  <null>
|   |   XMSC_WMQ_SEND_EXIT_INIT            :-  <null>
|   |   XMSC_WMQ_SHARE_CONV_ALLOWED        :-  0
|   |   XMSC_WMQ_SPARSE_SUBSCRIPTIONS      :-  false
|   |   XMSC_WMQ_SSL_CERT_STORES_COL       :-  <null>
|   |   XMSC_WMQ_SSL_CERT_STORES_STR       :-  <null>
|   |   XMSC_WMQ_SSL_CIPHER_SUITE          :-  <null>
|   |   XMSC_WMQ_SSL_FIPS_REQUIRED         :-  false
|   |   XMSC_WMQ_SSL_KEY_RESETCOUNT        :-  0
|   |   XMSC_WMQ_SSL_PEER_NAME             :-  <null>
|   |   XMSC_WMQ_SSL_SOCKET_FACTORY        :-  <null>
|   |   XMSC_WMQ_STATUS_REFRESH_INTERVAL   :-  60000
|   |   XMSC_WMQ_SUBSCRIPTION_STORE        :-  1
|   |   XMSC_WMQ_SYNCPOINT_ALL_GETS        :-  false
|   |   XMSC_WMQ_TARGET_CLIENT_MATCHING    :-  true
|   |   XMSC_WMQ_TEMPORARY_MODEL           :-  SYSTEM.DEFAULT.MODEL.QUEUE
|   |   XMSC_WMQ_TEMP_Q_PREFIX             :-
|   |   XMSC_WMQ_TEMP_TOPIC_PREFIX         :-
|   |   XMSC_WMQ_USE_CONNECTION_POOLING    :-  true
|   |   brokerVersion                      :-  -1
|   |   failIfQuiesce                      :-  1
|   |   multicast                          :-  0
|   |   version                            :-  7
|   |   wildcardFormat                     :-  0 to type javax.jms.ConnectionFactory
        at org.apache.aries.blueprint.container.AggregateConverter.convert(AggregateConverter.java:184)[21:org.apache.aries.blueprint.core:1.4.5]
        at org.apache.aries.blueprint.container.BlueprintRepository.convert(BlueprintRepository.java:402)[21:org.apache.aries.blueprint.core:1.4.5]
        at org.apache.aries.blueprint.utils.ReflectionUtils$PropertyDescriptor.convert(ReflectionUtils.java:396)[21:org.apache.aries.blueprint.core:1.4.5]
        at org.apache.aries.blueprint.utils.ReflectionUtils$MethodPropertyDescriptor.internalSet(ReflectionUtils.java:630)[21:org.apache.aries.blueprint.core:1.4.5]
        at org.apache.aries.blueprint.utils.ReflectionUtils$PropertyDescriptor.set(ReflectionUtils.java:380)[21:org.apache.aries.blueprint.core:1.4.5]
        at org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:961)[21:org.apache.aries.blueprint.core:1.4.5]
        ... 28 more

我怀疑它在收到来自 WebSphereMQ 的第一条消息后停止工作

4

1 回答 1

0

最后,我设法通过使用一种解决方法来部署骆驼组件。一旦 JBoss A-MQ 服务器启动,我登录 Web 控制台并转到 OSGi 选项卡,然后选择显示所有捆绑包并按 jms 过滤。

JBoss A-MQ 控制台

对于每个捆绑包,我单击它,然后在下一个屏幕上单击重新加载按钮:

重新加载捆绑包

好吧,也许不是所有的包都需要重新加载,但是这样最终部署了 Camel 组件

于 2016-11-22T17:18:25.563 回答