最近、プロジェクトは環境を切り替え、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 のトランザクション分離レベルエラーの問題を解決する
序文データ中心のアプリケーションの場合、データベースの品質はプログラムのパフォーマンスに直接影響する...
<a> タグは主に、ハイパーリンクまたはアンカー リンクとも呼ばれるリンクとブックマーク...
Zabbix 管理者ログイン パスワードのリセットに関する問題は次のとおりです。 1. 問題の説明:...
目次1. JSの特徴1.1 マルチパラダイム1.2 説明1.3 シングルスレッド1.4 ノンブロッキ...
目次1. インストール2. はじめに3. 使用4. 必要に応じてEChartsチャートとコンポーネン...
Idea は既存の Web プロジェクトをインポートして Tomcat に公開しますが、Tomcat...
環境の紹介: Ubuntu Server 16.04.2+MySQL 5.7.17 コミュニティ サ...
導入データベースに接続するためにJDBCを使用することに慣れている場合は、データベースに接続するため...
目次1. 基本的な使い方2. 画像量の制御3. 画像形式の制限/複数の画像を選択可能補足: vueプ...
達成される効果多くの場合、入力ボックスの値の変化をリアルタイムで監視し、ブラウザを誘導してウェブサイ...
前回のブログでは、Nginx と httpd を使用して、逆生成用のバックエンド Tomcat サー...
フォーム検証は、フロントエンド開発プロセスで最もよく使用される機能の 1 つです。私の個人的な仕事経...
最近、外国人が CSS3 を使用してアコーディオン効果を実現しているビデオを見たので、自分で学習した...
目次1. 学習目標1.1. Tomcatアーキテクチャの設計と原則をマスターして社内スキルを向上させ...
1. 公式ウェブサイトから Linux バージョンをダウンロードします: https://dev.m...