Hi Rich,

Something is odd about the rar you are using. Are you sure it supports XA transactions? One of the following happened:

ManagedConnection.getXAResource() returned null which would be a clue that XA is not supported -- if XA is supported then this should never return null. From the rest of the stack trace I think this is the scenario you are in.

ResourceAdapter.getXAResources(new ActivationSpec[0]) returned an array with a null in it. This seems highly implausible.

We could provide an error at a more informative point here when we first (don't) get the xa resource.

thanks
david jencks

On Jan 18, 2010, at 9:14 AM, Rich Cumbers wrote:

Hi there,

Apologies for the large pasted text in this message, not sure if this is
the right way to do this......

I am having great difficulty getting WebSphere MQ and Geronimo to play
nicely together. I think I have also spotted a defect/bug.

I have tried two methods of settingup the Resource Adapter for WebSphere
MQ:

1) deployment plan and wmq.jmsra.rar

I have a deployment plan as follows:

<?xml version="1.0" encoding="UTF-8"?>
<connector xmlns="http://geronimo.apache.org/xml/ns/j2ee/ connector-1.2">
<dep:environment
xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2";>
 <dep:moduleId>
  <dep:groupId>console.jms</dep:groupId>
  <dep:artifactId>test</dep:artifactId>
  <dep:version>1.0</dep:version>
  <dep:type>rar</dep:type>
 </dep:moduleId>
</dep:environment>
<resourceadapter>
 <resourceadapter-instance>
  <resourceadapter-name>test</resourceadapter-name>
   <nam:workmanager
xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.2";>
   <nam:gbean-link>DefaultWorkManager</nam:gbean-link>
   </nam:workmanager>
  </resourceadapter-instance>
  <outbound-resourceadapter>
   <connection-definition>

<connectionfactory-interface>javax.jms.ConnectionFactory</ connectionfactory-interface>
    <connectiondefinition-instance>
     <name>MyCF</name>
     <config-property-setting
name="channel">SYSTEM.DEF.SVRCONN</config-property-setting>
     <config-property-setting
name="queueManager">MY_QM</config-property-setting>
     <config-property-setting
name="hostName">iceman.hursley.ibm.com</config-property-setting>
     <config-property-setting
name="port">2020</config-property-setting>
     <config-property-setting
name="transportType">CLIENT</config-property-setting>
     <connectionmanager>
      <xa-transaction>
       <transaction-caching/>
      </xa-transaction>
      <single-pool>
       <match-one/>
      </single-pool>
     </connectionmanager>
    </connectiondefinition-instance>
   </connection-definition>
  </outbound-resourceadapter>
 </resourceadapter>
 <adminobject>
  <adminobject-interface>javax.jms.Queue</adminobject-interface>

<adminobject-class>com.ibm.mq.connector.outbound.MQQueueProxy</ adminobject-class>
  <adminobject-instance>
   <message-destination-name>TestQueue</message-destination-name>
   <config-property-setting
name="baseQueueManagerName">MY_QM</config-property-setting>
   <config-property-setting
name="baseQueueName">TestQueue</config-property-setting>
  </adminobject-instance>
 </adminobject>
 <adminobject>
  <adminobject-interface>javax.jms.Topic</adminobject-interface>

<adminobject-class>com.ibm.mq.connector.outbound.MQTopicProxy</ adminobject-class>
 </adminobject>
</connector>

If I try and deploy the wmq.jmsra.rar with this plan I get an
org.apache.geronimo.gbean.InvalidConfigurationException error, with a
helpful text output of "did not start for an unknown reason".

2010-01-18 17:06:51,905 ERROR [GBeanInstanceState] Error while starting;
GBean is now in the FAILED state:
abstractName="console.jms/test/1.0/rar? J2EEApplication =null,JCAConnectionFactory=MyCF,JCAResource=console.jms/test/1.0/ rar,ResourceAdapter=console.jms/test/1.0/ rar,ResourceAdapterModule=console.jms/test/1.0/ rar,j2eeType=JCAManagedConnectionFactory,name=MyCF"
java.lang.NullPointerException
        at
org .apache .geronimo .transaction .manager.WrapperNamedXAResource.recover(WrapperNamedXAResource.java: 74)
        at
org .apache .geronimo .transaction .manager.RecoveryImpl.recoverResourceManager(RecoveryImpl.java:98)
        at
org .apache .geronimo .transaction .manager .TransactionManagerImpl .recoverResourceManager(TransactionManagerImpl.java:352)
        at
org .apache .geronimo .connector .outbound .AbstractConnectionManager.doRecovery(AbstractConnectionManager.java: 70)
        at
org .apache .geronimo .connector .outbound .ManagedConnectionFactoryWrapper .doStart(ManagedConnectionFactoryWrapper.java:166)
        at
org .apache .geronimo .gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:998)
        at
org .apache .geronimo .gbean .runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java: 267)
        at
org .apache .geronimo .gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:101)
        at
org .apache .geronimo.gbean.runtime.GBeanInstance.start(GBeanInstance.java:541)
        at
org .apache .geronimo .gbean.runtime.GBeanDependency.attemptFullStart(GBeanDependency.java: 111)
        at
org .apache .geronimo .gbean.runtime.GBeanDependency.addTarget(GBeanDependency.java:146)
        at org.apache.geronimo.gbean.runtime.GBeanDependency
$1.running(GBeanDependency.java:120)
        at
org .apache .geronimo .kernel .basic .BasicLifecycleMonitor.fireRunningEvent(BasicLifecycleMonitor.java: 176)
        at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.access
$300(BasicLifecycleMonitor.java:44)
        at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor
$RawLifecycleBroadcaster.fireRunningEvent(BasicLifecycleMonitor.java: 254)
        at
org .apache .geronimo .gbean .runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java: 293)
        at
org .apache .geronimo .gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:101)
        at
org .apache .geronimo .gbean .runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java: 123)
        at
org .apache .geronimo .gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:555)
        at
org .apache .geronimo .kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:379)
        at
org .apache .geronimo .kernel .config .ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java: 456)
        at
org .apache .geronimo .kernel .config .KernelConfigurationManager.start(KernelConfigurationManager.java:188)
        at
org .apache .geronimo .kernel .config .SimpleConfigurationManager .startConfiguration(SimpleConfigurationManager.java:562)
        at
org .apache .geronimo .kernel .config .SimpleConfigurationManager .startConfiguration(SimpleConfigurationManager.java:543)
        at sun.reflect.GeneratedMethodAccessor329.invoke(Unknown Source)
        at
sun .reflect .DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:618)
        at
org .apache .geronimo .gbean .runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java: 34)
        at
org .apache .geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:124)
        at
org .apache .geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:832)
        at
org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java: 57)
        at
org .apache .geronimo .kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
        at
org .apache .geronimo .kernel .basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java: 96)
        at org.apache.geronimo.kernel.config.EditableConfigurationManager
$$EnhancerByCGLIB$$c9ded454.startConfiguration(<generated>)
        at
org .apache .geronimo .deployment .plugin .local .RedeployCommand.redeploySameConfiguration(RedeployCommand.java:229)
        at
org .apache .geronimo .deployment.plugin.local.RedeployCommand.run(RedeployCommand.java:101)
        at java.lang.Thread.run(Thread.java:810)
2010-01-18 17:06:51,924 ERROR [GBeanInstanceState] Error while starting;
GBean is now in the FAILED state:
abstractName="console.jms/test/1.0/rar? J2EEApplication =null,JCAConnectionFactory=MyCF,JCAResource=console.jms/test/1.0/ rar,ResourceAdapter=console.jms/test/1.0/ rar,ResourceAdapterModule=console.jms/test/1.0/ rar,j2eeType=JCAManagedConnectionFactory,name=MyCF"
java.lang.NullPointerException
        at
org .apache .geronimo .transaction .manager.WrapperNamedXAResource.recover(WrapperNamedXAResource.java: 74)
        at
org .apache .geronimo .transaction .manager.RecoveryImpl.recoverResourceManager(RecoveryImpl.java:98)
        at
org .apache .geronimo .transaction .manager .TransactionManagerImpl .recoverResourceManager(TransactionManagerImpl.java:352)
        at
org .apache .geronimo .connector .outbound .AbstractConnectionManager.doRecovery(AbstractConnectionManager.java: 70)
        at
org .apache .geronimo .connector .outbound .ManagedConnectionFactoryWrapper .doStart(ManagedConnectionFactoryWrapper.java:166)
        at
org .apache .geronimo .gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:998)
        at
org .apache .geronimo .gbean .runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java: 267)
        at
org .apache .geronimo .gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:101)
        at
org .apache .geronimo .gbean .runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java: 123)
        at
org .apache .geronimo .gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:555)
        at
org .apache .geronimo .kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:379)
        at
org .apache .geronimo .kernel .config .ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java: 456)
        at
org .apache .geronimo .kernel .config .KernelConfigurationManager.start(KernelConfigurationManager.java:188)
        at
org .apache .geronimo .kernel .config .SimpleConfigurationManager .startConfiguration(SimpleConfigurationManager.java:562)
        at
org .apache .geronimo .kernel .config .SimpleConfigurationManager .startConfiguration(SimpleConfigurationManager.java:543)
        at sun.reflect.GeneratedMethodAccessor329.invoke(Unknown Source)
        at
sun .reflect .DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:618)
        at
org .apache .geronimo .gbean .runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java: 34)
        at
org .apache .geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:124)
        at
org .apache .geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:832)
        at
org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java: 57)
        at
org .apache .geronimo .kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
        at
org .apache .geronimo .kernel .basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java: 96)
        at org.apache.geronimo.kernel.config.EditableConfigurationManager
$$EnhancerByCGLIB$$c9ded454.startConfiguration(<generated>)
        at
org .apache .geronimo .deployment .plugin .local .RedeployCommand.redeploySameConfiguration(RedeployCommand.java:229)
        at
org .apache .geronimo .deployment.plugin.local.RedeployCommand.run(RedeployCommand.java:101)
        at java.lang.Thread.run(Thread.java:810)
2010-01-18 17:06:52,050 ERROR [DeploymentPortlet] Deployment Failed
start of console.jms/test/1.0/rar failed
org.apache.geronimo.kernel.config.LifecycleException: start of
console.jms/test/1.0/rar failed
        at
org .apache .geronimo .kernel .config .SimpleConfigurationManager .startConfiguration(SimpleConfigurationManager.java:579)
        at
org .apache .geronimo .kernel .config .SimpleConfigurationManager .startConfiguration(SimpleConfigurationManager.java:543)
        at sun.reflect.GeneratedMethodAccessor329.invoke(Unknown Source)
        at
sun .reflect .DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:618)
        at
org .apache .geronimo .gbean .runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java: 34)
        at
org .apache .geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:124)
        at
org .apache .geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:832)
        at
org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java: 57)
        at
org .apache .geronimo .kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
        at
org .apache .geronimo .kernel .basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java: 96)
        at org.apache.geronimo.kernel.config.EditableConfigurationManager
$$EnhancerByCGLIB$$c9ded454.startConfiguration(<generated>)
        at
org .apache .geronimo .deployment .plugin .local .RedeployCommand.redeploySameConfiguration(RedeployCommand.java:229)
        at
org .apache .geronimo .deployment.plugin.local.RedeployCommand.run(RedeployCommand.java:101)
        at java.lang.Thread.run(Thread.java:810)
Caused by: org.apache.geronimo.kernel.config.InvalidConfigException:
Unknown start exception
        at
org .apache .geronimo .kernel .config .ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java: 522)
        at
org .apache .geronimo .kernel .config .KernelConfigurationManager.start(KernelConfigurationManager.java:188)
        at
org .apache .geronimo .kernel .config .SimpleConfigurationManager .startConfiguration(SimpleConfigurationManager.java:562)
        ... 14 more
Caused by: org.apache.geronimo.gbean.InvalidConfigurationException:
Configuration console.jms/test/1.0/rar failed to start due to the
following reasons:
 The service
J2EEApplication =null,JCAConnectionFactory=MyCF,JCAResource=console.jms/test/1.0/ rar,ResourceAdapter=console.jms/test/1.0/ rar,ResourceAdapterModule=console.jms/test/1.0/ rar,j2eeType=JCAManagedConnectionFactory,name=MyCF did not start for an unknown reason
 The service
J2EEApplication=null,JCAResource=console.jms/test/1.0/ rar,ResourceAdapter=console.jms/test/1.0/ rar,ResourceAdapterModule=console.jms/test/1.0/ rar,j2eeType=JCAConnectionFactory,name=MyCF did not start because console.jms/test/1.0/rar? J2EEApplication =null,JCAConnectionFactory=MyCF,JCAResource=console.jms/test/1.0/ rar,ResourceAdapter=console.jms/test/1.0/ rar,ResourceAdapterModule=console.jms/test/1.0/ rar,j2eeType=JCAManagedConnectionFactory,name=MyCF did not start.

        at
org .apache .geronimo .kernel .config .ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java: 485)
        ... 16 more

Interestingly if I use an incorrect port, or an incorrect queue manager
name, Geronimo will return claim to have successfully deployed the RA,
but in the console will spit out error messages about the queue manager
being unavailable, or queue manager name wrong.




The second method was to install the wmq.jmsra.rar into the Geronimo
repository, and then manually add the Connection Factory and the
destination objects, however it seems that the 'wizard' ignores some of
the properties I specify for the ConnectionFactory (it only output the
hostName and channel properties, but not the queueManager or port. So I
cannot use the wizard to create the required setup (even though it
claims success. I believe this to be a bug, would this be a Geronimo
defect, or something to raise with WebSphere MQ?

Am I going mad, or doing something drastically wrong? Google does not
throw and leads that have proved useful so far.....

Thanks

Rich



Reply via email to