我正在使用 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
getConnection(BasicDataSource.java:1044) at 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 章:393) 在 com.informix.jdbc.IfxStatement.a(IfxStatement.java:1326) 在 com。
当我启动 activemq 时,出现以下错误: