[jboss-user] [JCA/JBoss] - Configuring JCA 1.5 jms-ra.rar for WSMQ

mvilot do-not-reply at jboss.com
Mon Aug 21 08:25:41 EDT 2006


Looks like the published code is incorrect.

Configuration:  jboss-4.0.4.GA with WSMQ 6.0, both running on Windoze.  JBoss installer summary:  Chosen installation packsjmx-core
  | minimal
  | binding-service
  | client-deployer-service
  | dynclassloader-service.xml
  | ear-deployer
  | ejb-timer-service
  | ejb-deployer
  | hsqldb-ds
  | jboss-local-jdbc.rar
  | javamail
  | jbossretro
  | jbossws14
  | jca-service
  | jdbc-metadata-service
  | jbossmq-service
  | jms-asf-rar
  | jms-injvm-invoker
  | jms-socket-invoker
  | jmx-console
  | invokers-service
  | jmx-invoker-service
  | jta-service
  | usertx-service
  | mail-inflow-adaptor
  | naming
  | security
  | war-deployer
  | jboss-remoting
  | 
  | Configured the -ds.xml per http://wiki.jboss.org/wiki/Wiki.jsp?page=IntegrationWithWebSphereMQSeries
  | Compiled and deployed the .sar:INFO  [ResponseQueue] Bound to JNDI name: queue/ResponseQueue
  |   | INFO  [RequestQueue] Bound to JNDI name: queue/RequestQueue
  |   | INFO  [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=ConnectionFactoryBinding
  |   | ,name=WSMQJms' to JNDI name 'java:WSMQJms'
  | From the jmx-console, JNDIView 1st throws the following exception chain (no HA  or EJB cache-invalidation-service support in this configuration):
  | ERROR [JNDIView] JNDIView.getHAJndiAttributes() failed
  |   | java.lang.NullPointerException: name cannot be null
  |   |         at javax.management.ObjectName.construct(ObjectName.java:342)
  |   |         at javax.management.ObjectName.<init>(ObjectName.java:1304)
  |   |         at org.jboss.naming.JNDIView.getHAJndiAttributes(JNDIView.java:836)
  |   |         at org.jboss.naming.JNDIView.getHAUrl(JNDIView.java:811)
  |   |         at org.jboss.naming.JNDIView.list(JNDIView.java:193)
  |   |         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  |   |         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  |   |         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |   |         at java.lang.reflect.Method.invoke(Method.java:585)
  |   |         at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
  |   |         at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
  |   |         at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
  |   |         at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
  |   |         at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
  |   |         at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
  |   |         at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
  |   |         at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
  |   |         at org.jboss.jmx.adaptor.control.Server.invokeOpByName(Server.java:258)
  |   |         at org.jboss.jmx.adaptor.html.HtmlAdaptorServlet.invokeOpByName(HtmlAdaptorServlet.java:287)
  |   |         at org.jboss.jmx.adaptor.html.HtmlAdaptorServlet.processRequest(HtmlAdaptorServlet.java:102)
  |   |         at org.jboss.jmx.adaptor.html.HtmlAdaptorServlet.doGet(HtmlAdaptorServlet.java:77)
  |   |         at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
  |   |         at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
  |   |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
  |   |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |   |         at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
  |   |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |   |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |   |         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
  |   |         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
  |   |         at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
  |   |         at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
  |   |         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
  |   |         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
  |   |         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
  |   |         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
  |   |         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
  |   |         at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java
  |   | :664)
  |   |         at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
  |   |         at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
  |   |         at java.lang.Thread.run(Thread.java:595)
  | (An annoyance that should be fixed), then displays a reasonable JNDI tree:
  | java: Namespace
  |   |   +- XAConnectionFactory (class: org.jboss.mq.SpyXAConnectionFactory)
  |   |   +- DefaultDS (class: org.jboss.resource.adapter.jdbc.WrapperDataSource)
  |   |   +- SecurityProxyFactory (class: org.jboss.security.SubjectSecurityProxyFactory)
  |   |   +- WSMQJms (class: org.jboss.resource.adapter.jms.JmsConnectionFactoryImpl)
  |   |   +- DefaultJMSProvider (class: org.jboss.jms.jndi.JNDIProviderAdapter)
  |   |   +- WSMQJMSProvider (class: org.jboss.jms.jndi.JNDIProviderAdapter)
  |   |   +- comp (class: javax.naming.Context)
  |   |   +- JmsXA (class: org.jboss.resource.adapter.jms.JmsConnectionFactoryImpl)
  |   |   +- ConnectionFactory (class: org.jboss.mq.SpyConnectionFactory)
  |   |   +- jaas (class: javax.naming.Context)
  |   |   |   +- other (class: org.jboss.security.plugins.SecurityDomainContext)
  |   |   |   +- HsqlDbRealm (class: org.jboss.security.plugins.SecurityDomainContext)
  |   |   |   +- jbossmq (class: org.jboss.security.plugins.SecurityDomainContext)
  |   |   |   +- JmsXARealm (class: org.jboss.security.plugins.SecurityDomainContext)
  |   |   +- timedCacheFactory (class: javax.naming.Context)
  |   | Failed to lookup: timedCacheFactory, errmsg=org.jboss.util.TimedCachePolicy
  |   |   +- TransactionPropagationContextExporter (class: org.jboss.tm.TransactionPropagationContextFactory)
  |   |   +- StdJMSPool (class: org.jboss.jms.asf.StdServerSessionPoolFactory)
  |   |   +- TransactionPropagationContextImporter (class: org.jboss.tm.TransactionPropagationContextImporter)
  |   |   +- TransactionManager (class: org.jboss.tm.TxManager)
  |   | 
  |   | Global JNDI Namespace
  |   |   +- XAConnectionFactory (class: org.jboss.mq.SpyXAConnectionFactory)
  |   |   +- WSMQQueueConnectionFactory (class: com.ibm.mq.jms.MQQueueConnectionFactory)
  |   |   +- wsmq (class: org.jnp.interfaces.NamingContext)
  |   |   |   +- ResponseQueue (class: com.ibm.mq.jms.MQQueue)
  |   |   |   +- RequestQueue (class: com.ibm.mq.jms.MQQueue)
  |   |   +- TopicConnectionFactory (class: org.jboss.naming.LinkRefPair)
  |   |   +- EventDispatcher (class: org.jboss.ws.eventing.mgmt.DispatcherDelegate)
  |   |   +- UserTransactionSessionFactory (proxy: $Proxy35 implements interface org.jboss.tm.usertx.interfaces.UserTransactionSessionFactory)
  |   |   +- UIL2ConnectionFactory[link -> ConnectionFactory] (class: javax.naming.LinkRef)
  |   |   +- UIL2XAConnectionFactory[link -> XAConnectionFactory] (class: javax.naming.LinkRef)
  |   |   +- QueueConnectionFactory (class: org.jboss.naming.LinkRefPair)
  |   |   +- queue (class: org.jnp.interfaces.NamingContext)
  |   |   |   +- ResponseQueue (class: org.jboss.mq.SpyQueue)
  |   |   |   +- RequestQueue (class: org.jboss.mq.SpyQueue)
  |   |   |   +- DLQ (class: org.jboss.mq.SpyQueue)
  |   |   +- ConnectionFactory (class: org.jboss.mq.SpyConnectionFactory)
  |   |   +- UserTransaction (class: org.jboss.tm.usertx.client.ClientUserTransaction)
  |   |   +- jmx (class: org.jnp.interfaces.NamingContext)
  |   |   |   +- invoker (class: org.jnp.interfaces.NamingContext)
  |   |   |   |   +- RMIAdaptor (proxy: $Proxy29 implements interface org.jboss.jmx.adaptor.rmi.RMIAdaptor,interface org.jboss.jmx.adaptor.rmi.RMIAdaptorExt)
  |   |   |   +- rmi (class: org.jnp.interfaces.NamingContext)
  |   |   |   |   +- RMIAdaptor[link -> jmx/invoker/RMIAdaptor] (class: javax.naming.LinkRef)
  |   |   +- UILXAConnectionFactory[link -> XAConnectionFactory] (class: javax.naming.LinkRef)
  |   |   +- UILConnectionFactory[link -> ConnectionFactory] (class: javax.naming.LinkRef)
  | Now, here's the fun part.  Deploying the MDB provokes the following:
  | INFO  [EjbModule] Deploying WSMQMDB
  |   | WARN  [JMSContainerInvoker] JMS provider failure detected for WSMQMDB
  |   | org.jboss.deployment.DeploymentException: Error during queue setup; - nested throwable: (java.lang.ClassCastException: o
  |   | rg.jboss.resource.adapter.jms.JmsConnectionFactoryImpl)
  |   |         at org.jboss.deployment.DeploymentException.rethrowAsDeploymentException(DeploymentException.java:53)
  |   |         at org.jboss.ejb.plugins.jms.JMSContainerInvoker.innerStartDelivery(JMSContainerInvoker.java:811)
  |   |         at org.jboss.ejb.plugins.jms.JMSContainerInvoker.startService(JMSContainerInvoker.java:839)
  |   | ...
  | The key settings are in the -ds.xml <connection-factories> tag:  <mbean code="org.jboss.jms.jndi.JMSProviderLoader"
  |   | 	 name="jboss.mq:service=JMSProviderLoader,name=WSMQJMSProvider">
  |   |     <attribute name="ProviderName">WSMQJMSProvider</attribute>
  |   |     <attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute>
  |   |     <!-- The queue connection factory -->
  |   |     <attribute name="QueueFactoryRef">WSMQQueueConnectionFactory</attribute>
  |   |     <!-- The topic factory -->
  |   |     <attribute name="TopicFactoryRef">WSMQTopicConnectionFactory</attribute>
  |   |   </mbean>
  |   | 
  |   |   <no-tx-connection-factory>
  |   |     <jndi-name>WSMQJms</jndi-name>
  |   |     <rar-name>jms-ra.rar</rar-name> <!-- JCA 1.5  -->
  |   |     <use-java-context>true</use-java-context>
  |   |     <connection-definition>org.jboss.resource.adapter.jms.JmsConnectionFactory</connection-definition>
  |   |     <!-- ClassCastException:  org.jboss.resource.adapter.jms.JmsConnectionFactoryImpl -->
  |   |     <max-pool-size>20</max-pool-size>
  |   |     <!-- These are JBoss-specific properties for a ManagedConnectionFactory -->
  |   |     <!-- MUST MATCH Mbean JNDI NAME (overrides default "java:/DefaultJMSProvider") -->
  |   |     <config-property name="JmsProviderAdapterJNDI" type="java.lang.String">WSMQJMSProvider</config-property>
  |   |     <config-property name="SessionDefaultType" type="java.lang.String">javax.jms.Queue</config-property>
  |   |     <config-property name="UserName" type="java.lang.String">User</config-property>
  |   |     <config-property name="Password" type="java.lang.String">password</config-property>
  |   |   </no-tx-connection-factory>
  | Looks like the JmsConnectionFactoryImpl class _does_ exist in the jms-ra.jar deployed inside the jms-ra.rar.
  | 
  | Any ideas why the ClassCastException is happening?
  | 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3966428#3966428

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3966428



More information about the jboss-user mailing list