【发布时间】:2013-04-15 21:42:09
【问题描述】:
我正在使用 apache activemq 5.8。这是我所做的:
1) 将informix jdbc jar (ifxjdbc-3.70-JC3.jar) 放入activemq/libs/optional
2) 在activemq.xml中声明bean:
<bean id="informix-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.informix.jdbc.IfxDriver"/>
<property name="url" value="jdbc:informix-sqli://192.168.7.30:21893/activemq_nightly:informixserver=ol_informix1170_1;IFX_LOCK_MODE_WAIT=20;IFX_ISOLATION_LEVEL=TRANSACTION_READ_UNCOMMITTED"/>
<property name="username" value="XXXX" />
<property name="password" value="XXXX" />
<property name="maxActive" value="200" />
<property name="poolPreparedStatements" value="true"/>
</bean>
3) 更改 activemq.xml 中的持久化适配器:
<persistenceAdapter>
<jdbcPersistenceAdapter dataSource="#informix-ds"/>
</persistenceAdapter>
我在informix 连接字符串中设置了隔离级别,因为在启动activemq 时出现“不支持事务”错误。 现在我得到了这个例外:
2013-04-12 14:21:23,196 | ERROR | Failed to start Apache ActiveMQ (localhost, null). Reason: java.io.IOException: Cannot create PoolableConnectionFactory (Transaction not available.) | org.apache.activemq.broker.BrokerService | main
java.io.IOException:无法创建 PoolableConnectionFactory(事务不可用。) 在 org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:45) 在 org.apache.activemq.store.jdbc.TransactionContext.getConnection(TransactionContext.java:65) 在 org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.loadAdapter(JDBCPersistenceAdapter.java:440) 在 org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.createAdapter(JDBCPersistenceAdapter.java:423) 在 org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.getAdapter(JDBCPersistenceAdapter.java:368) 在 org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.init(JDBCPersistenceAdapter.java:289) 在 org.apache.activemq.broker.LockableServiceSupport.preStart(LockableServiceSupport.java:79) 在 org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:54) 在 org.apache.activemq.broker.BrokerService.doStartPersistenceAdapter(BrokerService.java:623) 在 org.apache.activemq.broker.BrokerService.startPersistenceAdapter(BrokerService.java:612) 在 org.apache.activemq.broker.BrokerService.start(BrokerService.java:577) 在 org.apache.activemq.xbean.XBeanBrokerService.afterPropertiesSet(XBeanBrokerService.java:58) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1546) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1487) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1419) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:518) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) 在 org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 在 org.apache.xbean.spring.context.ResourceXmlApplicationContext.(ResourceXmlApplicationContext.java:64) 在 org.apache.xbean.spring.context.ResourceXmlApplicationContext.(ResourceXmlApplicationContext.java:52) 在 org.apache.activemq.xbean.XBeanBrokerFactory$1.(XBeanBrokerFactory.java:102) 在 org.apache.activemq.xbean.XBeanBrokerFactory.createApplicationContext(XBeanBrokerFactory.java:102) 在 org.apache.activemq.xbean.XBeanBrokerFactory.createBroker(XBeanBrokerFactory.java:66) 在 org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:71) 在 org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:54) 在 org.apache.activemq.console.command.StartCommand.startBroker(StartCommand.java:115) 在 org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:74) 在 org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57) 在 org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:148) 在 org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57) 在 org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:90) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.apache.activemq.console.Main.runTaskClass(Main.java:262) 在 org.apache.activemq.console.Main.main(Main.java:115) 原因:org.apache.commons.dbcp.SQLNestedException:无法创建 PoolableConnectionFactory(事务不可用。) 在 org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549) 在 org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388) 在 org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) 在 org.apache.activemq.store.jdbc.TransactionContext.getConnection(TransactionContext.java:58) ... 45 更多 原因:java.sql.SQLException:事务不可用。 在 com.informix.util.IfxErrMsg.getSQLException(IfxErrMsg.java:413) 在 com.informix.jdbc.IfxSqli.a(IfxSqli.java:3550) 在 com.informix.jdbc.IfxSqli.E(IfxSqli.java:3871) 在 com.informix.jdbc.IfxSqli.dispatchMsg(IfxSqli.java:2662) 在 com.informix.jdbc.IfxSqli.receiveMessage(IfxSqli.java:2578) 在 com.informix.jdbc.IfxSqli.c(IfxSqli.java:1512) 在 com.informix.jdbc.IfxSqli.executeExecute(IfxSqli.java:2493) 在 com.informix.jdbc.IfxSqli.executeExecute(IfxSqli.java:2430) 在 com.informix.jdbc.IfxResultSet.b(IfxResultSet.java:393) 在 com.informix.jdbc.IfxStatement.a(IfxStatement.java:1326) 在 com.informix.jdbc.IfxStatement.executeImpl(IfxStatement.java:1296) 在 com.informix.jdbc.IfxStatement.c(IfxStatement.java:1007) 在 com.informix.jdbc.IfxStatement.execute(IfxStatement.java:893) 在 com.informix.jdbc.IfxSqliConnect.setServerIsolationLevel(IfxSqliConnect.java:6976) 在 com.informix.jdbc.IfxSqliConnect.j(IfxSqliConnect.java:6947) 在 com.informix.jdbc.IfxSqliConnect.(IfxSqliConnect.java:1766) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:513) 在 com.informix.jdbc.IfxDriver.connect(IfxDriver.java:254) 在 org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38) 在 org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582) 在 org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556) 在 org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545) ... 48 更多 引起:java.sql.SQLException 在 com.informix.util.IfxErrMsg.getSQLException(IfxErrMsg.java:413) 在 com.informix.jdbc.IfxSqli.E(IfxSqli.java:3876)
当我启动 activemq 时出现以下错误:
【问题讨论】:
标签: jakarta-ee activemq informix