問題タブ [transactionmanager]
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 - 1 つの sessionFactory に複数のトランザクション マネージャー
同じスキームの 2 つのデータベースがあります。
私の休止状態 3.2/Spring 3 アプリケーションには、データベースごとに 1 つのデータソース (jndi 経由) と、データソースごとに 1 つのトランザクション マネージャー (HibernateTransactionManager) があります。
質問: 現在のトランザクションに関連付けられたデータソースを使用するセッション ファクトリのインスタンスを 1 つ使用できますか?
以下の方法があるとします。
取引マネージャー:
web-services - Web サービスはステートフルにできますか? ステートフル Web サービスの (同じクライアントからの) 2 つの異なる操作を同じトランザクションの下に置くことはできますか?
私はステートフル Web サービス領域の初心者です。以下の質問のいずれかが意味をなさない場合は無視してください。
私は主にステートレス Web サービスを扱ってきました。1 つの疑問は、XML API を介して Web サービスにセッション ID を渡すことができるかということです。これに対する規定はすでにありますか(ステートフルになるように)?Web サービスを呼び出すための Java-XML API には、Cookie を利用する機能がありますか?
RESTful Web サービスはステートフルですか? これが RESTful と呼ばれる理由ですか?
ステートフルな Web サービスを使用しているとしましょう。そして、操作の「アトミシティ」を維持する必要がある2つの異なる操作があります(カードのクレジット/デビットとクルーズ予約の例を見てください)。両方が成功するか、どちらも成功しない必要があります。
そのようなことは Web サービスを使用して実現できますか? (Web サービスにトランザクション制御を適用する方法がわからないため。サービス (ejb) レイヤーのみを処理する必要がある場合は簡単だったでしょう)。
はいの場合、別の質問が生じます。トランザクション マネージャーがクライアント コンテキストをどのように識別し、意味のあるアトミック トランザクションの一部である必要があるこれらの操作に同じトランザクション コンテキストが適用されるのでしょうか。
これは、使用するフレームワーク/プログラミング言語に依存しますか? たとえば、JSF/SpringMVC UI と JAX-WS/Axis Web サービスを使用してこれを実現したいと考えています。いいえの場合は、他の同様のフレームワーク (Java から) にこれがあり、解決策を提供するものを教えてください。サーバー - weblogic/jboss。
ありがとうプラカシュ
spring - トランザクション マネージャー Bean を Prototype スコープとして使用することをお勧めしますか?
ユーザーログインに基づいて異なるデータベースに接続したいので、TransacionManager Bean を Prototype スコープとして使用しており、毎回 transacionManager Bean を作成しており、うまく機能しています。しかし、アプリケーションの範囲が拡大し、どれだけ安定するかは良いことですか?
何か案は ?ありがとう。
java - JOOQ を SpringBatch JdbcTemplate と同期する方法
私はSpringバッチで作業しており、2つの「ORM」フレームワークでTASKLETを構築しようとしています.単純なクエリにはjdbcTemplateを使用し、より複雑なクエリにはJOOQフレームワークを使用します.
これは春の設定の一部です:
com.myexample.writer.JdbcSequenceWriter のセッターで ORM を初期化します。
両方の jdbcTemplate には 1 つのセッションがあり、「jdbcTemplate」を使用してレコードを挿入し、「jdbcTemplate2」で SELECT を使用してこのレコードを見つけることができます。しかし、任意の「jdbcTemplate」でレコードを INSERT しようとし、dslContext (JOOQ ORM) を使用してそれを見つけようとすると、空の結果が得られます。「ライター」がすべての操作を完了できない場合、Spring Batch はいくつかのトリッキーなトランザクション マネージャーを使用し、すべての操作をロールバックすることを理解しています。しかし、別のフレームワークを単一のトランザクション マネージャーと同期するにはどうすればよいでしょうか?
spring - Spring データ - 異常を引き起こす同じトランザクションの 2 つの異なるデータ ソース
私たちは、Spring と 2 つの異なる mysql データソースで atomikos JTA を使用しています。
問題が発生しました。
同じ @Transactional メソッドで (2 つの異なるデータソースの) 2 つの異なるリポジトリを使用すると、エラーが発生します。
これは、2 番目のリポジトリがデータ ソースに対して何らかのアクションを実行しているときに発生します。
2 つの異なるデータ ソースが同じトランザクションに関係している場合に問題が発生する可能性があるトランザクション マネージャー (atomikos jta) と関係があると考えられます。
データソース xml は次のとおりです。
および transaction.xml :
* 編集 (19.01.2014) *
したがって、M. Deinum のヘルプによると、エラーを解消することができましたが、実際のトランザクションは行われていません (たとえば、ロールバックがないなどの例外があります)。
新しい構成は次のとおりです。
データソース.xml:
トランザクション.xml:
*編集01/20/2014 *
なんとか機能させることができましたが、起動時に大量の警告が表示されました。
新しい構成は次のとおりです。
spring - 宣言型 Bean と注釈付き Bean の混合: org.hibernate.HibernateException 現在のスレッドのセッションが見つかりません
「現在のスレッドのセッションが見つかりません」というメッセージが表示されます。問題は、宣言型 xml Bean と注釈付き Bean を混在させることにあると思います。次に、構成を再開します。
MyLibrary プロジェクト
春 3.1.4 休止状態 4
applicationContext.xml
モデル-コア-security.xml
component-scan を使用して、AccountService、AccountDAO、および PermissionEvaluator の Bean を作成します。
AccountService.java (com.mycompany.services)
AccountDAO.java (com.mycompany.dao)
(AccountService e AccountDAO はトランザクションです)
ここで、AccountController.java 内でaccountService.listAccounts ()を呼び出します。これで問題ありません。
しかし、AccountService を PermissionEvaluator クラスに挿入すると (次のスニペット)、accountService.listAccounts()を呼び出すと、AccountController は現在のスレッドで No Session found を取得します。
PermissionEvaluator.java (com.mycompany.permissionEvaluator)
model-core-security.xmlで宣言されたexpressionHandler beanにcomponent-scanで作成したPermissionEvaluator(with AccountService, AccountDAO)を使用しています。
「現在のスレッドのセッションが見つかりません」の原因でしょうか?
spring - 実行時に複数のトランザクション マネージャーから選択する
Tomcat にデプロイされた同じ Spring ベースの REST アプリケーションを使用する 2 つのクライアントがあります。クライアントに応じて、データ ソースとトランザクション マネージャーのどちらかを選択する必要があります。実行時に使用するトランザクション マネージャーを選択するにはどうすればよいですか?
コードでは、実行時に @Transactional("????") をどのように選択しますか。org.springframework.jdbc.datasource.DataSourceTransactionManager でそれができない場合、他の方法はありますか?