問題タブ [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.
liquibase - AtomikosSQLException when using Atomikos and liquibase
I'm having problems getting liquibase to work with atomikos in my spring web application. The project works fine until I try to add liquibase into the mix. When I configure liquibase for my project, I am seeing an exception. The key piece is where it says:
Caused by: com.atomikos.jdbc.AtomikosSQLException: Connection was already closed - calling hashCode is no longer allowed!
Liquibase is trying to call hashCode() on the JDBC connection, which was already closed. I'm trying to figure out if there is a way to configure Atomikos (or perhaps Hibernate?) to keep the connection open long enough for liquibase to do its thing?
Has anyone had experience with liquibase + atomikos?
Here's the stack trace:
java - org.hibernate.HibernateException: 休止状態のアップグレードで TransactionManagerLookup が指定されていません
私はSpring 4.1.4、hibernate 4.3.8、atomikos 3.9.3、Java 8、Tomcat 8を実行しています。
サーバーを起動すると、localhost.log に上記の例外が表示されますが、既に構成している場所とは別に、TransactionManagerLookup を構成する場所がわかりません。これは、休止状態をアップグレードする前には発生していなかったため、バージョン管理の問題である可能性が最も高いです。誰か助けてくれませんか?
参考までに: catalina.out は有用なものを何も示していません。ただ:
私のappContextは次を定義します:
完全なスタック トレースは次のとおりです。
EDIT:Atomikosトランザクションマネージャーはそのように構成されています
編集2:
ここで少し物事を明確にする必要があると思います。AbstractMyDAO という DAO オブジェクトがあります (スタックからわかるように)。このオブジェクトでは、セッション ファクトリが定義されています
currentSession が呼び出されると、hibernate がこのセッション ファクトリに関連付けられたトランザクション マネージャー ルックアップを見つけられないため、上記のエラーがスローされます。
このセッション ファクトリは、アプリ コンテキスト ファイルで次のように定義されています。
ご覧のとおり、プロパティ hibernate.transaction.manager_lookup_class が定義されていますが、Bean の作成時に見つからず、その理由がわかりません。構成は変更されましたか?
EDIT 3: デバッグ時: final JtaPlatform jtaPlatform = factory().getServiceRegistry().getService( JtaPlatform.class );
NoJTAPlatform を返します。これは私の問題だと思います。
編集 4: tomcat に適した JtaPlatform を実装するものは何もないように思われますか、それとも私は精神的ですか?
spring - Spring Batch で Hibernate 用に Atomikos UserTransactionManager を構成する
私がする必要があるのは、3 つの異なる Oracle データベースにわたる分散トランザクションです。それぞれの 1 つは JDBC を介してアクセスする必要があり、残りの 2 つは Hibernate を介してアクセスする必要があります。これが私のAtomikos構成です:
Hibernate 構成は、このトピックで見つかったソリューションに触発されています。
そして、 SpringJtaPlatformAdapter という名前の小さなクラス:
バッチを実行すると、次のことを確認できました。
- アトミコスの
atomikosUserTransaction
とが最初に構築されますatomikosTransactionManager
- は
mainTransactionManager
直後に初期化されます - myの
setJtaTransactionManager
メソッドSpringJtaPlatformAdapter
が呼び出され、 と の両方のメモリ アドレスが以前に作成されたものと一致sTransactionManager
するsUserTransaction
- の
locateTransactionManager
がSpringJtaPlatformAdapter
2 回呼び出されます (持続性ユニットごとに 1 つ)。 - その後、Hibernate コードが実行され、エンティティが正しく初期化されます
- JDBC 経由でアクセスされるデータベースが更新されます
- Hibernate を介してアクセスされるデータベースは更新されません (ロールバックが行われたかのように)。
実行中、ログに警告が 1 つだけ表示されます。
たぶんそれが役立つかもしれませんが、個人的には警告メッセージが表示されません。
Maven によると、Spring ORM 3.2.0 と Hibernate 4.2.3 および Atomikos 3.8.0 を使用しています。
spring - 分散トランザクション、トランザクションがアクティブではなくなった
トランザクションを分散させることを考えています。小さなプロジェクトをテスターとして実装し、他のプロジェクトに適合することを確認しました。
最初に、注釈と Java クラスを介して構成を設定し、それは完全に機能しましたが、あまりにも多くの構成クラスの作成を避けるために、.XML ベースの構成を試してみたいと思います。
まだサーバーにデプロイされた適切な Web アプリではなく、JUnit でテストしていますが、エンティティ マネージャー、トランザクション構成、および @Services の挿入をロードしている間は問題なく動作しているように見えますが、@Repository でメソッドを呼び出すと次のエラーが発生します。
Springboot 1.2.2、Atomikos 3.9.3、Hibernate 4.3.7、および SQL Server 2008 を使用しています。
構成のほとんどは、persistence.xml にあります。
そして、applicatioContext.xml で:
私の @Repositories は空です。JpaRepository を拡張するだけで、実際には単なるインターフェースです。
私のテストクラス:
私は投稿の限界にいます。必要なその他の情報はコメントに記載されます。
トランザクションが Hibernate に参加していないように見える理由について何か提案はありますか?
ありがとうございました。
oracle - Hibernate で SQL ステートメントにタイムアウトを設定する方法
私が試したこと...
基準の使用:
=>ゼロ効果
HQL の使用:
=>ゼロ効果
トランザクションレベルで試してみました:
何らかの効果; クエリが実行された後、例外がスローされますが、トランザクションは 1 秒後に中止されません。
これは、Atomikos TM を備えた Jetty サーバーで実行されています。
特定のクエリでタイムアウトを指定して、タイムアウト後に呼び出しが中止されるようにするにはどうすればよいですか (1 秒ではありません。これはより迅速にテストするためです)。
アップデート
同じテストを実行しているが、Atomikos/Hibernate/Spring をバイパスしている場合 (プレーン JDBC を使用している場合)、タイムアウトは機能します (少なくとも約 1 秒ではありません。H2 では非常に近くなり、Oracle では 2 秒を超えることもありました)。 )。結果は期待どおりでした: SQLException: ORA-01013: user requested cancel of current operation .
アップデート
休止状態をデバッグすると、タイムアウトが PreparedStatement に設定されていることがわかりますが、効果がないようです。
spring-boot - spring-boot-starter-jta-atomikos および spring-boot-starter-batch
これら両方のスターターを 1 つのアプリケーションで使用することは可能ですか?
CSV ファイルからデータベース テーブルにレコードをロードしたいと考えています。Spring Batch テーブルは別のデータベースに格納されているため、JTA を使用してトランザクションを処理する必要があると想定しています。
@EnableBatchProcessing を @Configuration クラスに追加すると、PlatformTransactionManager が構成され、Atomikos による自動構成が停止します。
これを行う方法を示すスプリング ブート + バッチ + jta サンプルはありますか?
どうもありがとう、ジェームズ
spring - Spring Boot JTA エラー
プロジェクトに JTA を追加しようとしています。以下を Gradle ファイルに追加したところ、アプリケーションが起動しなくなりました。以前は問題なく動いていました。
次のエラーが表示されます。
これは私の永続化構成ファイルです。
私のapplication.ymlファイル
java - Atomikos + OpenJpa + DB2 XA スタンドアロン - setAutocommit(true) は許可されていません
春のバッチ プロジェクトがあり、Atomikos をトランザクション管理に使用しています。
これが私のデータソース構成とatomikos構成です。
spring リポジトリを呼び出してデータベースを更新すると、無効な操作: setAutoCommit(true) はグローバル トランザクション中に許可されないというエラーがスローされます。以下のスタックトレースを参照してください。これについての考えは非常に役に立ちます。