問題タブ [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.
java - javax.jms.ConnectionFactory と javax.jms.XAConnectionFactory の違い
私は分散トランザクションの必要性から JTA の世界に足を踏み入れていますが、両者の違いjavax.jms.ConnectionFactory
やjavax.jms.XAConnectionFactory
、より正確に言えば、私javax.jms.ConnectionFactory
にしかできないと期待していたことがどのように実行されるのかがわかりjavax.jms.XAConnectionFactory
ません。
詳細: Atomikos Essentials をトランザクション マネージャーとして使用しており、アプリは Apache Tomcat 6 で実行されています。
OpenMQ
JMS プロバイダー ( ) をリソースとして登録したダミー アプリを使用して小さな POC を実行していますJNDI
。
そして奇妙な問題は、私のコードでこれを行うことです:
コードの後半で、このセッションを a で使用すると、 または のいずれかを使用UserTransaction
して 2 つMessageProducer
の s で問題なく動作します。Commit
Rollback
私が理解していないのはjavax.jms.XAConnectionFactory.createConnection()
、メソッドを使用していて、Session
どのジョブが機能するかということです。javax.jms.XAConnectionFactory
役割は?
javax.jms.BasicConnectionFactory
また、両方のクラス (および) のソース コードを調べ、XA クラスが をオーバーライドしないことを確認したことも付け加えておきますcreateConnection
。
java - Can I reuse a UserTransaction instance after commit()?
Is the reusage of the ut instance in the following code correct?
When the JNDI resource is defined so:
What I'm not sure about is whether I need to add another lookup, and so to retrieve a new UserTransaction from the factory, before beginning a new UserTransaction?
I don't think it's relevant but as the resource definition states I'm using Atomikos as my Transaction Manager (and so it's factory as the factory).
Thanks,
Ittai
java - Atomikos ログでの UserTransaction の「TERMINATED」状態は何を意味しますか?
J2SE アプリケーションで Atomikos エッセンシャル トランザクションを TM として使用しています。
次のコードがあります。
そして、ログに次の例外が表示されます。
java.lang.IllegalStateException: TM_UNIQUE_NAME0003000006 はアクティブではなくなりましたが、状態はTERMINATEDです com.atomikos.icatch.imp.CoordinatorImp.addParticipant(CoordinatorImp.java:615) で com.atomikos.icatch.imp.TransactionStateHandler.addParticipant(TransactionStateHandler.java:133) で com.atomikos.icatch.imp.TransactionStateHandler.committed (TransactionStateHandler.java:347) com.atomikos.icatch.imp.TransactionStateHandler.commit(TransactionStateHandler.java:298) com.atomikos.icatch.imp.CompositeTransactionImp.doCommit(CompositeTransactionImp.java:319) com.atomikos. icatch.imp.CompositeTerminatorImp.commit(CompositeTerminatorImp.java:79) com.atomikos.icatch.jta.TransactionImp.commit(TransactionImp.java:236) com.atomikos.icatch.jta.TransactionManagerImp.commit(TransactionManagerImp.java: 496) com.atomikos.icatch.jta.UserTransactionImp.commit(UserTransactionImp.java:129) com.mycompany.module.com.mycompany.module.model.myClass.notifyObservers(myClass.java:291) の java.util.Observable.notifyObservers (不明なソース) の view.myOtherClass.transformMpr(myOtherClass.java:57)。 model.myClass.MultiStateEscalation.run(myClass.java:91) で java.util.concurrent.Executors$RunnableAdapter.call(不明なソース) で java.util.concurrent.FutureTask$Sync.innerRun(不明なソース) で java.util java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301 の .concurrent.FutureTask.run(不明なソース) java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(不明なソース) で java.util.concurrent. ThreadPoolExecutor$Worker.runTask(不明なソース) java.util.concurrent.ThreadPoolExecutor$Worker.run(不明なソース) で java.lang.Thread.実行 (不明なソース)
の 57行目は、上記のコードでmyOtherClass
呼び出す行です。commit()
userTransaction は のインスタンスですUserTransaction
。私が理解できないのは、 TERMINATED
と
はどういう意味ですか? Atomikos ディストリビューションでこれらのクラスを見つけることができませんでした (これらのクラスはオープン ソースであり、さらにすべてのソースで文字列のテキスト検索を実行したため奇妙です)、終了は で定義されているステータスの 1 つではありません。
誰かがこれに遭遇しましたか?保持している userTransaction が commit に対して有効かどうかを確認するにはどうすればよいですか? javax.transaction.Status
ありがとう、
イッタイ
java - Java:多くのスレッド内でのXAトランザクションの伝播
次のユースケースをサポートするために、Java SE(Java EEまたはSpringではない)でトランザクションマネージャー( Bitronix、JBoss TS、Atomikosなど)を使用するにはどうすればよいですか?
次のクラスがあると仮定します。
そして、次のように、そこからJavaRunnableを作成します。
これで、サービスレイヤーに別のクラスがあります。
また、クライアントはサーブレットまたはその他のマルチスレッド環境にすることができます。
BEGINTRANSACTIONおよびENDTRANSACTIONパーツの正しいコードは何でしょうか?これも実現可能ですか?そうでない場合は、何を変更する必要がありますか?要件は、updateDatabases()メソッドを並行して(同時に複数のデータベースにアクセスするため)、トランザクションを維持することです。
java - 異なるスキーマのテーブルを更新するオラクル関数の書き方
こんにちは、wbsphere アプリケーションを tomcat に移植しています。同じサーバー上の 2 つのデータベースで作業する必要があり、Tomcat を atomikos transactionessential と統合しました。これは jta を使用した最初のプロジェクトであり、スキーマが同じサーバー上にあるため、xa と 2 フェーズ コミットは必要ないとオラクル データベース管理者から言われました。だから私はatomikosで非xaアプローチを使用しました。単一のスキーマでの次のコードは正常に機能します (コミットとロールバックは期待どおりです)。
別の場所では、次のオラクル関数が呼び出され、両方のスキーマを変更しようとすると、コード 1 が返されます。pl-slq はわかりませんが、戻り値は最初の delete で例外が発生したことを意味するように見えますが、2 番目の削除は実行されてコミットされます。誰かが私にこの関数の意味を説明できますか? 以下は、関数とそれを呼び出すコードです
助けてくれてありがとう
編集:この(ひどい)コードをさらに調査し、あなたの答えのおかげで、悪名高い「eseguiSP」にこれを見つけました:
そして、私はそれを次のように変更しました:
今では正常に動作します (または少なくとも 0 を返します)。古いコードでは、raccomandata_out からレコードを削除しても、常に 1 が返されるのはなぜですか?
spring - ActiveMQ JMS XA Atomikos - トランザクションが開始されていないというエラー
XA トランザクションを使用して、ActiveMQ と Hibernate (Sql Server 2008) の間のアクティビティを調整したい状況です。
私たちは以下を使用しています:
- 春 3.0.5
- 休止状態 3.6.2
- アクティブMQ 5.5.0
- アトミコス 3.7
トランザクションが開始されていないことに関連するログ ファイルに、次のエラーが生成されていることがわかります。これらは常に JMS に関連しています。
トランザクション '[ID]' は開始されていません。
これらは常にログに生成されています。
同じ JMS キューで動作する 3 つの Web アプリケーションがあり、1 つの Web アプリケーションのみが実行されている場合はエラーが生成されないようであるという点で、問題はより複雑です。
これらは、同じマシンで実行されている Tomcat 7.0.14 の個別のインスタンスにデプロイされます。
私たちの春の構成:
classcastexception - Atomikos AtomikosJTATransactionFactory が ClassCastException を与える
Hiberateの上にJPAであるコードにAtomikos Transaction Managerを実装しようとしていました。このエラーが発生しています。どんな助けでも大歓迎です.:
これらは私の構成です:
Persistence.xml
persistence-config.xml
java - Infinispan による同一プロセス内での分離
Infinispan キャッシュと Atomikos トランザクション マネージャーを中心にアプリケーションを構築しています。同じ JVM 上の 2 つの異なるスレッドで開いているトランザクションに対して、トランザクションの分離が機能していないことがわかりました。
キャッシュは、次のコードを使用してインスタンス化されます。
Withは、configure Atomikos トランザクション マネージャーを返すthis.tmLookup
単純な実装です。org.infinispan.transaction.lookup.TransactionManagerLookup
キャッシュに 1 つの値を入力して簡単なテストをセットアップし、2 つのスレッドでリーダーとライターをそれぞれ別のトランザクションで起動します。基本的に、ライターはキャッシュに保存されている値を取得し、値を変更してキャッシュに保存します。一方、 get を使用した読み取りは、さまざまな段階で値を表示します: ライターによって変更が行われる前、ライターが pojo を変更した後、ライターが更新された pojo を保存した後、最後にライターのトランザクションのコミット後.
ライターのコードは次のとおりです。
リーダーコードは次のとおりです。
キャッシュから返されたエンティティを追跡するために、Pojoを次のtoString()
ように実装しました。
キャッシュが分離されるように構成されているため、リーダーとライターの間に異なる pojo インスタンスがあり、ライターのトランザクションがコミットされた後にのみ変更のみが表示されると予想しました。
ただし、次の出力が得られました。
基本的に、キャッシュは両方のスレッドに同じ pojo インスタンスを返すため、ハッシュマップのように機能します。
質問は:構成または予想される動作で何かを見逃していませんか?
Atomikos から、リーダーとライターの両方で個別のトランザクションの開始を示すログ メッセージを取得できるため、トランザクション マネージャーが機能していることは確かです。
ただし、Infinispan の代わりに Ehcache を使用して同じテストを試みたところ、期待どおりの結果が得られました。2 つのテストのログを比較すると、Infinispan のトランザクション ID がないことだけが明らかな違いである同様のメッセージが見つかりました。
対
spring - Atomikos + Infinispan + Jetty エラー
桟橋で休止状態、atomikos、および infinispan で Spring を使用しています。エンティティに @Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL) として注釈を付けた後、次のエラーが表示されます
問題は atomikos と infinispan の間にあるようです。私の構成は、ドキュメントの例に基づいています。ただし、https://docs.jboss.org/author/display/ISPN/Implementing+standalone+JPA+JTA+Hibernate+application+outside+J2EE+server+using+Infinispan+2nd+level+cacheでは、2 を追加するように言われています設定するプロパティhibernate.jndi.class
ですが、jettyで設定できるものは何ですか?
java - Atomikos vs. Bitronixvs.JBossTS-MVCCおよびネストされたトランザクション
以前のトランザクションマネージャーの1つを実装したいと思います。ただし、私はまだコンセプトフェーズにあるので、これらすべてのトランザクションマネージャーを試してみたいと思います。最終的な選択の基準は、使いやすさ、Tomcatの使用、適応性、そして何よりもネストされたトランザクションとMVCCのサポートです。
BitronixとAtomikosの後者の基準のサポートの可能性に関する情報を見つけることができませんでした。
JBossTSがMVCCとNTをサポートしていることは知っていますが、JBossの使用によってもたらされる大きなオーバーヘッドに関してJBossが適切かどうかはわかりません...特にSpringとHibernateのユーザーに関しては。
Atomikosおよび/またはBitronixが私の基準に適合するかどうかを知っていますか?それとも私自身のTMを実装する方が良いでしょうか?