JTAを実装するためにAtomikosと組み合わせたTomcatについて

JTAを実装するためにAtomikosと組み合わせたTomcatについて

最近、プロジェクトは環境を切り替え、WebLogic を Tomcat に置き換えました。途中で発生した問題を記録しました。
Tomcat で JTA を実装するための Atomikos の設定
古典的な Web サーバーとして、Tomcat は開発、テスト、および運用環境で広く使用されています。しかし、Tomcat は結局のところ Java EE サーバーではないため、EJB と JTA のサポートは提供されません。この記事では、Tomcat が Atomikos を使用して JTA を実装する方法について説明します。

 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にリスナーを追加する

<リスナークラス名="com.atomikos.tomcat.AtomikosLifecycleListener" />

ステップ 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で設定することをお勧めします。

Tomcat 構成で使用される XA データ ソースと JDBC ドライバーは、非 XA 関連の設定を使用できます。Atomikos は、実行速度を向上させるために非 XA 接続もサポートしています。 nonXa データ ソースに関しては、次の構成を参照できます。

<リソース名="jdbc/DS_MYSQL"

 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 をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Springboot jta atomikos は分散トランザクション管理を実現します

<<:  HTML で自動ページジャンプを実現する 5 つの方法

>>:  MySql8.0 のトランザクション分離レベルエラーの問題を解決する

推薦する

MySQLデータベースの一般的な最適化操作のまとめ(経験共有)

序文データ中心のアプリケーションの場合、データベースの品質はプログラムのパフォーマンスに直接影響する...

HTML リンク アンカー タグと SEO におけるその役割の概要

<a> タグは主に、ハイパーリンクまたはアンカー リンクとも呼ばれるリンクとブックマーク...

Zabbixについて管理者ログインパスワードを忘れた場合、パスワードをリセットする

Zabbix 管理者ログイン パスワードのリセットに関する問題は次のとおりです。 1. 問題の説明:...

JSの基本概念の詳細な紹介

目次1. JSの特徴1.1 マルチパラダイム1.2 説明1.3 シングルスレッド1.4 ノンブロッキ...

Vue プロジェクトに ECharts を導入する

目次1. インストール2. はじめに3. 使用4. 必要に応じてEChartsチャートとコンポーネン...

WebプロジェクトをIdeaにインポートし、Tomcatに公開する問題を解決します

Idea は既存の Web プロジェクトをインポートして Tomcat に公開しますが、Tomcat...

MySQL 半同期レプリケーションの原理構成と導入の詳細な説明

環境の紹介: Ubuntu Server 16.04.2+MySQL 5.7.17 コミュニティ サ...

JDBC を使用して MySQL を操作するための簡単な分析では、Class.forName("com.mysql.jdbc.Driver") を追加する必要があります。

導入データベースに接続するためにJDBCを使用することに慣れている場合は、データベースに接続するため...

VueはElement el-uploadコンポーネントを使用してピットに足を踏み入れます

目次1. 基本的な使い方2. 画像量の制御3. 画像形式の制限/複数の画像を選択可能補足: vueプ...

HTML入力で値が変更されたときにリスナーイベントを追加することの簡単な分析

達成される効果多くの場合、入力ボックスの値の変化をリアルタイムで監視し、ブラウザを誘導してウェブサイ...

Nginx/Httpd ロードバランシング Tomcat 設定チュートリアル

前回のブログでは、Nginx と httpd を使用して、逆生成用のバックエンド Tomcat サー...

Vue ElementUI フォームのフォーム検証

フォーム検証は、フロントエンド開発プロセスで最もよく使用される機能の 1 つです。私の個人的な仕事経...

レスポンシブなアコーディオン効果を実現するための CSS3 の詳細な説明

最近、外国人が CSS3 を使用してアコーディオン効果を実現しているビデオを見たので、自分で学習した...

Tomcatアーキテクチャの原則をアーキテクチャ設計に分析する

目次1. 学習目標1.1. Tomcatアーキテクチャの設計と原則をマスターして社内スキルを向上させ...

Linux での mysql-5.7.28 インストール チュートリアル

1. 公式ウェブサイトから Linux バージョンをダウンロードします: https://dev.m...