問題タブ [spring-transactions]
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 - JUnitでのREQUIRES_NEWのテスト
テストを実行すると、method()の呼び出しでハングします。私は何か間違ったことをしていますか?ヘルプ!
上記のコードを忘れてください。Eclipseプロジェクト(springなどの依存関係を除く)をhttp://www44.zippyshare.com/v/46865082/file.htmlにアップロードしました。テストに合格する方法に関するすべての入力は本当にありがたいです!2つのsqliteデータベースと2つのdataSourcesがある場合のテストパス...
hibernate - Spring+Hibernate+2LC Infinispan+JPA の実例を持っているのは誰ですか?
EHCache を Infinispan に置き換えようと、すでに午前中ずっと頭を悩ませています。さまざまなリリースで多くの構成を試しました。しかし、トランザクション管理に関して、Hibernate と Spring の間のどこかにミッシング リンクがあるように常に思われます。残念なことに、これを一緒に機能させる方法を見つけることができないように思われることを認めなければなりません。
JPAとHibernate(4.0.1)に支えられたSpring(3.1)の古典的なソリューションを使用しています。第 2 レベルおよびクエリ キャッシュとして EHCache を使用。すべてスタンドアロンの Tomcat 7 にデプロイされています。
ここにいる誰かが、このために動作する Spring 構成を共有してくれますか?
どうもありがとう !
私はSpring構成を含めています - どこかに明らかな欠陥がある場合に備えて...
トランザクション検索クラスに org.hibernate.transaction.JBossTSStandaloneTransactionManagerLookup を使用すると例外が発生します。
依存関係を追加した後の例外 (非常に多くの間接的な依存関係が付属しています)
jpa - Aspectj コンパイル時のウィービング ベースのトランザクションが機能しない (WebService 呼び出しからの JPA)
Spring の @Transactional や @Configurable などのアノテーションをサポートするために、コンパイル時の織りで aspectj を使用しようとしています。私は org.springframework.orm.jpa.JpaTransactionManager トランザクション マネージャーを使用しています。GenericDAO で entityManager.persist(entity) を呼び出そうとするとログに表示される内容は次のようなものです。
そのため、テーブルごとの休止状態シーケンスは更新されますが、私のエンティティはデータベースに挿入されません。
entityManager.flush() を追加すると、「進行中のトランザクションはありません」という例外が表示されます。
ここで何が起こっているのですか?!
私の GenericDAO クラスは次のようになります。
WSSpringServletでエクスポートされた Web サービスから saveOrUpdate メソッドを呼び出します。
PS: また、私の Maven 設定は次のようになります。
コンパイルすると、十分にまともなものが得られます(私のアスペクトが適用されます):
そして、私の関連するSpring構成は次のとおりです。
すべてがまともに見えますが、これが機能しない理由の答えが見つかりません...
spring - Spring トランザクション マネージャーは接続をスレッドにバインドしますか?
次のスレッドを見つけました: JdbcTemplate と TransactionManager はどのように連携しますか?
その最初の文:
私が理解している限り、DataSourceTransactionManager は、指定された DataSource から現在のスレッドに JDBC 接続をバインドし、DataSource ごとに 1 つのスレッドにバインドされた接続を許可します。接続のプールの場合は、使用可能な接続の 1 つが使用されます。
・・・まさに知りたいところです。
トランザクション マネージャーを使用する場合、各スレッドが独自の単一の接続を持つことになりますか? また、その接続はどのくらい存続しますか? 同じスレッドが単一のリクエスト全体で同じ接続を使用していますか、それとも何か他のことが起こっていますか? トランザクションマネージャーがある場合とない場合 (実際にトランザクションがあるかどうかに関係なく) で、Spring が下で何をしているのかを正確に理解しようとしています。
spring - トランザクションを使用して非同期サービスにメッセージを送信する
非同期プロトコルで送信する必要があるメッセージを含む永続的なトランザクション キューがあります。各メッセージは独自のトランザクションで送信する必要がありますが、特定の時間に処理中のメッセージの数が原因でthread-per-messageを使用できず、スループット要件により中間状態が持続することができません。
のコードを見ると、トランザクション リソースを に格納するJmsTransactionManager
を使用していることがわかります。そのため、単一のスレッド内で複数のトランザクションをどうにかしてシェパードするために を実装する必要があるようです。これは少し極端なようです...TransactionSynchronizationManager
ThreadLocal
PlatformTransactionManager
この複雑さを解消する Spring Integration ユニットの配置はありますか? 私はむしろJTA/XAの情報を見るべきですか?
hibernate - Struts + Spring + Spring 管理トランザクション + 休止状態
Struts をフロントエンドとして使用し、Spring を IOC に使用し、休止状態 + c3p0 をデータソース プーリングとして使用しています。永続レイヤーにannotationsessionfactory Beanと@Transactionアノテーションを使用しています。これはすべて春豆を使用して管理されます。
ただし、永続層メソッドで @transactional アノテーションを使用していない場合でも、データは保存されます。
例:
豆は
セッションファクトリーはスプリングアノテーションファクトリーであり、トランザクションはこのように管理されます。
このメソッドはデータを保存しますが、トランザクション化はまったくしません。私によると、それは例外を経る必要があります。Oracle 11g と j-boss 4.2 サーバーを使用しています。私が考えているのは、私の取引が管理されていないということです。どんな例でも大歓迎です。
java - プログラムによるトランザクション AOP?
次の XML ベースのトランザクション AOP を Java 経由でプログラムでセットアップしたいと思います。
これまでのところ、私は次のものを持っています。次のようなエクスプレッション ポイントカットを作成できます。
AspectJPointcutAdvisor
次に、との組み合わせを使用しAspectJAroundAdvice
て、実際のアドバイスを設定できます。
tx
しかし、名前空間を支える Spring コードを見ると、TransactionInterceptor
が作成されているようです。たぶん、私はこれをすべて間違って見ています。
なぜ私はこれをしたいのですか?
さて、Spring 構成を XML から @Configuration クラスに移動しましたが、tx 名前空間のものを変換する方法に行き詰まっています。私は注釈を使用し@EnableTransactionManagement
て@Transactional
いますが、上記のポイントカット式に一致するすべてのメソッドに注釈を追加するのはリスクが高すぎます。私は何かを逃すにちがいありません。
spring - JAX-RSとHibernateを使用したSpringトランザクションの実装
バックグラウンド
データベースと対話してHibernateを介していくつかのCRUD操作を実行するApache-CXFを使用してRESTfulWebサービスを実装しようとしています。Webサービスは、JacksonJAX-RSプロバイダーを使用してJSON形式のオブジェクトを消費および生成します。
現在、応答オブジェクトをシリアル化しようとすると、Jacksonプロバイダーからバブリングする「コレクションの遅延初期化に失敗しました...セッションまたはセッションが閉じられていません」という例外が発生しています。
サービスメソッドに@Transactional
そのマークを付けた場合、応答をシリアル化したときにジャクソンプロバイダーがセッションを利用できると想定しましたが、そうではないようです。
質問
シリアル化中にJacksonがオブジェクトを歩いているときに、休止状態のセッションを利用できるようにするにはどうすればよいですか?
私が試したこと
スプリング構成
サービスビーン
コレクションBean
java - Spring Test を使用して SQL スクリプトを実行すると、変更がコミットされます
Spring を使用して JUnit テストで SQL スクリプトを実行しようとしています。スクリプトは、テスト用のデータを設定するために使用されています。ただし、スクリプトが実行されると、スクリプト内の INSERT は各テストの後にコミットされます。Spring のドキュメントには、DDL によるロールバックは期待できないと書かれていますが、スクリプト内のすべてが DML です。含まれているのは、INSERT ステートメントと、最後の挿入 ID の取得 (SET @blah = LAST_INSERT_ID()) だけです。
何か間違った設定をしていますか? これを MySQL データベースに対して使用しています。構成は次のとおりです。
これが、いくつかの調査に基づいて起こっていると私が思うことです。executeSqlScript への最初の呼び出しは、別のトランザクションで実行されています。Spring の SimpleJdbcTemplate.update メソッドは、executeSqlScript によって呼び出されます。これは、接続プールから取得される JDBC 接続にスコープが設定されているため、DB への後続のアクセスで同じ接続を取得することが保証されていないため、同じトランザクションで実行されることを保証できません。
TransactionManager または (Hibernate Session Factory) を介してすべての DB 操作を行う場合、内部がトランザクションをスコープする方法のために機能します。ここでの私のオプションは次のとおりです。
SimpleJdbcTemplate.update を実行する方法と、同じトランザクションでテストしている後続の実際のコードを理解してください。これはできると思いますが、これまでの努力は実を結びませんでした。
SessionFactory を介してすべてのテスト データの設定を行います。したがって、JDBC を介して単純な SQL スクリプトを実行する代わりに、モデル オブジェクトにデータを入力し、Hibernate DAO を介して永続化します。
私はここで正しい軌道に乗っていますか?誰でもこれ以上のガイダンスを提供できますか?