コンテンツにスキップ

「Java Transaction API」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
Melan (会話 | 投稿記録)
m編集の要約なし
編集の要約なし
 
(16人の利用者による、間の21版が非表示)
1行目: 1行目:
{{出典の明記|date=2021年6月}}
'''Java Transaction API'''('''JTA''')とは、[[Java EE]]の[[Application Programming Interface|API]]の1つであり、[[X/Open XA|XA]]リソース間の分散[[トランザクション処理]]を扱う。JTA は [[Java Community Process]]で JSR 907 として開発された仕様である。JTA は以下を提供する:
'''Jakarta Transactions'''は、[[Eclipse Foundation]]が開発している、[[X/Open XA|XA]]リソース間の分散[[トランザクション処理]]を扱う[[Java]]の[[アプリケーションプログラミングインタフェース|API]]で、[[Jakarta EE]] Platformに含まれている。Java 8までは、[[Jakarta EE|Java Platform, Enterprise Edition]]の一部で、'''Java Transaction API''' ('''JTA''') という名称だった。


JTAは以下を提供する:
* トランザクション境界の設定
* [[X/Open XA]] API を使ったトランザクション処理
*トランザクション境界の設定
*[[X/Open XA]] APIを使ったトランザクション処理


== 沿革 ==
⚫
== X/Open XA アーキテクチャ ==
* 2002年11月6日 - Java Transaction API 1.0<ref>{{Cite web |title=The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 907 |author= |work=jcp.org |date= |access-date=25 September 2025 |url= https://www.jcp.org/en/jsr/detail?id=907}}</ref>
⚫
[[画像:JTA1.PNG|thumb|right|350px|X/Open XA アーキテクチャの概念図]]
⚫
* 2007年2月14日 - Java Transaction API 1.1
⚫
* 2013年6月17日 - Java Transaction API 1.2
⚫
* 2018年4月2日 - Java Transaction API 1.3
* 2019年8月2日 - Jakarta Transactions 1.3。Jakarta EE 8 に含まれる。<ref>{{Cite web |title=Jakarta Transactions 1.3 {{!}} Jakarta EE {{!}} The Eclipse Foundation |author= |work=Jakarta® EE: The New Home of Cloud Native Java |date= |access-date=25 September 2025 |url= https://jakarta.ee/specifications/transactions/1.3/}}</ref>
* 2020年10月8日 - Jakarta Transactions 2.0。Jakarta EE 9, 10, 11 に含まれる。パッケージ名が javax.transaction から jakarta.transaction に変更になった。<ref>{{Cite web |title=Jakarta Transactions 2.0 {{!}} Jakarta EE {{!}} The Eclipse Foundation |author= |work=Jakarta® EE: The New Home of Cloud Native Java |date= |access-date=25 September 2025 |url= https://jakarta.ee/specifications/transactions/2.0/}}</ref>


⚫
==X/Open XAアーキテクチャ ==
⚫
X/Open XA アーキテクチャでは、トランザクションマネージャ(あるいは[[トランザクション処理|TPモニター]])がデータベースなどの複数リソース間のトランザクションを調整する。各リソースにはマネージャが対応している。リソースマネージャは一般にリソースを操作するための独自APIを持ち、例えば[[リレーショナルデータベース]]では [[JDBC]] API が使われる。さらに、TPモニターは複数のリソースマネージャ間の分散トランザクションの調整を行う。そして、アプリケーションはTPモニターと通信し、TPモニターにトランザクション群の開始/[[コミット]]/[[ロールバック]]を指示する。また、アプリケーションは個々のリソースマネージャとも独自APIで通信し、リソースの更新などを行う。
⚫
[[ファイル:JTA1.PNG|thumb|right|350px|X/Open XAアーキテクチャの概念図]]


⚫
{{lang|en|X/Open XA}}アーキテクチャでは、トランザクションマネージャ(あるいは[[トランザクション処理|TPモニター]])がデータベースなどの複数リソース間のトランザクションを調整する。各リソースにはマネージャが対応している。リソースマネージャは一般にリソースを操作するための独自APIを持ち、例えば[[関係データベース]]では[[Java Database Connectivity|JDBC]] APIが使われる。さらに、TPモニターは複数のリソースマネージャ間の分散トランザクションの調整を行う。そして、アプリケーションはTPモニターと通信し、TPモニターにトランザクション群の開始、[[コミット]]、[[ロールバック]]を指示する。また、アプリケーションは個々のリソースマネージャとも独自APIで通信し、リソースの更新などを行う。
⚫
== JTA の実装 ==
⚫
[[画像:JTA2.PNG|thumb|right|350px|JTAの概念図]]


⚫
== JTAの実装 ==
⚫
JTA API は2つの[[Java (プログラミング言語)|Java]]パッケージにあるクラス群で構成される:
⚫
[[ファイル:JTA2.PNG|thumb|right|350px|JTAの概念図]]

⚫
JTA APIは2つの[[Java]]パッケージにあるクラス群で構成される:
* {{Javadoc:EE|package=javax.transaction|javax/transaction}}
* {{Javadoc:EE|package=javax.transaction|javax/transaction}}
* {{Javadoc:EE|package=javax.transaction.xa|javax/transaction/xa}}
* {{Javadoc:EE|package=javax.transaction.xa|javax/transaction/xa}}


JTA は X/Open XA アーキテクチャに基づいているが、トランザクション境界を設定するために2つのAPIを定義している。JTA では EJBサーバのようなアプリケーションサーバとその上のアプリケーションコンポーネントを区別する。アプリケーションサーバがトランザクションの開始/コミット/ロールバックを指示するためのインターフェイスとして {{Javadoc:EE|package=javax.transaction|javax/transaction|TransactionManager}} がある。また、[[Java Servlet|サーブレット]]や [[Enterprise JavaBeans|EJB]] がトランザクションを管理するためのインターフェイスとして {{Javadoc:EE|package=javax.transaction|javax/transaction|UserTransaction}} がある。右の図は X/Open XA インターフェイスとして使われる JTA のクラスを示している。
JTAはX/Open XAアーキテクチャに基づいているが、トランザクション境界を設定するために2つのAPIを定義している。JTAでは EJBサーバのようなアプリケーションサーバとその上のアプリケーションコンポーネントを区別する。アプリケーションサーバがトランザクションの開始/コミット/ロールバックを指示するための[[インタフェース (情報技術)|インタフェース]]として{{Javadoc:EE|package=javax.transaction|javax/transaction|TransactionManager}}がある。また、[[Java Servlet|サーブレット]]や[[Enterprise JavaBeans|EJB]]がトランザクションを管理するためのインタフェースとして {{Javadoc:EE|package=javax.transaction|javax/transaction|UserTransaction}} がある。右の図は {{lang|en|X/Open XA}}インタフェースとして使われる JTA のクラスを示している。


JTA アーキテクチャでは、各リソースマネージャ上に {{Javadoc:EE|package=javax.transaction.xa|javax/transaction/xa|XAResource}} インターフェイスを実装してTPモニターから制御できるようにする必要がある。前述したように各リソースマネージャには以下のような固有のAPIがある。
JTAアーキテクチャでは、各リソースマネージャ上に {{Javadoc:EE|package=javax.transaction.xa|javax/transaction/xa|XAResource}}インタフェースを実装してTPモニターから制御できるようにする必要がある。前述したように各リソースマネージャには以下のような固有のAPIがある。
* リレーショナルデータベース用: [[JDBC]]
* 関係データベース用: [[Java Database Connectivity|JDBC]]
* メッセージングサービス用: [[Java Message Service|JMS]]
* メッセージングサービス用: [[Java Message Service|JMS]]
* 汎用EIS(企業情報システム)リソース用: [[Java EE]]コネクターAPI
* 汎用EIS(企業情報システム)リソース用: Jakarta EE コネクター API


== Java Transaction Service ==
==Java Transaction Service==
'''Java Transaction Service'''('''JTS''')とは、JTAを使ったトランザクションマネージャの実装である。[[CORBA]]アーキテクチャに基づいており、複数のJTS間のトランザクションの伝播には[[IIOP]]を使う。[[Java EE]][[アプリケーションサーバ]]はJTSの実装が必須とされている。
'''Java Transaction Service''' (JTS) とは、JTAを使ったトランザクションマネージャの実装である。[[CORBA]]アーキテクチャに基づいており、複数のJTS間のトランザクションの伝播には[[IIOP]]を使う。Jakarta EE[[アプリケーションサーバ]]はJTSの実装が必須とされている。

==脚注==
{{reflist}}


== 外部リンク ==
== 外部リンク ==
{{Wikibooks|Java|Java}}
{{Wikibooks|Java|Java}}
*[https://jakarta.ee/specifications/transactions/ Jakarta Transactions]
⚫
* [http://java.sun.com/products/jta/ Java Transaction API(JTA)]
* [http://java.sun.com/products/jts/ Java Transaction Service (JTS)]
*[https://www.oracle.com/java/technologies/jta.html Java Transaction API (JTA)]
⚫
<!-- *[https://java.sun.com/products/jts/ Java Transaction Service (JTS)] -->
* [http://www.jcp.org/en/jsr/detail?id=907 JSR 907]
*[https://www.jcp.org/en/jsr/detail?id=907 JSR 907]


{{Java}}
{{Java}}
36行目: 50行目:
[[Category:Java specification requests|Transaction API]]
[[Category:Java specification requests|Transaction API]]
[[Category:Java enterprise platform|Transaction API]]
[[Category:Java enterprise platform|Transaction API]]
[[Category:Application Programming Interface]]
[[Category:Java API]]
[[Category:Eclipse Foundation|Transactions]]

⚫
[[en:Java Transaction API]]
⚫
[[fr:Java Transaction API]]
⚫
[[nl:Java Transaction API]]
[[pt:Java Transaction API]]
[[ru:Java Transaction API]]

2025年9月26日 (金) 04:09時点における最新版

Jakarta Transactionsは、Eclipse Foundationが開発している、XAリソース間の分散トランザクション処理を扱うJavaのAPIで、Jakarta EE Platformに含まれている。Java 8までは、Java Platform, Enterprise Editionの一部で、Java Transaction API (JTA) という名称だった。

JTAは以下を提供する:

  • トランザクション境界の設定
  • X/Open XA APIを使ったトランザクション処理
  • 2002年11月6日 - Java Transaction API 1.0[1]
  • 2007年2月14日 - Java Transaction API 1.1
  • 2013年6月17日 - Java Transaction API 1.2
  • 2018年4月2日 - Java Transaction API 1.3
  • 2019年8月2日 - Jakarta Transactions 1.3。Jakarta EE 8 に含まれる。[2]
  • 2020年10月8日 - Jakarta Transactions 2.0。Jakarta EE 9, 10, 11 に含まれる。パッケージ名が javax.transaction から jakarta.transaction に変更になった。[3]

X/Open XAアーキテクチャ

[編集 | ソースを編集]
X/Open XAアーキテクチャの概念図

X/Open XAアーキテクチャでは、トランザクションマネージャ(あるいはTPモニター)がデータベースなどの複数リソース間のトランザクションを調整する。各リソースにはマネージャが対応している。リソースマネージャは一般にリソースを操作するための独自APIを持ち、例えば関係データベースではJDBC APIが使われる。さらに、TPモニターは複数のリソースマネージャ間の分散トランザクションの調整を行う。そして、アプリケーションはTPモニターと通信し、TPモニターにトランザクション群の開始、コミット、ロールバックを指示する。また、アプリケーションは個々のリソースマネージャとも独自APIで通信し、リソースの更新などを行う。

JTAの実装

[編集 | ソースを編集]
JTAの概念図

JTA APIは2つのJavaパッケージにあるクラス群で構成される:

JTAはX/Open XAアーキテクチャに基づいているが、トランザクション境界を設定するために2つのAPIを定義している。JTAでは EJBサーバのようなアプリケーションサーバとその上のアプリケーションコンポーネントを区別する。アプリケーションサーバがトランザクションの開始/コミット/ロールバックを指示するためのインタフェースとしてjavax.transaction.TransactionManagerがある。また、サーブレットやEJBがトランザクションを管理するためのインタフェースとして javax.transaction.UserTransaction がある。右の図は X/Open XAインタフェースとして使われる JTA のクラスを示している。

JTAアーキテクチャでは、各リソースマネージャ上に javax.transaction.xa.XAResourceインタフェースを実装してTPモニターから制御できるようにする必要がある。前述したように各リソースマネージャには以下のような固有のAPIがある。

  • 関係データベース用: JDBC
  • メッセージングサービス用: JMS
  • 汎用EIS(企業情報システム)リソース用: Jakarta EE コネクター API

Java Transaction Service

[編集 | ソースを編集]

Java Transaction Service (JTS) とは、JTAを使ったトランザクションマネージャの実装である。CORBAアーキテクチャに基づいており、複数のJTS間のトランザクションの伝播にはIIOPを使う。Jakarta EEアプリケーションサーバはJTSの実装が必須とされている。

  1. ↑ “The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 907”. jcp.org. 2025年9月25日閲覧。
  2. ↑ “Jakarta Transactions 1.3 | Jakarta EE | The Eclipse Foundation”. Jakarta® EE: The New Home of Cloud Native Java. 2025年9月25日閲覧。
  3. ↑ “Jakarta Transactions 2.0 | Jakarta EE | The Eclipse Foundation”. Jakarta® EE: The New Home of Cloud Native Java. 2025年9月25日閲覧。

外部リンク

[編集 | ソースを編集]