Hi, we're facing nearly the same problem I think... Here is my stack trace:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.activemq.xbean.XBeanBrokerService' defined in class path resource [activemq.xml]: Invocation of init method failed; nested exception is java.io.IOException: Cannot create PoolableConnectionFactory (I/O Exception: Got minus one from a read call) Caused by: java.io.IOException: Cannot create PoolableConnectionFactory (I/O Exception: Got minus one from a read call) at org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:45) at org.apache.activemq.store.jdbc.TransactionContext.getConnection(TransactionContext.java:61) at org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.createAdapter(JDBCPersistenceAdapter.java:294) at org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.getAdapter(JDBCPersistenceAdapter.java:249) at org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.start(JDBCPersistenceAdapter.java:155) at org.apache.activemq.store.journal.JournalPersistenceAdapter.start(JournalPersistenceAdapter.java:225) at org.apache.activemq.broker.BrokerService.createRegionBroker(BrokerService.java:1448) at org.apache.activemq.broker.BrokerService.createBroker(BrokerService.java:1400) at org.apache.activemq.broker.BrokerService.getBroker(BrokerService.java:513) at org.apache.activemq.broker.BrokerService.start(BrokerService.java:422) at org.apache.activemq.xbean.XBeanBrokerService.afterPropertiesSet(XBeanBrokerService.java:46) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1201) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1171) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:425) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:156) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:287) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352) at org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:64) at org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:52) at org.apache.activemq.xbean.XBeanBrokerFactory.createApplicationContext(XBeanBrokerFactory.java:91) at org.apache.activemq.xbean.XBeanBrokerFactory.createBroker(XBeanBrokerFactory.java:51) at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:71) at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:54) at activemqtest.ActivemqJunit.testFoobar(ActivemqJunit.java:90) at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (I/O Exception: Got minus one from a read call) at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:859) at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:544) at org.apache.activemq.store.jdbc.TransactionContext.getConnection(TransactionContext.java:54) ... 44 more Caused by: java.sql.SQLException: I/O Exception: Got minus one from a read call at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:74) at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:110) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:171) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:494) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:411) at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:490) at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:202) stop at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:474) at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:37) at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:290) at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:881) at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:855) ... 46 more java.lang.NullPointerException at activemqtest.ActivemqJunit.testFoobar(ActivemqJunit.java:102) at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) start at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) We faced this problem in our unit tests, so I broke down our action to the following code snippet: for(int x=0;x<numberOfRuns;x++){ try { URI activemqConfigurationUri = new URI("xbean:activemq.xml"); brokerService = BrokerFactory.createBroker(activemqConfigurationUri); System.out.println("Starting broker"); brokerService.start(); } catch (Exception e) { e.printStackTrace(); } try { System.out.println("stopping broker"); brokerService.stop(); brokerService.waitUntilStopped(); brokerService=null; } catch (JMSException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } So we are simply starting and stopping the broker. In our Oracle DB the number of INACTIVE connections rises until it explodes. But ONLY when we call this snippet as part of a unit test. When we run this as a simple java app, there is no problem, inactive connections are cleaned up properly. We also wrote a simple app that gets connections from dbcp and closes them again. There we have NO problem in a utest environment/simple java app. I looked into the activemq TransactionContext class and I saw nothing wrong. When debugging, connection.close and connection=null is executed. During a debug session, we also don't get the exception (due to pauses??). When I remove the breakpoints, inactive sessions explode again... activemqnewbie wrote: > > When I am executing a bulk load of data to Oracle, I intermittently > receive the following. Activemq publlishes 300 messages before > failing. If I run it again it may fail after publishing200 messages . Has > anyone seen this before? It appears that it is failing to create a > connection pool. > Seems prvious connections are not being closed.Is this a bug in activemq > or is it that am missing to specify some parametrs in my activemq.xml. > Below is my activemq.xml snippet. > Appreciate help on my query. > App uses: ActiveMq5,Oracle 10g > > <beans > xmlns="http://www.springframework.org/schema/beans" > xmlns:amq="http://activemq.org/config/1.0" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans-2.0.xsd > http://activemq.org/config/1.0 > http://activemq.apache.org/schema/activemq-core.xsd > http://activemq.apache.org/camel/schema/spring > http://activemq.apache.org/camel/schema/spring/camel-spring.xsd"> > > <!-- Allows us to use system properties as variables in this > configuration file --> > <bean > class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/> > > <broker xmlns="http://activemq.org/config/1.0" brokerName="localhost" > dataDirectory="${activemq.base}/data"> > > <!-- Destination specific policies using destination names or > wildcards --> > <destinationPolicy> > <policyMap> > <policyEntries> > > <policyEntry topic="SINFO.>" producerFlowControl="false" > memoryLimit="1mb"> > <dispatchPolicy> > <strictOrderDispatchPolicy/> > </dispatchPolicy> > <subscriptionRecoveryPolicy> > <lastImageSubscriptionRecoveryPolicy/> > </subscriptionRecoveryPolicy> > </policyEntry> > > </policyEntries> > </policyMap> > </destinationPolicy> > > > <!-- The transport connectors ActiveMQ will listen to --> > <transportConnectors> > <transportConnector name="openwire" uri="tcp://localhost:61616" > discoveryUri="multicast://default"/> > <transportConnector name="ssl" uri="ssl://localhost:61617"/> > <transportConnector name="stomp" uri="stomp://localhost:61613"/> > <transportConnector name="xmpp" uri="xmpp://localhost:61222"/> > </transportConnectors> > > <!-- The store and forward broker networks ActiveMQ will listen to --> > <networkConnectors> > <!-- by default just auto discover the other brokers --> > <networkConnector name="default-nc" uri="multicast://default"/> > </networkConnectors> > <persistenceAdapter> > <jdbcPersistenceAdapter dataSource="#oracle-ds"/> > </persistenceAdapter> > > > </broker> > > <!-- > ** Lets deploy some Enterprise Integration Patterns inside the > ActiveMQ Message Broker > ** For more details see > ** > ** http://activemq.apache.org/enterprise-integration-patterns.html > --> > <camelContext id="camel" > xmlns="http://activemq.apache.org/camel/schema/spring"> > > <!-- You can use a <package> element for each root package to search > for Java routes --> > <package>org.foo.bar</package> > > <!-- You can use Spring XML syntax to define the routes here using the > <route> element --> > <route> > <from uri="activemq:example.A"/> > <to uri="activemq:example.B"/> > </route> > </camelContext> > > > > <!-- lets create a command agent to respond to message based admin > commands on the ActiveMQ.Agent topic --> > <commandAgent xmlns="http://activemq.org/config/1.0"/> > > > <!-- An embedded servlet engine for serving up the Admin console --> > <jetty xmlns="http://mortbay.com/schemas/jetty/1.0"> > <connectors> > <nioConnector port="8161" /> > </connectors> > > <handlers> > <webAppContext contextPath="/admin" > resourceBase="${activemq.base}/webapps/admin" logUrlOnStart="true" /> > <webAppContext contextPath="/demo" > resourceBase="${activemq.base}/webapps/demo" logUrlOnStart="true" /> > </handlers> > </jetty> > > > > > > <!-- Oracle DataSource Sample Setup --> > <bean id="oracle-ds" class="org.apache.commons.dbcp.BasicDataSource" > destroy-method="close"> > <property name="driverClassName" > value="oracle.jdbc.driver.OracleDriver"/> > <property name="url" value="jdbc:oracle:thin:@xx.xx.xx.xx"/> > <property name="username" value="xxx"/> > <property name="password" value="xxx"/> > <property name="poolPreparedStatements" value="true"/> > </bean> > Thanks > -- View this message in context: http://www.nabble.com/Got-minus-one-from-a-read-call-tp14734900s2354p14948097.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.