問題タブ [xa]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - XAResourceがTxに関係する唯一のリソースである場合、XAResource.prepare()を呼び出す必要があります
私はJOTMでいくつかのことを試していますが、物事がどのように機能するかについていくつかの汎用的な質問があります。何が起こるかについての明確な要約を得るために、一連のイベントをリストしました。
- txを作成する
- リソースを参加させる
- tx.commit
- resource.start
- resource.end
- resource.commit
resource.prepareが呼び出されず、コミットするフラグ(onephase)がtrueであるのはなぜですか。これは、そのようなユースケースの意図された動作ですか?
java - XAResourceからXAExceptionをスローしても、トランザクションコミットが成功しないのはなぜですか?
私はJOTMでいくつかのことを試していますが、物事がどのように機能するかについていくつかの汎用的な質問があります。何が起こるかについての明確な要約を得るために、一連のイベントをリストしました。
- txを作成する
- リソースを参加させる
- tx.commit
- resource.start
- resource.endはXAEXCEPTIONをスローします
- resource.commit
resource.endがXAExceptionをスローした場合でも、txコミットは機能します。これは私には明らかに間違っているようです。txがロールバックされたとマークされていない場合、例外をスローするポイントは何ですか...
すべてのtxマネージャーはこのように機能しますか、それともXAExceptionをスローするとtxが失敗しますか?
oracle - Oracle DB ロック テーブルの使用
最近、特定のロック機能が必要なタスクがありました。具体的な原因は次のとおりです。
- テーブルを更新していたトランザクションは分散されていたので制御できませんでしたが、
- 日中、何千ものノンブロッキング トランザクションを同時にサポートする必要があります。それらを「一般的な」操作と呼びましょう。
- 各「一般」操作は、特定の「ブランチ」(「LDN」、「NY」、「LA」...) の行を更新し、
- 1 日に 1 回、各ブランチの「マスター」操作があり、これはさまざまなブランチで頻繁に行われます。
- 「マスター」操作中は、そのブランチで「一般的な」操作を行うことはできません。
- 「マスター」操作が開始されると、「マスター」操作が到着する前にシステムにあった、提供されたブランチ完了で現在の「一般」操作を待機する必要があります。
- 特定のブランチでの「マスター」処理中に、他のすべてのブランチを更新できます。
これをアーカイブするために、Oracle DB固有のテーブルを作成しました
さまざまな操作に対して次の機能がサポートされました。
「一般的な」操作の場合:
「マスター」操作の場合:
- 「マスター」操作が来ると、次の別のトランザクションを開始します。
- BRANCH_LOCK テーブルを EXCLUSIVE モードでロックします。別のトランザクションでこのテーブルに SHARE モード LOCK がある間、トランザクションは取得できません (この方法で、現在のすべての「一般」操作が終了した後に「マスター」操作が開始されることを保証しますが、待機します)指定された支店だけでなく、すべての支店の取引が完了するまで)、
- ブランチのフラグを「Y」に設定します (この方法で、「マスター」操作の処理中に「一般」トランザクションが発生しないことが保証されます)。
- 着信トランザクションで、テーブルのフラグを「N」に変更するため、コミット後、BRANCH_LOG テーブルの FLAG 列に適切な値が含まれ、システムは「一般的な」操作を再び処理できるようになります。
これはまだ製品化されていないので、これに対するより良い解決策があるのではないかと思います。また、説明されているもの以外に欠点はありますか?
私が言及しなかったいくつかの更新:
- 'マスター' 操作は '一般' 操作の結果に作用します. したがって, 'マスター' 処理中に '一般' 操作が失われないことが重要です. したがって, マスター操作が処理を開始する前に現在の '一般' 操作を終了する必要があるのはこのためです. .
- 同じブランチで複数の「一般的な」操作が毎秒発生し、1 秒あたり約 3,000 回の操作が行われます。
- ブランチの「マスター」操作は 1 つだけ実行でき、異なるブランチで複数の「マスター」操作を同時に処理できます。
oracle - Oracle RAC 、XA ドライバーは必要ですか?
Real Application Cluster (RAC) とストレージを使用するように構成された Oracle 11g があります。
XA は 2PC トランザクション用、複数のデータ ソース/マネージャー用だと思いました。
ありがとう。
java - トランザクションのない JTA データソース
(手動によるリソースの登録と削除を想定しています。)
トランザクション更新を実行する予定の XA 対応リソース/データソースが多数あります。さらに、XA 対応のデータソースの一部は、(他のリソースを必要とせずに) 分離して更新できます。
参加しているデータソースを使用してすでに多数のトランザクションをコミットしていると仮定すると、データソースへの一方的な更新のために TransactionManager を無視できますか。
グローバル トランザクションを開始して、リソース自体に直接コミットしないのでしょうか? これが正しいアプローチであると仮定すると、その後、副作用なしでリソースをトランザクションに参加させることができますか?
ありがとう、
クリス
spring - Spring、XA、およびWebSphere
WebSpherev7内のSpringv3アプリケーションでXAトランザクションを機能させようとしています。
私のアプリコンテキストは次のようになります。
UOW txnマネージャーでミックスするというこの記事を参照しているので、大丈夫です。しかし、それはそのようには機能しません。代わりに、次のコードでは、メッセージは破壊的に読み取られ、例外がスローされたときにロールバックされません。
トランザクションロジックは(scalaで):
WebSphereのJTAトランザクションマネージャーをSpringで使用する方法を誰かにアドバイスできますか?
vb6 - 64 ビット Win2k3 で MSDTC/oracle XA を使用する 32 ビット DLL
64 ビット システムで実行する必要がある COM+ アプリケーション (主に vb6 ベース) があります。Oracle データベース (10g、32 ビット) と通信することになっています。XA を無効にするとすべて正常に動作しますが、有効にすると次のエラーが表示されます。
XA トランザクション マネージャーは、XA リソース マネージャー DLL 内の "GetXaSwitch" 関数を呼び出しました。「GetXaSwitch」関数の呼び出しに失敗しました: ファイル=d:\nt\com\complus\dtc\dtc\xatm\src\xarmconn.cpp 行=2503。
私のオラクルクライアントは10g 32ビットです。
32 ビットと 64 ビットの互換性についてはよくわかりませんが、アプリケーションがレジストリの WOW64 部分 ([hklm/software/wow6432node/microsoft/msdtc/mtxoci]) にある MSDTC dll を呼び出していることがわかります。レジストリのネイティブ 64 ビット部分にある XADLL にアクセスします ([hklm/software/microsoft/msdtc/xall])。
そこで、そこにある参照を 32 ビット dll に変更しようとしましたが、読み込まれませんでした。
このエラーを修正する方法について何か考えがある人はいますか?
mysql - jboss上のmysqlサーバーへの読み取り専用xaデータソース接続を確立する方法
タイトルからも明らかですが、経験を共有していただければ幸いです。
私はそれを試しましたが、うまくいきませんでした。
java - Ehcache は XA モードでデータをディスクにオーバーフローできません (NotSerializableException)
Ehcache で XA トランザクションを実験しています。現在、Spring トランザクション管理と Bitronix をトランザクション マネージャーとして使用しています。
以下の方法を使用して、キャッシュを作成、構成、およびいっぱいにします。
すべてが正常に機能しており、Ehcache は削除された要素が 70 個を超えても期待どおりに機能します。
diskPersistent
からfalse
に変更true
すると、次の例外を除いて、Ehcache がいくつかの要素をディスク ストレージにコピーしようとするとすぐに機能しません。
これは、Ehcache をトランザクション モードに切り替えると、typeの元の値が a に置き換えられるため、予期されます。Integer
SoftLock
完全に言うと、これは Atomikos トランザクション マネージャーを使用している場合にも発生し、XA モードを使用していない場合は問題なく動作します。
問題は、XA トランザクションとディスク オーバーフローを混在させる方法はあるのかということです。
spring - ActiveMQ JMS XA Atomikos - トランザクションが開始されていないというエラー
XA トランザクションを使用して、ActiveMQ と Hibernate (Sql Server 2008) の間のアクティビティを調整したい状況です。
私たちは以下を使用しています:
- 春 3.0.5
- 休止状態 3.6.2
- アクティブMQ 5.5.0
- アトミコス 3.7
トランザクションが開始されていないことに関連するログ ファイルに、次のエラーが生成されていることがわかります。これらは常に JMS に関連しています。
トランザクション '[ID]' は開始されていません。
これらは常にログに生成されています。
同じ JMS キューで動作する 3 つの Web アプリケーションがあり、1 つの Web アプリケーションのみが実行されている場合はエラーが生成されないようであるという点で、問題はより複雑です。
これらは、同じマシンで実行されている Tomcat 7.0.14 の個別のインスタンスにデプロイされます。
私たちの春の構成: