2

私は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>

activemq の起動中に「トランザクションがサポートされていません」というエラーが発生したため、informix 接続文字列で分離レベルを設定しました。今、私はこの例外を受け取ります:

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

org.apache.activemq.store.jdbc.TransactionContext.getConnection(TransactionContext.java:58) で getConnection(BasicDataSource.java:1044) ... 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) で。

activemq を開始すると、次のエラーが表示されます。

4

2 に答える 2

0

Informix のヘルプに記載されている内容を推測してください。

-122 ISAM エラー: トランザクションを利用できません。

ISAM プロセッサは、トランザクションの開始または終了をマークするように要求されましたが、トランザクション ログは有効ではありません。C-ISAM プログラムの場合、このファイルはロギング付きで開かれませんでした。isopen の呼び出しを確認し、ISTRANS パラメータが含まれていることを確認します。SQL 製品の場合、このデータベースはトランザクション ログをサポートしていません。データベース サーバーを使用している場合は、データベース サーバー管理者にこのデータベースのログ記録を有効にしてもらいます。それ以外の場合は、START DATABASE ステートメントを使用してトランザクション ログを開始します。いずれの場合も、ログ記録は、データベースが完全にバックアップされた直後にのみ開始する必要があります。

于 2013-04-12T13:46:01.527 に答える