Yes, please raise JIRA and attach your files. Thanks a lot.
Cheers, Guillaume Nodet On 6/28/06, William Blackburn <[EMAIL PROTECTED]> wrote:
Guillaume, I believe I have reproduced this issue outside of my own app, using a simple example based on the jms-binding example and the default config files in the 'conf/' directory of the 6/27 snapshot. I created a new example directory called 'jca-flow' and used the servicemix.xml file which I include below this message. Running with this file appears to load servicemix and establish a JCAFlow without error. I can then run the JMSClient from the jms-binding example with no problems. I then split the JMSclient into a sender and a listener, the listener just hangs on receive, while the sender fires 10 messages in a tight loop. On average, only six messages into the loop I begin to receive the error (note: I tweaked the 'blockingTimeout' in this run to 6000 so that I could be sure it was really loading my config, but the issue happens regardless of what I put into tx.xml): "ERROR - ActiveMQSession - error dispatching message: org.apache.servicemix.jbi.RuntimeJBIException: javax.jbi.messaging.MessagingException: javax.jms.JMSException: No ManagedConnections available within configured blocking timeout ( 6000 [ms] )" Folowed by a bunch of others. "WARN - XAEndpoint - Failed to rollback transaction: javax.transaction.SystemException javax.transaction.SystemException" "WARN - Transaction - Error ending association for XAResource [EMAIL PROTECTED]; transaction will roll back. XA error code: -7 javax.transaction.xa.XAException: The connection is already closed" "ERROR - Transaction - Unexpected exception rolling back [EMAIL PROTECTED]; continuing with rollback javax.transaction.xa.XAException: The connection is already closed" "ERROR - AbstractTransactionContext - Unable to roll back transaction java.lang.IllegalStateException: Status is STATUS_NO_TRANSACTION" I suppose it's still possible that I'm doing something to cause this, as I'm quite out of my depth, but I can reproduce this issue at will, I was wondering if I should log a JIRA with my logs and example-case? Thanks again, BJ <?xml version="1.0" encoding="UTF-8"?> <beans xmlns:sm="http://servicemix.apache.org/config/1.0" xmlns:my="http://servicemix.apache.org/demo/"> <sm:systemProperties> <property name="properties"> <map> <entry key="java.security.auth.login.config"> <bean class="org.springframework.util.ResourceUtils" factory-method="getFile"> <constructor-arg value="classpath:login.properties"/> </bean> </entry> </map> </property> </sm:systemProperties> <import resource="classpath:jmx.xml" /> <import resource="classpath:activemq.xml" /> <import resource="classpath:jndi.xml" /> <!-- the JBI container --> <sm:container id="jbi" rootDir="../../data/smx" MBeanServer="#mbeanServer" installationDirPath="../../install" deploymentDirPath="../../deploy" dumpStats="true" statsInterval="10" flowName="seda" transactionManager="#transactionManager" workManager="#workManager" depends-on="jndi"> <sm:broker> <sm:securedBroker authorizationMap="#authorizationMap"> <sm:flows> <!-- <sm:sedaFlow /> --> <sm:jcaFlow bootstrapContext="#bootstrapContext" connectionManager="#connectionManager" jmsURL="tcp://localhost:61616" /> </sm:flows> </sm:securedBroker> </sm:broker> <sm:activationSpecs> <!-- Subscribe to a JMS destination --> <sm:activationSpec componentName="inputReceiver" service="my:inputReceiver" destinationService="my:outputSender"> <sm:component> <bean class="org.apache.servicemix.components.jms.JmsInUsingJCABinding"> <property name="jcaContainer" ref="jencks"/> <property name="activationSpec"> <bean class="org.apache.activemq.ra.ActiveMQActivationSpec"> <property name="destination" value="demo.org.servicemix.source"/> <property name="destinationType" value="javax.jms.Topic"/> </bean> </property> </bean> </sm:component> </sm:activationSpec> <!-- Publish the result to a JMS destination --> <sm:activationSpec componentName="outputSender" service="my:outputSender"> <sm:component> <bean class="org.apache.servicemix.components.jms.JmsSenderComponent"> <property name="template"> <bean class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory"> <ref local="jmsFactory"/> </property> <property name="defaultDestinationName" value="demo.org.servicemix.result"/> <property name="pubSubDomain" value="true"/> </bean> </property> </bean> </sm:component> </sm:activationSpec> </sm:activationSpecs> </sm:container> <!-- the JCA container --> <bean id="jencks" class="org.jencks.JCAContainer" singleton="true"> <!-- lets use the default configuration of work manager and transaction manager--> <property name="bootstrapContext"> <bean class="org.jencks.factory.BootstrapContextFactoryBean"> <property name="threadPoolSize" value="25"/> </bean> </property> <!-- the JCA Resource Adapter --> <property name="resourceAdapter"> <bean id="activeMQResourceAdapter" class="org.apache.activemq.ra.ActiveMQResourceAdapter" singleton="true"> <property name="serverUrl" value="tcp://localhost: 61616"/> </bean> </property> </bean> <!-- message broker --> <!-- <bean id="broker" class="org.apache.activemq.xbean.BrokerFactoryBean"> <property name="config" value="classpath:activemq.xml"/> </bean> --> <!-- <bean id="transactionContextManager" class="org.jencks.factory.TransactionContextManagerFactoryBean"/> <bean id="transactionManager" class="org.jencks.factory.GeronimoTransactionManagerFactoryBean" /> --> <bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory"> <property name="connectionFactory"> <bean class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL"> <value>tcp://localhost:61616</value> </property> </bean> </property> </bean> </beans> On Jun 27, 2006, at 5:20 PM, William Blackburn wrote: > Thanks Guillaume - this was the problem. > > I've got the JCAflow configuration deploying (I think) properly. > Judging by the error messages, my configuration is certainly > overwriting the defaults, but unfortunately, the condition is even > worse than if I had just left it alone. I can't send more than a > couple messages in a tight loop before I get the "no managed > connections available" error, even with the blocking timeout > tweaked up to 6 full seconds or so and max connections at 16. Once > this happens, everything pretty much locks up. Its as if the > connections stop being returned to the pool. > > Later on in this cascade of exceptions, I'll see: > > ERROR [AbstractTransactionContext:rollbackAndThrow] Unable to roll > back transaction > java.lang.IllegalStateException: Status is STATUS_NO_TRANSACTION > at > org.apache.geronimo.transaction.manager.TransactionImpl.rollback > (TransactionImpl.java:438) > at > org.apache.geronimo.transaction.context.InheritableTransactionContext. > rollbackAndThrow(InheritableTransactionContext.java:308) > at > org.apache.geronimo.transaction.context.InheritableTransactionContext. > complete(InheritableTransactionContext.java:199) > at > org.apache.geronimo.transaction.context.InheritableTransactionContext. > rollback(InheritableTransactionContext.java:152) > at > org.apache.geronimo.transaction.context.GeronimoTransactionManager.ro. > .. > > This surprised me, as I have autoEnlistInTransaction="true" > > Then still later, I'll see > > WARN [XAEndpoint:release] Failed to rollback transaction: > javax.transaction.SystemException > javax.transaction.SystemException > at > org.apache.geronimo.transaction.manager.TransactionImpl.rollbackResour > ces(TransactionImpl.java:546) > at > org.apache.geronimo.transaction.manager.TransactionImpl.rollback > (TransactionImpl.java:446) > at > org.apache.geronimo.transaction.manager.TransactionManagerImpl.rollbac > k(TransactionManagerImpl.java:155) > at > org.apache.geronimo.transaction.context.InheritableTransactionContext. > isRolledback(InheritableTransactionContext.java:283) > at org.apache.geronimo.transaction.context.Inherit... > > Then I'll see this null pointer exception, which stumps me, though > I admit I have not looked at the activemq source: > > ERROR [ServerSessionPoolImpl:removeFromPool] Error redispatching > unconsumed messages from stale session > java.lang.NullPointerException > at > org.apache.activemq.ra.ServerSessionPoolImpl.createServerSessionImpl > (ServerSessionPoolImpl.java:60) > at > org.apache.activemq.ra.ServerSessionPoolImpl.getServerSession > (ServerSessionPoolImpl.java:113) > at > org.apache.activemq.ra.ServerSessionPoolImpl.dispatchToSession > (ServerSessionPoolImpl.java:135) > at > org.apache.activemq.ra.ServerSessionPoolImpl.removeFromPool > (ServerSessionPoolImpl.java:175) > at org.apache.activemq.ra.ServerSessionImpl.run > (ServerSessionImpl.java:177) > at org.apache.geronimo.connector.work.WorkerContext.run > (WorkerContext.java:291) > at EDU.oswego.cs.dl.util.concurrent.PooledExecutor > $Worker.run(Unknown Source) > at java.lang.Thread.run(Thread.java:613) > Thread-68 2006-06-27 16:13:59,558 WARN [Transaction:endResources] > Error ending association for XAResource > [EMAIL PROTECTED]; transaction > will roll back. XA error code: -7 > javax.transaction.xa.XAException: The connection is already closed > at org.apache.activemq.TransactionContext.toXAException > (TransactionContext.java:589) > at org.apache.activemq.TransactionContext.setXid > (TransactionContext.java:554) > at org.apache.activemq.TransactionContext.end > (TransactionContext.java:327) > at org.apache.activemq.ra.LocalAndXATransaction.end > (LocalAndXATransaction.java:89) > at > org.apache.geronimo.transaction.manager.TransactionImpl.endResources > (TransactionImpl.java:524) > at org.apache.geronimo.transaction.manager.Tra > > > At this point I still don't know for sure if something I'm doing > with my webapp-based deployment is causing all the trouble, so I > plan on creating a simple test case to try and reproduce the issue > in a standalone instance of servicemix. > > Thanks for all your help so far, > > B.J. > > > > On Jun 27, 2006, at 3:29 PM, Guillaume Nodet wrote: > >> Yes. Unfortunately a bug has slipped in xbean version. >> See http://issues.apache.org/jira/browse/XBEAN-21 and >> https://issues.apache.org/activemq/browse/SM-458 >> >> You have to use >> org/apache/servicemix/xbean/XmlWebApplicationContext.java<http:// >> svn.apache.org/repos/asf/incubator/servicemix/trunk/servicemix- >> core/src/main/java/org/apache/servicemix/xbean/ >> XmlWebApplicationContext.java>instead >> of org\apache\xbean\spring\context\XmlWebApplicationContext >> >> Cheers, >> Guillaume Nodet >> >> On 6/27/06, William Blackburn <[EMAIL PROTECTED]> wrote: >>> >>> Thanks Guillaume, >>> >>> I understand this now, but my snapshot (6/16/2006) does not >>> appear to >>> have the xbean definitions for sm:defaultBroker, etc. When I >>> sttempted to configure like the example you cited, s I got a >>> classdefnotfound error when I tried to run. So I tried to convert it >>> to standard spring bean defininitions, but no matter what I tried, >>> I'm pretty sure my flows were not properly defined, as I got: >>> "MessagingException: Unable to choose a flow for exchange" >>> >>> I then decided to update our app to the latest snapshot (6/27/2006) >>> but now our app (which is deployed in Tomcat as a webapp) won;t >>> deploy at all. I get this from Spring (I notice we've moved to >>> 2.0 at >>> some time since my last snapshot): >>> >>> 10:47:51,843 ERROR [ContextLoader:initWebApplicationContext] Context >>> initialization failed >>> java.lang.IllegalStateException: Could not find valid implementation >>> for: 2.0-m5 >>> at >>> org.apache.xbean.spring.context.XmlWebApplicationContext.createBeanD >>> efin >>> itionReader(XmlWebApplicationContext.java:84) >>> at >>> org.apache.xbean.spring.context.XmlWebApplicationContext.loadBeanDef >>> init >>> ions(XmlWebApplicationContext.java:63) >>> at >>> org.springframework.context.support.AbstractRefreshableApplicationCo >>> ntex >>> t.refreshBeanFactory(AbstractRefreshableApplicationContext.java:89) >>> >>> >>> Is there something special I have to do to get this working under >>> Spring-2.0 ? I checked out the examples in the latest dist and >>> nothing seems to have changed and Spring claims backward >>> compatibility with 1.2.x. I'm at a complete standstill, so any help >>> you can offer will be much appreciated. >>> >>> Thanks again, >>> >>> B.J. >>> >>> >>> >>> >>> On Jun 27, 2006, at 12:03 AM, Guillaume Nodet wrote: >>> >>> > Sorry, I forgot to say that you should configure the jca flow >>> using >>> > the >>> > syntax used in >>> > http://svn.apache.org/viewvc/incubator/servicemix/trunk/apache- >>> > servicemix/src/main/release/conf/servicemix.xml? >>> > revision=415380&view=markupso >>> > that you can change the parameters, else all values will be >>> defaulted. >>> > >>> > Cheers, >>> > Guillaume Nodet >>> > >>> > On 6/27/06, William Blackburn <[EMAIL PROTECTED]> wrote: >>> >> >>> >> Guillaume, please forgive me for being so dense, but I can't >>> seem to >>> >> use your advice to solve my problem. The error still occurs >>> and still >>> >> indicates the blocking timeout is 100ms. I must not be >>> incorporating >>> >> the config from tx.xml properly >>> >> >>> >> First - I am using the snapshot from 6/16 - is this new enough? >>> >> >>> >> I simply replaced my current declarations of >>> TransactionManager and >>> >> TransactionContectmanager with the entire tx.xml config >>> >> >>> >> My JCAContainer config now looks like: >>> >> >>> >> <bean id="jencks" class="org.jencks.JCAContainer" >>> >> singleton="true"> >>> >> <property name="bootstrapContext" >>> ref="bootstrapContext" /> >>> >> <!-- lets use the default configuration of work >>> manager and >>> >> transaction manager--> >>> >> <!-- >>> >> <property name="bootstrapContext"> >>> >> <bean >>> >> >>> >> class="org.jencks.factory.BootstrapContextFactoryBean"> >>> >> <property name="threadPoolSize" value="25" /> >>> >> </bean> >>> >> </property> >>> >> --> >>> >> <!-- the JCA Resource Adapter --> >>> >> <property name="resourceAdapter"> >>> >> <bean id="activeMQResourceAdapter" >>> >> >>> >> class="org.apache.activemq.ra.ActiveMQResourceAdapter" >>> >> singleton="true"> >>> >> <property name="serverUrl" >>> >> value="tcp://localhost:61616" /> >>> >> </bean> >>> >> </property> >>> >> </bean> >>> >> >>> >> >>> >> >>> >> >>> >> On Jun 26, 2006, at 2:12 PM, Guillaume Nodet wrote: >>> >> >>> >> > In the latest servicemix distribution, the jencks jca >>> container is >>> >> > already >>> >> > configured. >>> >> > You may find easier to override the parameters (or copy/paste) >>> >> in the >>> >> > tx.xmlfile. >>> >> > See the poolingSupport bean in >>> >> > http://svn.apache.org/viewvc/incubator/servicemix/trunk/apache- >>> >> > servicemix/src/main/release/conf/tx.xml? >>> revision=415380&view=markup >>> >> > >>> >> > Cheers >>> >> > Guillaume Nodet >>> >> > >>> >> > On 6/26/06, William Blackburn <[EMAIL PROTECTED]> wrote: >>> >> >> >>> >> >> This morning I did a rudimentary load test of our application, >>> >> just >>> >> >> fired 50 messages in rapid sequence via JMS to the first >>> >> component in >>> >> >> a 'chain' of components using JCA flow. Approx 20 messages >>> into >>> >> the >>> >> >> test, I got the following error, for each of the remaining >>> >> messages. >>> >> >> >>> >> >> >>> >> >> 09:35:32,034 ERROR [JCAFlow:doRouting] Failed to send >>> exchange: >>> >> >> MessageExchange[internal JMS Network >>> >> >> javax.jms.JMSException: No ManagedConnections available within >>> >> >> configured blocking timeout ( 100 [ms] ) >>> >> >> at >>> >> >> >>> org.apache.activemq.ra.ActiveMQConnectionFactory.createConnection >>> >> >> (ActiveMQConnectionFactory.java:96) >>> >> >> at >>> >> >> >>> org.apache.activemq.ra.ActiveMQConnectionFactory.createConnection >>> >> >> (ActiveMQConnectionFactory.java:65) >>> >> >> at >>> >> >> org.apache.servicemix.jbi.nmr.flow.jca.JCAFlow.sendJmsMessage >>> >> >> (JCAFlow.java:700) >>> >> >> ... >>> >> >> >>> >> >> >>> >> >> I've been studying the Servicemix and ActiveMQ docs, >>> looking for >>> >> >> settings (under the JCAFlow or the ActiveMQ ConnectionFactory) >>> >> that >>> >> >> would help me increase the number of connections and/or the >>> 100ms >>> >> >> timeout value, but I don't know exactly what I'm looking for, >>> >> so I'm >>> >> >> stumped. >>> >> >> >>> >> >> the applicable bits from my servicemix.xml file are: >>> >> >> >>> >> >> <sm:container id="jbi" rootDir="#rootDir" >>> useMBeanServer="true" >>> >> >> createMBeanServer="false" >>> >> installationDirPath="#installDir" >>> >> >> deploymentDirPath="#deployDir" flowName="jca? >>> >> jmsURL=tcp:// >>> >> >> localhost:61616" >>> >> >> autoEnlistInTransaction="true" persistent="true" >>> >> >> monitorInstallationDirectory="true" dumpStats="true" >>> >> >> statsInterval="10" >>> >> transactionManager="#transactionManager" >>> >> >> depends-on="broker"> >>> >> >> >>> >> >> ...other stuff... >>> >> >> >>> >> >> <!-- the JCA container --> >>> >> >> <bean id="jencks" class="org.jencks.JCAContainer" >>> >> >> singleton="true"> >>> >> >> >>> >> >> <!-- lets use the default configuration of work >>> >> manager and >>> >> >> transaction manager--> >>> >> >> <property name="bootstrapContext"> >>> >> >> <bean >>> >> >> >>> >> >> class="org.jencks.factory.BootstrapContextFactoryBean"> >>> >> >> <property name="threadPoolSize" value="25" /> >>> >> >> </bean> >>> >> >> </property> >>> >> >> >>> >> >> <!-- the JCA Resource Adapter --> >>> >> >> <property name="resourceAdapter"> >>> >> >> <bean id="activeMQResourceAdapter" >>> >> >> >>> >> >> class="org.apache.activemq.ra.ActiveMQResourceAdapter" >>> >> >> singleton="true"> >>> >> >> <property name="serverUrl" >>> >> >> value="tcp://localhost:61616" /> >>> >> >> </bean> >>> >> >> </property> >>> >> >> </bean> >>> >> >> >>> >> >> <bean id="broker" >>> >> >> class="org.apache.activemq.xbean.BrokerFactoryBean"> >>> >> >> <property name="config" >>> value="classpath:activemq.xml"/> >>> >> >> </bean> >>> >> >> >>> >> >> <bean id="transactionContextManager" >>> >> >> >>> class="org.jencks.factory.TransactionContextManagerFactoryBean"/> >>> >> >> <bean id="transactionManager" >>> >> >> >>> >> >>> class="org.jencks.factory.GeronimoTransactionManagerFactoryBean" /> >>> >> >> >>> >> >> <bean id="jmsFactory" depends-on="broker" >>> >> >> >>> class="org.apache.activemq.pool.PooledConnectionFactory"> >>> >> >> <property name="connectionFactory"> >>> >> >> <bean >>> >> >> >>> >> >> class="org.apache.activemq.ActiveMQConnectionFactory"> >>> >> >> <constructor-arg value="tcp://localhost: >>> 61616" /> >>> >> >> </bean> >>> >> >> </property> >>> >> >> </bean> >>> >> >> >>> >> >> My activemq.xml file looks like: >>> >> >> >>> >> >> <beans xmlns="http://activemq.org/config/1.0"> >>> >> >> <broker id="broker" useJmx="false"> >>> >> >> >>> >> >> <persistenceAdapter> >>> >> >> <journaledJDBC journalLogFiles="5" >>> >> >> dataDirectory="#dataDir" dataSource="#postgres-ds"/> >>> >> >> </persistenceAdapter> >>> >> >> >>> >> >> <transportConnectors> >>> >> >> <transportConnector uri="tcp://localhost:61616"/> >>> >> >> </transportConnectors> >>> >> >> >>> >> >> >>> >> >> </broker> >>> >> >> >>> >> >> <!-- This xbean configuration file supports all the >>> standard >>> >> >> spring xml configuration options --> >>> >> >> >>> >> >> <!-- Postgres DataSource Sample Setup --> >>> >> >> <bean id="postgres-ds" >>> >> >> class="org.postgresql.ds.PGPoolingDataSource"> >>> >> >> <property name="serverName" value="localhost"/> >>> >> >> <property name="databaseName" value="activemq"/> >>> >> >> <property name="portNumber" value="0"/> >>> >> >> <property name="dataSourceName" value="postgres"/> >>> >> >> <property name="initialConnections" value="1"/> >>> >> >> <property name="maxConnections" value="10"/> >>> >> >> <property name="user" value="activemq"/> >>> >> >> <property name="password" value="activemq"/> >>> >> >> <!-- >>> >> >> <property name="user" value="cmroot"/> >>> >> >> <property name="password" value="22cmroot"/> >>> >> >> --> >>> >> >> </bean> >>> >> >> >>> >> >> >>> >> >> >>> >> >> <!-- Directories relative to web app --> >>> >> >> <bean id="servletContext" >>> >> >> >>> >> >>> class="org.springframework.web.context.support.ServletContextFactory >>> B >>> >> >> ean >>> >> >> " /> >>> >> >> <bean id="dataDir" >>> >> class="org.springframework.web.util.WebUtils" >>> >> >> factory-method="getRealPath"> >>> >> >> <constructor-arg ref="servletContext" /> >>> >> >> <constructor-arg value="/data" /> >>> >> >> </bean> >>> >> >> >>> >> >> </beans> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >>> >> >>> >>> >
