1

ANSI 以外の非バッファ ロギング モードで Informix 11.70 データベースを操作する。

クラスjavax.sql.ConnectionPoolDataSourceによって実装されたオブジェクトを使用するように設定された接続プールを使用して、GlassFish 3.1.2.2 サーバーを介してこのデータベースにアクセスしています。com.informix.jdbcx.IfxConnectionPoolDataSource

すべてのトランザクションは JPA プロバイダー (この場合は Hibernate) の制御下にあるため、私が制御できる明示的なBEGIN WORK,COMMIT WORKまたはROLLBACK WORKステートメントはありません。

この構成の 1 つの特定の展開で、次の-255いずれかを示すエラーが発生しています。

  • データベースは非ロギング モードです (これは、この場合には当てはまりません)。
  • データベースはある種のロギング モードですが、前のステートメントCOMMIT WORKなしで誰かによって発行されましたBEGIN WORK

この問題のトラブルシューティングを行うにはどうすればよいですか? ある展開ではこのエラーが発生し、別の展開では発生しない環境要因は何ですか?

4

1 に答える 1

1

ありがたいことに、答えは Informix または Informix の Hibernate サポートと本質的には何の関係もありません。これは、展開方法に応じて発生する、GlassFish でのあいまいな自動データ ソース作成と関係があります。(これは、Informix データ ソースが GlassFish Web コンソールに提供する既定のプロパティに関係している可能性があります。)

特に、必要な JDBC リソースを最初に作成せずに、デプロイヤがアプリケーションを GlassFish にデプロイしようとしたケースがありました。GlassFish は、いくつかの奇妙な JDBC リソースが欠落していると報告しました:jdbc/foobar__pmおよびjdbc/foobar__nontx.

私たちのデプロイ担当者は、何かが間違っているとは考えず、これらのリソースを手作業で作成しました。(GlassFish は通常、Web コンソールを使用してデプロイすると、これらを自動的に作成するようです。)

その結果、デプロイ担当者がアプリケーションで使用する非トランザクション データ ソースを誤って指定してしまい、それが根本的な原因でした。

于 2012-10-11T15:47:43.623 に答える