3.3. JavaEE トランザクションクライアントの使用


JavaEE を使用する場合、トランザクションマネージャーと対話するための最も基本的で標準的な方法は、Java Transaction API (JTA) インターフェイス javax.transaction.UserTransaction です。正規の使用方法は以下のとおりです。

InitialContext context = new InitialContext();
UserTransaction ut = (UserTransaction) context.lookup("java:comp/UserTransaction");
ut.begin();

// Access transactional, JTA-aware resources such as database and/or message broker

ut.commit(); // or ut.rollback()

JNDI(Java Naming and Directory Interface) から UserTransaction インスタンスを取得する方法は、トランザクションクライアントを取得する方法の 1 つです。JavaEE 環境では、たとえば CDI (コンテキストおよび依存性注入) を使用してトランザクションクライアントにアクセスできます。

以下の図は、typica336 Camel アプリケーションを示しています。

javaee トランザクション API

以下の図は、Camel コードとアプリケーションコードの両方にアクセスできることを示しています。

  • javax.transaction.UserTransaction インスタンスは、アプリケーションから直接トランザクションをデマケーションしたり、Spring の TransactionTemplate クラスを使用してトランザクション対応の Camel コンポーネントを介して内部でデマケーションできます。
  • JDBC API 経由でのデータベースは直接的であるか、たとえば Spring の JdbcTemplate を使用するか、camel-jdbc コンポーネントを使用します。
  • Spring の JmsTemplate クラスを使用するか、camel-jms コンポーネントを使用して直接 JMS API 経由のであるメッセージブローカー。

javax.transaction.UserTransaction オブジェクトを使用する場合、トランザクションクライアントのみを直接操作しているため、使用されている実際のトランザクションマネージャーを認識する必要はありません。(「トランザクションクライアント」 を参照してください。) Spring のトランザクション機能を内部で使用するため、Spring と Camel では異なるアプローチが使用されます。

JavaEE アプリケーション

一般的な JavaEE シナリオでは、アプリケーションは JavaEE アプリケーションサーバー (通常は WAR または EAR アーカイブ) にデプロイされます。JNDI または CDI により、アプリケーションは javax.transaction.UserTransaction サービスのインスタンスにアクセスできます。その後、このトランザクションクライアントインスタンスを使用してトランザクションを区別します。トランザクション内で、アプリケーションは JDBC または JMS アクセスを実行します。

Camel コンポーネントおよびアプリケーションコード

これらは、JMS/JDBC 操作を実行するコードを表します。Camel には、JMS/JDBC リソースにアクセスするための独自の高度なメソッドがあります。アプリケーションコードは、直接特定の API を使用できます。

JMS Connection Factory

これは、javax.jms.Connection のインスタンスの取得に使用される javax.jms.ConnectionFactory インターフェイス、および javax.jms.Session (または JMS 2.0 の javax.jms.JmsContext) です。これは、アプリケーションによって直接使用することも、org.springframework.jms.core.JmsTemplate で内部的に使用する場合もある Camel コンポーネントで間接的に使用することもできます。アプリケーションコードや Camel コンポーネントには、この接続ファクトリーの詳細は必要ありません。接続ファクトリーはアプリケーションサーバーで設定されます。この設定は、JavaEE サーバーで確認できます。Fuse などの OSGi サーバーも同様です。システム管理者は、アプリケーションとは別に接続ファクトリーを設定します。通常、接続ファクトリーはプーリング機能を実装します。

JDBC データソース

これは、java.sql.Connection のインスタンスを取得するために使用される javax.sql.DataSource インターフェイスです。JMS と同様に、このデータソースは直接的または間接的に使用できます。たとえば、camel-sql コンポーネントは org.springframework.jdbc.core.JdbcTemplate クラスを内部で使用します。JMS と同様に、アプリケーションコードや Camel にはこのデータソースの詳細は必要ありません。この設定は、4章Narayana トランザクションマネージャーの設定 で説明されている方法を使用して、アプリケーションサーバー内または OSGi サーバー内で行われます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.