最近、プロジェクトは環境を切り替え、WebLogic を Tomcat に置き換えました。途中で発生した問題を記録しました。 Tomcat で JTA を使用すると、Tomcat に Atomikos をデプロイし、Tomcat でサポートされているデータ ソースを使用できます。また、プロジェクト内で構成し、Spring を使用してデータ ソース、接続プール、トランザクション マネージャーなどを構成することもできます。 2 つの方法にはそれぞれ特徴があります。この記事では、Tomcat と Atomikos の統合についてのみ紹介します。統合後、Tomcat は JTA トランザクション マネージャーとデータ ソースを外部に提供できます。 Atomikos を使用する前は JOTM も使用していましたが、同時実行性の高い状況では JOTM が頻繁に失敗し、使用を断念せざるを得ませんでした。テストを通じて、Atomikos は優れたパフォーマンスと安定性を備えていることがわかりました。 Atomikos の最新バージョン 4.04 を使用しました。Jar パッケージは Maven 構成ライブラリから取得できます。リンク アドレスは次のとおりです: http://mvnrepository.com/artifact/com.atomikos Hibernate を使用しない場合、必要なパッケージは次のとおりです。 atomikos-util.jar、 jta.jar、 トランザクション.jar、 トランザクションAPI.jar、 トランザクション-jdbc.jar、 トランザクション-jta.jar 統合パッケージ: アトミコス統合拡張機能 3.7.2.jar データベースドライバを忘れずに ステップ 1: これらの jar を Tomcat の lib ディレクトリにコピーします。 TomcatをAtomikosと統合するには、統合パッケージも必要です。この統合パッケージには2つのクラスが含まれています。実装を自分で参照するか、公式のjarパッケージを使用できます。最新のものは次のとおりです。 アトミコス統合拡張機能 3.7.2.jar ステップ2: tomcat/config/server.xmlにリスナーを追加する
ステップ 3: tomcat/config/context.xml にデータ ソースと関連するトランザクション マネージャーを追加します。以下は参考例です。必要に応じてパラメーターを変更します。 <リソース名="jdbc/DS_MYSQL" auth="コンテナ" タイプ="com.atomikos.jdbc.AtomikosDataSourceBean" ユニークリソース名="jdbc/DS_MYSQL" xaDataSourceClassName="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" xaProperties.databaseName="db_test" xaProperties.serverName="localhost" xaProperties.port="3306" xaProperties.user="ルート" xaProperties.password="ルート" 最大プールサイズ="200" xaProperties.url="jdbc:mysql://localhost:3306/db_test?characterEncoding=UTF8" ファクトリー="com.atomikos.tomcat.EnhancedTomcatAtomikosBeanFactory" /> <リソース名="UserTransaction" auth="コンテナ" タイプ="javax.transaction.UserTransaction" /> <トランザクションファクトリー="com.atomikos.icatch.jta.UserTransactionFactory" /> ステップ 4: tomcat/lib ディレクトリに jta.properties ファイルを追加し、Atomikos トランザクション関連のパラメータを設定します。それ以外の場合は、デフォルトの構成パラメータが使用されます。同時トランザクション数 (デフォルトでは 50) とタイムアウトを調整する必要があります。ファイル内のいくつかのパラメータ構成を以下に示します。パラメータの説明については、公式ドキュメントを参照してください: https://www.atomikos.com/Documentation/JtaProperties このライン構成を追加する com.atomikos.icatch.service=com.atomikos.icatch.standalone.UserTransactionServiceFactory Atomikosのパラメータのデフォルト値は、transactions.jar、transactions-default.propertiesで定義されています。興味があれば、自分で確認してみてください。 上記の 4 つの手順を設定すると、Tomcat の統合が完了します。プロジェクト内で Spring を使用して、データ ソースとトランザクション マネージャーを関連付けることができます。参考構成は次のとおりです。 <!-- アプリケーション サーバーに接続するために使用される JNDI テンプレート構成情報 --> <bean クラス="org.springframework.jndi.JndiTemplate" id="jndiTemplate" /> <bean クラス="org.springframework.jndi.JndiObjectFactoryBean" id="データソース"> <プロパティ名="jndiName"> <値>java:comp/env/jdbc/DS_MYSQL</値> </プロパティ> <プロパティ名="jndiテンプレート"> <ref bean="jndiテンプレート"/> </プロパティ> </bean> <bean id="jdbcTemplate" クラス="org.springframework.jdbc.core.JdbcTemplate"> <プロパティ名="データソース"> <ref bean="データソース" /> </プロパティ> </bean> <!--ユーザー トランザクション オブジェクト--> <bean クラス="org.springframework.jndi.JndiObjectFactoryBean" id="userTransaction"> <!--class="org.springframework.transaction.jta.WebLogicJtaTransactionManager">--> <プロパティ名="jndiName"> <値>java:comp/UserTransaction</値> </プロパティ> <プロパティ名="jndiテンプレート"> <ref bean="jndiテンプレート"/> </プロパティ> </bean> <bean id="atomikosTransactionManager" クラス="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close"> <プロパティ名="forceShutdown" 値="false" /> </bean> <!-- アノテーションベースの宣言的トランザクション マネージャーを構成する --> <bean id="transactionManager" クラス="org.springframework.transaction.jta.JtaTransactionManager"> <プロパティ名="userTransaction" ref="userTransaction" /> <プロパティ名="transactionManager" ref="atomikosTransactionManager" /> </bean> <tx:annotation-driven transaction-manager="transactionManager" /> 以下は私のプロジェクトで使用されている設定です。conf.xmlで設定することをお勧めします。
auth="コンテナ" タイプ="com.atomikos.jdbc.nonxa.AtomikosNonXADataSourceBean" ユニークリソース名="jdbc/DS_MYSQL" ドライバークラス名="com.mysql.jdbc.Driver" 最大プールサイズ="200" url="jdbc:mysql://localhost:3306/db_test?characterEncoding=UTF8" ユーザー="root" パスワード="root" ファクトリー="com.atomikos.tomcat.EnhancedTomcatAtomikosBeanFactory" /> **落とし穴記録** **ここでは、トランザクション マネージャー TransactionManager があるため、この型を通じて UserTransaction を取得することはできません。デバッグ後、このクラスが見つからないことがわかりました** **UserTransaction を正常に取得するには、type="com.atomikos.icatch.jta.userTransactionImp" に変更します。** <リソース名="UserTransaction" auth="コンテナ" タイプ="com.atomikos.icatch.jta.userTransactionImp"/> <トランザクションファクトリー="com.atomikos.icatch.jta.UserTransactionFactory" /> https://blog.csdn.net/xuyu_yt/article/details/77905553?locationNum=14%20fps=1 Tomcat と Atomikos を組み合わせて JTA を実装する方法についての記事はこれで終わりです。Atomikos による JTA の実装に関する関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: HTML で自動ページジャンプを実現する 5 つの方法
>>: MySql8.0 のトランザクション分離レベルエラーの問題を解決する
1. 問題MySQL の初期化時に発生する問題は、次のとおりです。 1. 「MSVCR120.dll...
導入: AD は Active Directory の略称で、中国語では Active Direct...
目次序文1. 例で理解する2. ソースコードを分析する3. まとめ要約する序文他の人のコンポーネント...
この記事の例では、画像拡大鏡効果を実現するためのVue3の具体的なコードを参考までに共有しています。...
VMware Tools は VMware 仮想マシンに付属するツールで、VirtualBox (...
この記事では、Vueカスタムツリーコントロールの使い方を参考までに紹介します。具体的な内容は次のとお...
目次問題の説明1. 基本的な解決策2. 中間的な解決策3. 高度なソリューション4. ハードコアソリ...
目次1. 時計の新しい使い方1.1. ウォッチの使用構文1.2. 複数の属性値を監視する1.3. 参...
元のアドレス: https://blog.csdn.net/m0_46579864/article/...
現在、2016サーバーは、win2008や2012よりも優れたマルチサイトhttpsサービスをサポー...
ps コマンドを使用できます。プロセスの PID など、現在実行中のプロセスに関する関連情報を表示で...
目次1. nodejsをダウンロードする2. ダブルクリックしてインストール3. グローバル npm...
目次1. コンポーネントをうまく活用してコードを整理する1. UIコンポーネントを抽出する2. モジ...
これ以上時間を無駄にせず、早速本題に入りましょう。 1. ロゴに代替テキストを追加するこれには 2 ...
この記事の例では、矢印をクリックして画像を切り替えるVue + jsの具体的なコードを共有しています...