最近、プロジェクトは環境を切り替え、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 のトランザクション分離レベルエラーの問題を解決する
この記事では、Docker で新しいイメージを手動で構築する方法を紹介し、皆さんと共有します。詳細は...
目次1. バックアップ1.1 万全の準備1.2 追加の準備2 バックアップとリカバリ2.1 データの...
H タグ、特に h1 タグの使用は常に議論の的となっている問題であり、私たちが研究する価値のある問題...
<本文> <div id="ルート"> <h2&...
目次序文成果を達成するコードCSSコードJSコードHTMLコードデモンストレーションのプロセス序文ク...
目次Dockerコンテナのソースコードを使用してhttpdをデプロイし、ストレージボリュームを使用し...
MySQL-Group-Replication は、MySQL-5.7.17 で開発された新しい機...
1. テーブルを作成する テーブル「学生」を作成( `id` int(11) NULLではない、 `...
最近、IM を実行するときに、これらの 3 つのキーワードを同時に使用したときに問題が発生しました。...
目次Node.js の公式紹介Node.jsのコア開発言語ウェブ上の JavaScript と No...
目次目的npm init および package.json ファイルモジュールのインストールと管理モ...
この記事では、SMS送信のカウントダウンを実装するためのJavaScriptの具体的なコードを参考ま...
解決策: システム内のすべての .vscode 関連プロセスを終了します (または、remote-s...
1. VMware Workstation 上の Linux: 1. ソースの更新(オプション) v...
目次Vue の keep-alive 組み込みコンポーネントの使用でもこのアルゴリズムが使用されます...