最近、プロジェクトは環境を切り替え、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.ターミナルに入ったらPHPのバージョンを確認するphp -v出力は次のようになります。 PHP ...
この記事では主に、NUXT の validate メソッドに基づいてフォーム検証を実装する方法につい...
この記事では、年、月、日の3段階のリンクを実現するためのJavaScriptの具体的なコードを参考ま...
序文: Linux ホストは、エージェント プログラムをインストールする場合でも、SNMP を使用す...
display: flex レイアウトに関しては、深く理解している人もいますし、私も他の人の作業か...
シナリオ: ページAがページBを開くと、ページBで操作した後、ページAは変更されたデータを同期する必...
この記事の環境はWindows 10、MySQLのバージョンは5.7.12-logです1. 基本的な...
序文Nginx はパフォーマンスを重視して設計された HTTP サーバーです。Apache や li...
1 yumでソフトウェアをインストールしたときにダウンロードしたrpmパッケージを保存しますyum ...
0. 新しい操作: mkdir abc #新しいフォルダを作成 touch abc.sh #新しいフ...
目次MySQLクラッシュ回復プロセス1. ブラックボックス下のデータフローを更新する2. やり直しロ...
フロントエンド開発において、$ は jQuery の関数です。$ のパラメータが異なると、実装される...
お使いのコンピュータが Mac の場合、homebrew を使用して MySQL をインストールする...
目次概要オブジェクトにメソッドを定義するオブジェクトリテラルオブジェクトプロトタイプ動的コンテキスト...
ルート ルーティング コンポーネント (アプリの下のルート ルーティング コンポーネント。子コンポー...