1

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」(およびエンティティ) を使用します。

問題はこれです:

  1. MDB がリクエストの処理を開始します。
  2. EntityManagers を備えた PU と、接続を取得するために使用される DataSource インターフェースを備えた Y データ ソースの両方を使用します (いくつかの JDBC コードがあります)。
  3. 他のアプリケーションから Bean を呼び出します。
  4. もう 1 つの Bean は、PU の 1 つ (X データ ソースに接続されているもの) を使用しようとします。
  5. 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 を使用して戻ります。しかし、例外は持続しているようです。

これを解決する方法がまったくわかりません。この問題を解決しない限り、これ以上進むことはできません。

4

1 に答える 1

0

最終的に問題を解決する方法を見つけましたが、質問に答えるには、環境について詳しく説明する必要があります。実際には 2 つの管理対象サーバーがあり、各アプリケーションは別のサーバーで実行されます。admin-server と MS の 1 つが 1 つのマシンで実行され、もう 1 つの MS が別のマシンで実行されます (合計 2 つのマシン)。

問題は、他の MS でも使用されているデータ ソース (X) の 1 つを変更したときに、他の MS を再起動せず、データ ソースのみを再起動したことです。これにより、データ ソースが他の MS の新しい変更で更新されず、発生したエラーが発生したと推測されます。

この問題はかなり愚かな理由で発生しましたが、定義のない管理サーバーのみのセットアップの自作 PC でも、管理サーバー + 最初の MS 部分の環境セットアップで再発するため、特定するのは困難でした。マシンの。それでも発生した理由は、他のアプリケーションを含むマシンのアドレスがコードに書き込まれていたためです (XML 構成から読み取られますが、それはあまり変わりません)。

よし、これで終わりだ。

于 2012-06-25T08:29:23.463 に答える