最近、プロジェクトは環境を切り替え、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 のトランザクション分離レベルエラーの問題を解決する
MySQL の explain コマンドは SQL のパフォーマンスを分析できます。その 1 つが ...
コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...
<!--[if IE 6]> IE6 のみが認識可能 <![endif]-->...
HTML に触れる初心者は、いくつかの HTML タグを学びます。関連記事:初心者が学ぶ HTML...
目次1. 場所オブジェクト1. URL 2. 場所オブジェクトのプロパティ3. ロケーションオブジェ...
この記事では、vue+echart を使って二重列チャートを実現するための具体的なコードを参考までに...
Tomcatはプロジェクトにアクセスします。通常はIP + ポート + プロジェクト名です。 Ngi...
html、address、blockquote、body、dd、div、dl、dt、fieldset...
現在の日付 + 時刻 (日付 + 時刻) を取得する関数: now() mysql> now(...
MySQL 環境をローカル (192.168.1.152) にデプロイし、リモート クライアント 1...
1 要件の概要MySQL5.6本番データベースの複数のテーブルのデータは、Oracle11gデータウ...
Linux バージョンに関する情報を表示および解釈するのは、見た目よりも少し複雑です。単純なバージョ...
前提複雑なシナリオでは、複数の異なるページ間で大量のデータを使用したり変更したりする必要があります。...
目次序文列挙可能なプロパティ反復可能なオブジェクトforEachメソッドとmapメソッドチェーン呼び...
参考までに、Vue シングル サインオンのデモをご紹介します。詳細を知りたい方のお役に立てれば幸いで...