1

I'm trying to use a JBoss AMQ 6.3 to act a a bridge between a WebSphere MQ hosted on mainframe and applications running in distributed environments. In order to make it work I've successfully installed the OSGi libraries for WebSphere MQ and deployed a camel component file:

<?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>

At the beginning the component just deployed when starting JBoss AMQ but one week later it is no longer able to start, throwing the following error:

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

I suspect it stopped working once it received the first message from WebSphereMQ

alphamikevictor
  • 595
  • 7
  • 17
  • Well if it worked for one week and then failed, something must have happened. No changes in your MQ connection? – Souciance Eqdam Rashti Nov 21 '16 at 21:28
  • Normally connection was not modified (but as long as I don't manage the WebSphere MQ broker I can't know), I imagine the problem perhaps is related to some message received or to some OSGi component not started on server restart. – alphamikevictor Nov 22 '16 at 06:19
  • 1
    You can use RFHUTIL, a tool to browse MQ brokers and queues. You can use it to view the messages and troubleshoot. – Souciance Eqdam Rashti Nov 22 '16 at 08:46

1 Answers1

0

Finally I managed to deploy the camel component by using a workaround. Once the JBoss A-MQ server is started I login in the web console and go to the OSGi tab, then select to show all bundles and filter by jms.

JBoss A-MQ console

For each bundle I click on it and on the next screen click the reload button:

Reload bundle

Well, perhaps not all bundles are needed to reload but this way finally the Camel component is deployed

alphamikevictor
  • 595
  • 7
  • 17