問題タブ [jta]
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.
jta - JTA を使用するときに自動化された統合テストを作成する方法は?
作業中のアプリケーションの統合テストを作成したいと考えています。JTA (複数のリソース) を使用し、アプリケーション サーバー内で実行されます。このようなシナリオの自動テストを作成する最良の方法は何ですか? atomikos のようなスタンドアロンのトランザクション マネージャーを使用するか、何らかの方法でアプリケーション サーバー API/ツールをトランザクション処理に活用しますか?
java - JTA トランザクションにデータを添付するにはどうすればよいですか? (または一意に識別)
株式市場からシンボルの現在の株価を取得する getStockQuote() 関数があります。
私の目標は、JTA トランザクション内で getStockQuote() への最初の呼び出しで株価をフェッチすることですが、同じトランザクション内の後続のすべての呼び出しで同じ株価を再利用することです (例: 新しい株価をフェッチしようとしません)。別のトランザクションが開始された場合、または別のトランザクションが同時に実行された場合、他のトランザクションが最初の呼び出しで独自の株価を取得することを期待します。
これは、トランザクション内の一貫性を確保するためです。トランザクション内のすべての計算が同じ株価に基づくようにします。
これは、データベースからデータベース行を 1 回だけフェッチし、キャッシュされた値をトランザクション内の同じデータベース行への後続のアクセスに使用するように JPA プロバイダーを構成する方法に似ています。
これを達成する方法についてのヒントはありますか?
java - JTA トランザクション: トランザクションでロールバックが呼び出されずに例外が発生した場合はどうなりますか?
次のことを行うサードパーティのコードがあります
リスト項目
ユーザートランザクションを作成します。
(JPA を介して) MySQL データベースに永続化する作業を行います。
txn.commit()
それらには Exception ブロックがありますが、どれも呼び出しませんtxn.rollback
。優れたコーディング慣行では、例外が発生した場合はロールバックを呼び出す必要があると言われていますが、私の質問は、txn がコミットされておらず、例外が発生した場合、ロールバックを呼び出さないことの悪影響は何ですか?
java - アトミコス vs JOTM vs Bitronix vs?
私はJTAを初めて使用し、それは基礎となるトランザクションマネージャーです。これらのそれぞれの長所/短所を説明できる人はいますか? タイトルにリストされていない他のものを自由に追加してください.
また、主要なアプリケーション サーバー (WebSphere、JBoss、Glassfish) には独自の JTA 準拠のトランザクション マネージャーがありませんか? それらの環境で、これらのサードパーティの実装を引き続き使用しますか?
java - DAOの統合テストはアプリケーションサーバーで実行する必要がありますか?
私は開発中の3層アプリケーションを持っており、永続層でDAOの統合テストを作成しています。アプリケーションがWebsphereまたはJBossで実行される場合、これらのアプリケーションサーバーの接続プールとトランザクションマネージャーを使用することを期待しています。アプリケーションがTomcatまたはJettyで実行される場合、プーリングにはC3P0を使用し、トランザクションにはAtomikosを使用します。
これらの異なるサブシステムのために、DAOは完全に構成されたアプリケーションサーバー環境でテストする必要がありますか、それともサービスレイヤーの統合テスト時にこれらの懸念に対処する必要がありますか?現在、DAO統合テスト用に非JTA(つまりリソースローカル)トランザクションを使用して単純なJDBCデータソースをセットアップすることを計画しているため、アプリケーションサーバーは関与しません。 。
jpa - JPA/JTA DAO 統合テスト用の JNDI データソースを取得するには?
persistence.xml で JTA トランザクションを指定した JPA アプリケーションがあります。なんらかの理由で、JTA を使用する場合、persistence.xml 内で JNDI データ ソースも指定する必要があることがわかりました。コンテナの外部で統合テストを行おうとしていて、JNDI が使用できない場合を除き、これで問題ありません。
私の質問は次のとおりです。
a) jdbc データソースを JTA トランザクション マネージャに挿入する方法はありますか? b) そうでない場合、統合テスト中に JNDI ルックアップをどのように処理しますか?
編集:統合テストを起動するときに発生するエラーは次のとおりです。
hibernate - SpringコンテキストでJPAEntityManangerを作成する際の問題
JPAプロバイダーとしてHibernateを使用するJPA/Springアプリケーションがあります。コードの一部では、Spring DIを使用するのではなく、新しい演算子を使用してアプリケーションでDAOを手動で作成する必要があります。これを行うと、@PersistenceContextアノテーションはSpringによって処理されません。
DAOを作成するコードには、entityManagerを次のように設定するために使用したEntityManagerFactoryがあります。
問題は、これを行うと、Hibernateエラーが発生することです。
Springエンティティマネージャのファクトリ構成は次のとおりです。
hibernate - AtomikosのロールバックはJPA永続コンテキストをクリアしませんか?
Spring / JPA / Hibernateアプリケーションを使用しており、H2およびMySQLに対するJunit統合テストに合格させようとしています。現在、トランザクションにはAtomikosを使用し、接続プールにはC3P0を使用しています。
私の最善の努力にもかかわらず、私のDAO統合は、テストの1つがorg.hibernate.NonUniqueObjectExceptionで失敗しています。失敗したテストでは、「new」演算子を使用してオブジェクトを作成し、IDを設定して、persistを呼び出します。
前のテストメソッドでは、同じことを行います(createNewUser()は、毎回同じIDを持つオブジェクトを作成するヘルパーメソッドです)。同じIDを持つ2番目のオブジェクトを作成して永続化することが原因であると確信していますが、各テストメソッドは独自のトランザクションであり、作成したオブジェクトはプライベートテストメソッド変数にバインドされています。ログでは、SpringTestとAtomikosが各テストメソッドに関連付けられたトランザクションをロールバックしていることもわかります。
ロールバックによって永続コンテキストもクリアされたと思います。思い切って、欠陥のあるテストメソッドの最初にdao.clear()の呼び出しを追加したところ、問題は解決しました。したがって、ロールバックは永続コンテキストをクリアしませんか?そうでない場合は、誰がしますか?
私のEntityManagerFactory構成は次のとおりです。
java - UserTransaction と EntityTransaction の違い
UserTransaction
タイトルがすべてを物語っています: aと anの違いは何EntityTransaction
ですか?
私の初歩的な理解はUserTransaction
、JTAが必要な場合(複数のものに対してクエリを実行する場合など)にEntityTransaction
使用され、JPAのみが必要な場合(クエリがアトミックな場合など)に使用されることです。
それが2つの唯一の違いですか、それともそれ以上のものがありますか?
hibernate - 複数のデータベースで Spring、Hibernate、JPA、および Tomcat を使用するためのオプション
Spring 2.5.6、Hibernate 3.4 (JPA プロバイダーとして Hibernate を使用)、および Tomcat 6 で実行されている Java Web アプリがあります。1 つの DB スキーマ/永続ユニットで動作していますが、2 つのスキーマ/永続ユニットに接続する必要があります。 . JBoss や Glassfish などの J2EE コンテナに移行せずにこれを行うことはできますか? JOTM やグローバル / XA トランザクションなどを使用する必要がありますか?