Weblogic アプリケーション サーバー (12.1.1.0) を使用してソフトウェアを開発しています。2 つのアプリケーションを持つ 1 つのドメインがあります。
開発DBから本番前のDB(本番と同様)に移行したところ、大きな問題が発生しました...
DBAは、DBが同じバージョンのOracle 11を実行していると述べています(正確なバージョンは思い出せません)バージョン)。唯一の違いは、dvlp DB は接続に SID を使用し、他の 2 つはサービス名を使用することです。
現在、私たちのドメインには 2 つのデータ ソース X と Y があります。どちらも同じ DB に接続されています。両方で XA ドライバーを使用します。どちらのアプリケーションも、それぞれが異なるデータ ソース (X と Y) を使用する 2 つの PU (持続性ユニット) を持つ同じ「persistence.xml」(およびエンティティ) を使用します。
問題はこれです:
- MDB がリクエストの処理を開始します。
- EntityManagers を備えた PU と、接続を取得するために使用される DataSource インターフェースを備えた Y データ ソースの両方を使用します (いくつかの JDBC コードがあります)。
- 他のアプリケーションから Bean を呼び出します。
- もう 1 つの Bean は、PU の 1 つ (X データ ソースに接続されているもの) を使用しようとします。
SQLException がスローされます。
XA error: XAResource.XAER_NOTA start() failed on resource 'x_my_domain': XAER_NOTA : The XID is not valid
オンラインでエラーを検索したところ、データ ソースの構成を に変更する必要があることがわかりました
XASetTransactionTimeout=true
XATransactionTimeout=0
が、うまくいきませんでした。
また、データ ソースの構成を微調整しようと (何度も) 試みましたが、最終的にはそのうちの 1 つを削除したため、そのうちの 1 つだけを微調整するだけで済みましたが、何も機能しませんでした。
さらに、構成を繰り返し調整している間に、別の SQLException が私たちのレーダーをすり抜けて、以前のものの代わりに飛び出し始めました。
Internal error: Cannot obtain XAConnection weblogic.common.resourcepool.ResourceDisabledException: Pool X is Suspended, cannot allocate resources to applications
私たちはすべてを試したので、これはさらにイライラします。データ ソースをリセットします。削除して再作成します。削除して別の名前で再作成します。ドメインを削除し、別のデータ ソース名で再作成します。dvlp DB を使用して戻ります。しかし、例外は持続しているようです。
これを解決する方法がまったくわかりません。この問題を解決しない限り、これ以上進むことはできません。