問題タブ [atomikos]
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.
database - JTA (Atomikos) で並列トランザクションを設定することは可能ですか?
データベースとメッセージ キューの 2 つのトランザクション リソースがあります。そこで、Atomikos を XA トランザクション マネージャーとして使用します。
トランザクション (tx1) 内で、別の分離されたトランザクション (tx2) を並行して開くことは可能ですか?
tx2 では、一部のデータを db にコミットしますが、tx1 が失敗して最終的にロールバックされる可能性があります。
また、tx2 でエラーが発生した場合は tx1 もロールバックする必要があるため、tx2 は tx1 内で実行する必要があります。
どうすればこれを達成できるか知っている人はいますか?
ありがとうございました。
java - Atomikos または JDBC を使用しない JBossTS
データソースが JDBC 経由で呼び出せない場合、以前のトランザクション マネージャーのいずれかを実装することは可能ですか?
編集済み
既存のアプリケーションのアドインを作成したいと考えています。私のアドインは、長時間実行されるワークフロー トランザクションの読み取りおよび書き込みアクセスのログ記録を担当します。私のアドインは、変数が必要な場合に備えて、変数をキャッシュすることも担当する必要があります。これにより、変数にアクセスするたびに読み取り/書き込み操作が必要になることはありません。
アプリケーションは Tomcat6 環境で実行されており、プラグイン マネージャー (さまざまなデータ ソースからデータを取得します) を呼び出してデータを取得します。
私が読むことができるリンクを知っていますか、または既存のソリューションを知っていますか?
java - Sybaseでストアドプロシージャを正しく呼び出す方法
Spring JDBCを使用して、Sybaseデータベース(ASE 15)でいくつかのレガシーストアドプロシージャを呼び出そうとしています。
かなりうまく機能していますが、procから戻り値を取得する方法がわかりません。
これは私が得たコードです:
ストアドプロシージャはそれほど重要ではありませんが、更新を行い、常に0を返します。データベースツールを使用して同じクエリを実行すると、正しく0が返されます。
更新が機能し、テーブルが変更されます。戻り値は3です。私には完全にランダムに見えます。
私はこれを正しい方法でやっていますか?足りないものはありますか?
それが重要な場合は、Sybase独自のドライバjConnect7を使用しています。
ありがとう。
spring - 統合テストで Spring トランザクションマネージャーを実際にトランザクション対応にするにはどうすればよいですか?
いくつかのデータベースを読み取り、1 つのデータベースに小さなテーブルを書き込む小さな Spring アプリがあります。@Transactional メソッドを持つ @Service アノテーション付きクラスがあります。そのメソッドは、最初にテーブルからいくつかの行を削除し、次に同じテーブルに行を挿入するDAOクラス(@Repository-annotatedではない)のメソッドを呼び出します。
これは、WebLogic にデプロイされます。通常の操作では、このアプリは完全に正常に動作しています。
「挿入」のSQLをわざといじくりまわす実験をして、これをローカルボックスにデプロイしてから、このサービス操作を実行するJMX操作を実行しました。失敗した後(予想どおり)、データベースをチェックしたところ、テーブルが無傷であることを確認したため、「挿入」が失敗したときに「削除」を正しくロールバックしました。
私の問題は、同様のシナリオをシミュレートしようとする統合テストがトランザクション的に動作していないことです。JdbcTemplate をモックして削除を実行しましたが、挿入時に DataAccessException を強制的にスローしました。その後、データベースを確認したところ、行がなくなっていたため、期待どおりに削除がロールバックされませんでした。
Spring JTA パッケージでデバッグをオンにすると、トランザクションをロールバックしていることを示すデバッグ メッセージが表示されました。
テストには Atomikos トランザクション マネージャーを使用しています。以下は、コンテキストの残りの部分で参照される「catalogTransactionManager」を定義するためにテストで使用しているコンテキストからの抜粋です。
おそらく問題ではありませんが、これが私のテスト方法です(一部難読化されています):
}
ただし、WebLogic にデプロイするときは、通常の接続プーリング トランザクション データソースを定義しますが、統合テストでは、データソースは「org.springframework.jdbc.datasource.DriverManager DataSource」を使用します。
何が欠けている可能性がありますか?
無料の Atomikos トランザクション マネージャーが実際にはトランザクションに対応していないからですか? 何が欠けている可能性がありますか?
hibernate - DAO でのトランザクションの使用
Atomikos と Spring 3.1 で Hibernate 3.6.9 を使用しています。読んだ後@Transactional アノテーションはどこに属しますか? すべての DAO から @Transactional アノテーションを削除し、サービスのみに残しました。受け取ったdao db操作でこれらの注釈を削除した後
私の構成:
セッション ファクトリのプロパティ:
DAO のトランザクションをどのように管理すればよいですか? サービスの外部で DAO を使用するにはどうすればよいですか? これを解決して、daos を使用するレイヤーでトランザクションを手動で開始する (requires_new を使用したトランザクション) 唯一の方法はありますか? ただし、DAO で Transactional を使用すると、遅延初期化例外の問題が発生しました (トランザクションはプレゼンテーション レイヤーの前に閉じられ、エンティティ フィールドを初期化しようとします)。
編集:
spring mvc のコントローラーが DAO に直接アクセスできる場合、トランザクションをどのように管理すればよいですか? コントローラーはトランザクション対応にする必要がありますか?
春のセキュリティはdao(@Transactionalなし)を使用しているため、ログインプロセス中にも問題が発生するため、レイヤーはトランザクションを開始しませんか?
たとえば、春のセキュリティで使用されるdaosに@Transactionalを追加すると、問題が解決します-> @Transactionalがある場合、すべてが機能しますが、この注釈なしでdbを使用することはできません。ただし、@Transactional を一部の DAO に追加すると問題が発生します。これは、Spring mvc がデータを表示したい場合に遅延初期化例外が表示され、dao で手動の Hibernate.initialize のみが機能するためです (最後の @Transactional がプレゼンテーション層の前にトランザクションを閉じるためです!)。
ejb-3.0 - BMTのプログラミング-UserTransaction
BMTの完全なプログラミングはUserTransactionインターフェースに基づいていますか?つまり、BMTを使用する場合、UserTransactionインターフェイスによって提供されるサービスよりも多くのサービスが必要になるシナリオはありますか。
なぜこの質問ですか?コンテナーによって提供されるデフォルトではなく、トランザクションマネージャーの別の実装(Bitronix TMやAtomikosなど)を使用する場合、新しいTMをUserTransactionオブジェクトに挿入するだけで十分ですか?
-ありがとう
spring - Spring IntTest は、Atomikos から「接続プールの拡大に失敗しました」を取得しています
通常、WebLogic で正常に動作する Spring アプリケーションがあります。
Atomikos の「Transaction Essentials」フレームワークを使用してスタンドアロンのトランザクション マネージャーを提供する一連の統合テストがあります。これは機能していましたが、新しい問題が発生しましたが、これを実現するために何を変更したのかわかりません。
次のように始まるスタック トレースが表示されます。
org.springframework.jdbc.CannotGetJdbcConnectionException: JDBC 接続を取得できませんでした。ネストされた例外は com.atomikos.jdbc.AtomikosSQLException: Failed to grow the connection pool at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80) です
関連する Bean 定義は次のとおりです。
私はまた、このようないくつかを持っています:
「5」を「50」に変えてみました。これにより実行時間が長くなりますが、それでも同じエラーで失敗します。5 つまたは 50 の接続が必要になることさえありません。もっと大きな数値に変更すると、さらに長く実行され、同じエラーで失敗するのではないかと強く感じています。
何が欠けている可能性がありますか?
mysql - 発生したXIDの履歴書0:不明
Spring 3.0.5、Hibernate 3.6.7、Atomikos TransactionEssentials 3.7.0、MySQL5.5を使用しています
最近、接続プール内の接続が8時間後にタイムアウトになり、サーバーによってリセットされて「resum forXID'???」というメッセージが表示されるという問題に直面しました。発生0:不明
これが私のデータソース構成です:
調査していたところ、オプションautoReconnect = trueは、障害が発生した接続を2秒の遅延後にのみ再接続することがわかりました(これは構成だと思います)。Webを閲覧すると、MySQL-Serverでwait_timeoutを増やすことを提案する解決策が見つかりましたが、これは実際の解決策ではないと思います。接続が失われる原因となる他の問題もある可能性があるため、アプリケーションはデッド接続を処理して自動的に再接続できる必要があります。(そして、アプリケーションが使用する種類に関係なく、サーバーにディレクティブを作成したくありません)。
ついに私はこれに対する良い解決策を見つけました。それは同じまたは同様の問題に直面している人々を助けるための答えとして投稿します。
atomikos - Atomikosロギングをオフにする方法は?
Redhat Linuxで実行されているスタンドアロンのJavaアプリ(v1.6)でatomikosv3.7.0TransactionEssentialsを使用しています。突然のアトミコスがすべてログをコンソールに送り出すことを除いて、すべてが順調に機能していました。私は多くのことを試みますが、何がこれを引き起こしたのかわからず、これを制御する方法の手がかりもありません。はい、リンク(コンソールログに書き込まないようにAtomikosを設定する方法は?))を見ましたが、それは私には役に立ちませんでした。Javaアプリは、メッセージ駆動型pojとspringのDefaultMessageListenerContainerを使用して、メッセージのキューをリッスンし、MySqlデータベースを更新します。リスナーが起動すると、メッセージが受信されず、アプリが何もしていないはずの場合でも、次のログが出力されます。
これで、リスナーをシャットダウンして再起動すると、上記のログに加えて、以下のログも出力されます。
状態COMMITTINGのコーディネーター192.168.252.15.tm1200000016のローカルヒューリスティック終了状態COMMITTINGのコーディネーター192.168.252.15.tm1200100016のローカルヒューリスティック終了状態COMMITTINGのコーディネーター192.168.252.15.tm1200100016のローカルヒューリスティック終了コーディネーター192.168.252.15.tm1200200016のローカルヒューリスティック終了状態COMMITTING状態COMMITTINGを使用したコーディネーター192.168.252.15.tm1200200016のローカルヒューリスティック終了状態COMMITTINGを使用したコーディネーター192.168.252.15.tm1200300016のローカルヒューリスティック終了
何か問題がありますか?これを止めるにはどうすればよいですか?
jms - ActiveMqとAtomikosを使用して2回デキューされたJMSメッセージ
ActiveMqをJMSサーバーとして使用し、Atomikosをトランザクションマネージャーとして使用しています。
ActiveMq Admin Webインターフェイスで、1つのメッセージがキューに入れられたのに、2つ(!)のメッセージがデキューされたことがわかります。
ただし、jmsコンシューマーはメッセージを1回だけ処理するため、処理に重複はありません。単純なSpringJmsTransactionManagerを使用すると、1つのキューに入れられたメッセージと1つのデキューされたメッセージがあります。この問題は、AtomikosJTAトランザクションマネージャーでのみ発生します。
何が問題ですか?2回デキューされたメッセージが表示されないようにAtomikosを構成するにはどうすればよいですか?
私の設定は以下の通りです。チュートリアルとほぼ同じです。ところで、AtomikosのSpring統合の例はうまく機能しますが、Spring 2.0を使用しているのに対し、私はSpring3.1を使用しています。
消費者クラスは次のとおりです。