| Summary: | REGRESSION: JCA related failure deploying jBPM quickstarts on system using IBM MQ for JMS provider | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | [JBoss] JBoss Enterprise SOA Platform 4 | Reporter: | Len DiMaggio <ldimaggi> | ||||||||||||||||
| Component: | JBossESB, JBPM - within SOA, Examples | Assignee: | Kevin Conner <kevin.conner> | ||||||||||||||||
| Status: | CLOSED NEXTRELEASE | QA Contact: | |||||||||||||||||
| Severity: | high | Docs Contact: | |||||||||||||||||
| Priority: | high | ||||||||||||||||||
| Version: | 4.3 CP01 | Keywords: | Regression, TestBlocker | ||||||||||||||||
| Target Milestone: | --- | ||||||||||||||||||
| Target Release: | 4.3 CP01 | ||||||||||||||||||
| Hardware: | Unspecified | ||||||||||||||||||
| OS: | Unspecified | ||||||||||||||||||
| URL: | http://jira.jboss.org/jira/browse/SOA-1247 | ||||||||||||||||||
| Whiteboard: | |||||||||||||||||||
| Fixed In Version: | Doc Type: | Bug Fix | |||||||||||||||||
| Doc Text: | Story Points: | --- | |||||||||||||||||
| Clone Of: | Environment: |
4.3 CP01 CR5
|
|||||||||||||||||
| Last Closed: | 2009-04-20 16:00:10 UTC | Type: | Bug | ||||||||||||||||
| Regression: | --- | Mount Type: | --- | ||||||||||||||||
| Documentation: | --- | CRM: | |||||||||||||||||
| Verified Versions: | Category: | --- | |||||||||||||||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||||||||||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||||||||||||||
| Bug Depends On: | 778811, 778812 | ||||||||||||||||||
| Bug Blocks: | |||||||||||||||||||
| Attachments: |
|
||||||||||||||||||
Attachment: Added: bpm_orchestration1.tar Attachment: Added: server.log.gz Trying a diff approach to configuring this... http://www.jboss.org/community/docs/DOC-12535 The second (the recommended approach) for integration does not work as the deployment fails with the given exception
2009-03-25 04:54:36,573 DEBUG [org.jboss.soa.esb.listeners.message.MessageAwareListener] Courier Exception
org.jboss.soa.esb.couriers.CourierException: Unable to create Message Consumer
at org.jboss.internal.soa.esb.couriers.JmsCourier.pickupPayload(JmsCourier.java:419)
at org.jboss.internal.soa.esb.couriers.JmsCourier.pickup(JmsCourier.java:399)
at org.jboss.internal.soa.esb.couriers.TwoWayCourierImpl.pickup(TwoWayCourierImpl.java:228)
at org.jboss.internal.soa.esb.couriers.TwoWayCourierImpl.pickup(TwoWayCourierImpl.java:204)
at org.jboss.soa.esb.listeners.message.MessageAwareListener.waitForEventAndProcess(MessageAwareListener.java:294)
at org.jboss.soa.esb.listeners.message.MessageAwareListener.doRun(MessageAwareListener.java:250)
at org.jboss.soa.esb.listeners.lifecycle.AbstractThreadedManagedLifecycle.run(AbstractThreadedManagedLifecycle.java:115)
at java.lang.Thread.run(Thread.java:595)
Caused by: org.jboss.soa.esb.couriers.CourierServiceBindException: Failed to get JMS Session from pool.
at org.jboss.internal.soa.esb.couriers.JmsCourier.getJmsSession(JmsCourier.java:162)
at org.jboss.internal.soa.esb.couriers.JmsCourier.createMessageConsumer(JmsCourier.java:497)
at org.jboss.internal.soa.esb.couriers.JmsCourier.pickupPayload(JmsCourier.java:411)
... 7 more
Caused by: javax.jms.JMSException: MQJCA1018:Only one session per connection allowed.
at com.ibm.mq.connector.services.JCAExceptionBuilder.buildException(JCAExceptionBuilder.java:113)
at com.ibm.mq.connector.services.JCAExceptionBuilder.buildException(JCAExceptionBuilder.java:78)
at com.ibm.mq.connector.outbound.ConnectionWrapper.createSession(ConnectionWrapper.java:96)
at org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool$1.call(JmsConnectionPool.java:172)
at org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool$1.call(JmsConnectionPool.java:165)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
at java.util.concurrent.FutureTask.run(FutureTask.java:123)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
... 1 more
Thus if the older approach does not work on CP and the new one does not work too we cannot integrate SOA-P with WSMQ at all now
Attachment: Added: queue-service.xml Attachment: Added: bpmo1-wsmq-second-approach.tar Attachment: Added: wsmq-jms-ds.xml I was involved with a WMQ related support request some time back: https://enterprise.redhat.com/issue-tracker/?module=issues&action=view&tid=245535&gid=1369&view_type=lifo50 It was a bit of a pain in the head to sort out, but we eventually got it working for them. As part of that, we had to write some WMQ specific code. I bundled all of this in a quickstart, which is attached here and on the case (helloworld_wmq.zip). Here were the comments I added, with the attachment, to the case (see Event posted 01-27-2009 10:05pm GMT by tfennell): -------------------------------------------------------------------------------------------------------------------------------- Hi guys. Here's another "installement" on this. It contains the JCA inflow changes. Everything in this QS is now using WMQ. Before building, please make sure the follow jars are in the lib folder: 1. dhbcore.jar 2. com.ibm.mqjms.jar 3. com.ibm.mq.jar Run "ant jarwrapper". It creates a jar containing the wrapper code. You need to copy this into the server lib (e.g. server/default/lib) and restart the server. This QS needs a few queues to be confgured on WMW: "WMQGATEWAY", "WMQESBAWARE" and "ACTION_REQUEST_2". Hope it helps. T. Attachment: Added: helloworld_wmq.zip Thanks Tm - That's interesting - the wiki page here: http://www.jboss.org/community/docs/DOC-12535 Explicitly said to remove these jars from the server/lib dir - to avoid class collisions... 1. dhbcore.jar 2. com.ibm.mqjms.jar 3. com.ibm.mq.jar Right, but before that, and related to it, it said "If migrating from an existing IBM WebSphere MQ installation on JBoss" ;) I think that comment is specific to those using the JCA adapter only... I think in our cause, we were also using WMQ through the JMS API (via the JMSRouter). So yes... you may not need them if you're using WMQ via JCA only. I've added this as a "known issue" to the release notes and referred people to http://www.jboss.org/community/docs/DOC-13455 as per the last comment Guys... did we try the quickstart I attached? I don't exactly remember why, but I know I had to add those jars to the server/lib. I think they were required there si as to use the JMSRouter (non-JCA). So as I said above, you may not need them *if you're using WMQ via JCA only*. Otherwise, I think they are needed. I second what Kev says there... what I provided there was just a quick fix to get the current codebase working with WMQ for that customer. I think that in order to support WMQ properly, we really need to go back over what I did there and break out a list of formal tasks re handling this properly, in a released version of the ESB. I had to do quite a bit of messing about to get it working. There's probably more than just the WMQInitialContextFactory. One or two issues I discovered, at the time, have since been fixed in the codebase, but there may be others in there that we need to loop back on. Link: Added: This issue depends SOA-1261 Link: Added: This issue depends SOA-1262 The issue you are seeing is a consequence of an assumption made in JMSEpr, that the destination name is the full path embedded within the URI. The destination being taken from that URI is, therefore, SYSTEM.DEF.SVRCONN/queue/pt_bpmo1_start_esb rather than queue/pt_bpmo1_start_esb. I will add this to the list of tasks needing to be done for MQ integration. Link: Added: This issue related SOA-1268 Files referenced in https://jira.jboss.org/jira/browse/SOA-1247?focusedCommentId=12460157#action_12460157 Attachment: Added: April1_SOA-1247.tar The bug we are currently seeing is the setting of maxMessages based on the thread count. The reason this used to work was because of a bug in the app server codebase which has since been fixed, setting maxMessages used to set maxSession :( The app server bug is JBPAPP-1045. We need to change our mappers to use maxSession instead of maxMessages. Link: Added: This issue depends JBESB-2510 JBESB-2510 covers the fix for this release. Link: Added: This issue depends JBPAPP-1045 Verified fixed in 4.3 CP01 CR6 - the quickstart now deploys - identically - with 4.3 GA and 4.3 CP01 In 4.3 CP01 CR6 Verified fixed in 4.3 CP01 CR6 Setting new "Affects Testing, Regression, Blocks Testing Fields" Setting new "Affects Testing, Regression, Blocks Testing Fields" Blocked Tests: Added: Testing with IBM MQ Affects Testing?: Added: [Regression?, Blocks Testing?] Re-closing after setting new "Affects Testing, Regression, Blocks Testing Fields" Edited to match changes in 'affects testing' fields (? character removed from field names for easier querying) Affects Testing: Removed: [Blocks Testing?, Regression?] Added: [Regression, Blocks Testing] |
Date of First Response: 2009-03-25 05:00:24 project_key: SOA Seeing this problem with 4.3 CP01 CR5 - deploying a jBPM quickstart modified to use IBM MQ - the problem is not being seen with the 4.3 GA bits. A stand alone test (bpm_orchestration1 in a tar file is attached. To recreate the error, deploy the quickstart archive to a SOA_P server. The salient part of the jboss-esb.xml file is: <jms-jca-provider name="Custom MQ" jndi-URL="localhost:1414/SYSTEM.DEF.SVRCONN" jndi-context-factory="com.ibm.mq.jms.context.WMQInitialContextFactory" jndi-pkg-prefix="org.jboss.naming:org.jnp.interfaces" providerAdapterJNDI="java:/WSMQProvider" connection-factory="ConnectionFactory" > server.log is attached - the JMSException is raised when the archive is deployed: ----------------- 2009-03-23 21:30:56,128 INFO [org.jboss.soa.esb.services.jbpm.actions.BpmProcessor] initialise() invoked - config=<action action="start_new_process_instance" actor="FrankSinatra" class="org.jboss.soa.esb.services.jbpm.actions.BpmProcessor" command="StartProcessInstanceCommand" process-definition-name="processDefinition2"> <mapping bpm="counter" esb="eVar1" value="45"/> <mapping bpm="theBody" esb="BODY_CONTENT"/> </action> 2009-03-23 21:30:57,939 WARN [org.jboss.resource.adapter.jms.inflow.JmsActivation] Failure in jms activation org.jboss.resource.adapter.jms.inflow.JmsActivationSpec@77d67cee(ra=org.jboss.resource.adapter.jms.JmsResourceAdapter@571cb4a6 destination=queue/pt_bpmo1_result destinationType=javax.jms.Queue tx=true durable=false reconnect=10 provider=java:/WSMQProvider user=null maxMessages=1 minSession=1 maxSession=15 keepAlive=60000 useDLQ=true DLQHandler=org.jboss.resource.adapter.jms.inflow.dlq.GenericDLQHandler DLQJndiName=queue/DLQ DLQUser=null DLQMaxResent=5) javax.jms.JMSException: MQJMS2005: failed to create MQQueueManager for 'localhost:ConnectionFactory' at com.ibm.mq.jms.services.ConfigEnvironment.newException(ConfigEnvironment.java:586) at com.ibm.mq.jms.MQConnection.createQM(MQConnection.java:2301) at com.ibm.mq.jms.MQConnection.createQMNonXA(MQConnection.java:1703) at com.ibm.mq.jms.MQQueueConnection.createQueueSession(MQQueueConnection.java:405) at com.ibm.mq.jms.MQQueueConnection.createQueueSession(MQQueueConnection.java:242) at com.ibm.mq.jms.MQQueueConnection.createSession(MQQueueConnection.java:589) at org.jboss.resource.adapter.jms.inflow.JmsServerSession.setup(JmsServerSession.java:115) at org.jboss.resource.adapter.jms.inflow.JmsServerSessionPool.setupSessions(JmsServerSessionPool.java:197) at org.jboss.resource.adapter.jms.inflow.JmsServerSessionPool.start(JmsServerSessionPool.java:88) at org.jboss.resource.adapter.jms.inflow.JmsActivation.setupSessionPool(JmsActivation.java:621) at org.jboss.resource.adapter.jms.inflow.JmsActivation.setup(JmsActivation.java:335) at org.jboss.resource.adapter.jms.inflow.JmsActivation$SetupActivation.run(JmsActivation.java:671) at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204) at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:756) at java.lang.Thread.run(Thread.java:595) -----------------