1.3. Java EE

Java Platform, Enterprise Edition (Java EE) は、エンタープライズ・アプリケーションの設計、開発、組み立て、配備の場面においてコンポーネント・ベースのアプローチを提供するアーキテクチャです。

この Java EE アーキテクチャを満足するアプリケーションサーバは、再利用可能なコンポーネントのための多層分散アプリケーション・モデル、柔軟なトランザクション制御と一体化したセキュリティ・モデル、XML ベースのオープン・スタンダードとプロトコルの上に統合されたデータ交換技術によるWeb サービス支援を提供します。

Java EE テクノロジの進化は、これまでより迅速なマーケットへの革新的ビジネスソリューションを提案するだけでなく、特定のアプリケーションサーバ・ベンダの製品やプログラミング・インタフェースに縛られないプラットフォーム非依存のJava EE コンポーネント・ベース型ソリューションももたらします。

Java EE 仕様はWeb とEJB を中心とするバージョン1.2 から始まり、その後非同期型アプリケーション・モデルの提供とベンダ間の相互接続性の解決に取り組んだバージョン1.3、Web サービス技術の標準統合と運用管理の仕組みやインタフェースを一般化したバージョン1.4 へと進化してきました。 Java EE 5では「開発の容易性(EoD: Ease of Development)」を最大のコンセプトとし、配備記述子を代替するアノテーションによるアプリケーション動作時設定の記述や、POJO(Pure Old Java Object)開発を可能にするEJB インタフェースの簡略化、JPA(Java Persistence API)によるオブジェクト永続化などを含んでいます。

最新のJava EE 7では「開発の容易性」をより押し進めています。 サーブレットをアノテーションだけ記述できるようになり、煩雑なweb.xmlの記述は不要になりました。 インジェクションの共通仕様である CDI (Contexts and Dependency Injection) が導入され、POJOに対してもインジェクションが可能になりました。 その他にも、EJBやJPA等のバージョンアップや、JAX-RSによるRESTful Webサービスのサポートなどの強化が行われています。

WebOTX とJava EE との関わりは、Java EE 技術あるいはJava EE という用語が生まれる前に遡ります。 Java EE が誕生する前は、Java EE に含まれる各種仕様が単独で提案されていました。 WebOTX は、当時のEJB 1.0 仕様から対応を始めています。 そして、J2EE 1.2 が最初に提案されて以降、一貫してJava EE に準拠したアプリケーションサーバを製品化しています。

1.3.1. Java EEアプリケーションサーバのアーキテクチャ

Java EE プラットフォームでは、アプリケーション動作のために多層の分散アプリケーション・モデルを提供します。

アプリケーション・ロジックは、機能によってコンポーネントに分割されます。 そして、1つのJava EE アプリケーションを構成する各種コンポーネントが、そのコンポーネントの属す多層化Java EE環境内の特定の層へ応じたマシンにインストールされます。

下の図は、WebOTX におけるアプリケーションサーバのアーキテクチャの概観を表しています。


1.3.2. コンテナ

コンテナは、Java EE コンポーネントに対してトランザクション管理やセキュリティなどの下層サービスを提供する実行環境です。 上の図では、Web コンテナとEJB コンテナの部分が相当します。 2つを合わせてJava EE コンテナと呼ぶ場合もあります。

JSP やサーブレットのようなWeb コンポーネントは、Web コンテナ内で動作します。 WebOTX では、クライアントからのHTTP/S リクエストを受け付けるサーバとして、Web コンテナ内蔵のWeb サーバを提供します。 さらに外部のOS ネイティブなHTTP サーバとWeb コンテナを連携させることも可能です。

EJB テクノロジに準じたコンポーネントであるEnterprise Bean は、EJB コンテナ内で動作します。

1.3.3. Web サービス

WebOTX ASではJAX-WSとJAX-RPCをサポートしており、SOAPを利用したWebサービスを構築する事ができます。 また、JAX-RSを利用する事でRESTful Webサービスの提供も可能です。

アプリケーションはXML レジストリのためのJava API (JAXR) を使ってコーディングすることにより、XML レジストリサーバへアクセスすることができます。

1.3.4. アプリケーションサービス

Java EE プラットフォームでは、コンテナがアプリケーションに各種サービスを提供するようにアーキテク チャが設計されています。

ネームサービス

ネームサービスは、JNDI を使用したオブジェクトを名前に結び付けるネーミングとディレクトリに関す るサービスです。Java EE アプリケーションは、意図するJNDI 名をルックアップすることにより、JNDI サーバ内にあるオブジェクトの位置を特定できます。

WebOTX のJNDI サーバは、CosNaming サービスを基盤に持ちます。CosNaming とはCORBA 仕様に準拠したネームサービスです。Java EE ではなくCORBAサービスに基づくCORBA アプリケーションに対しては、CosNaming が提供されます。

トランザクションサービス

トランザクションは、それ以上分割できない、不可分な作業単位です。トランザクション管理を担当す るサービス基盤は、各作業単位全体が他のプロセスからの干渉を受けずに完了するか、全体を完 了できなければ、その単位で実行された処理全てが元に戻るように保証しています。

Java EE アプリケーションに対しては、JTA (Java Transaction API) を提供しています。さらにJava EE プラットフォームには、アプリケーションにトランザクション制御を意識させなくする「コンテナ管理 によるトランザクション」も提供されています。

WebOTX におけるトランザクションサービスは、CORBA Transaction Service 仕様に準拠したサービ スが下層で支えています。

セキュリティサービス

Java EE プラットフォームでのセキュリティサービスは、Web やEnterprise Bean のコンポーネントへそ のアクセス権限を持つユーザによってのみアクセスできるように保証する設計が施されています。

また、JACC(Java Authorization Contract for Containers)により、コンテナはクライアントの識別情報に基づきながら、コンテナの管理下にあるリソースやサービスに対してもアクセスを制限することができます。

1.3.5. 外部システムへのアクセス

アプリケーションは、Java EE プラットフォーム内からサーバの外部に位置するシステムへアクセスするこ とができます。そのシステムの代表的な例がデータベースサーバです。アプリケーションは、リソースと 呼ばれる接続オブジェクトを介して、それら外部システムへ接続します。そのリソースを構成する役割 は、システム管理者が担当することになります。Java EE プラットフォームでは、次のようなAPI とコンポー ネントによって外部システムへアクセスする手段を提供しています。

JDBC

データベース管理システムは、データの格納、構成、検索などを行うための機能を提供しています。 ほとんどのビジネス・アプリケーションは、リレーショナルデータベースシステムを用いています。そ のようなアプリケーションは、JDBC API 経由でデータベースサーバにアクセスします。

WebOTX は、JDBC 経由によるデータベース接続のために、データベースサーバの違いを抽象化す るAPI としてJDBC データソースを提供しています。JDBC データソースはその他にも豊富な機能を 揃えています。詳細は [ JDBC データソース ] で説明されます。

JMS

JMS は非同期にメッセージを配信するための仕様です。Java EE では、バージョン1.3 からアプリケ ーションサーバへ標準統合されました。JMS によるメッセージング・システムを利用することで、コン ポーネントやアプリケーションの間でメッセージを伝達する手段を得られます。メッセージング・クライ アントは、他のクライアントにメッセージを送信したり、他のクライアントからメッセージを受信したりす ることが可能になります。

WebOTX では、独自のJMS プロバイダを提供しています。詳細は [ JMS ] で説明されます。

JCA

JCA (Java EE Connector Architecture) は、ERP、CRM、他のレガシーシステムなどの様々な既存 のエンタープライズ情報システム (EIS) とJava EE アプリケーションとの間の統合を可能にします。 アプリケーションは、コネクタまたはリソースアダプタと呼ばれるポータブルなJava EE コンポーネント を介してEIS にアクセスできます。JCA は、そのようなシステムと対話するためのインフラストラクチャ ともいえます。

WebOTX では、JMS サーバへの接続用リソースアダプタをバンドルしています。また、NEC のメイン フレームACOS へ接続するためのOLF/TP アダプタをオプショナルで製品化しています。

JavaMail

アプリケーションは、JavaMail API を使うことによって電子メールを送受信するために必要なSMTP サーバへの接続を可能にします。JavaMail API は、SMTP の他にもIMAP4、POP3 プロトコルによる アクセス手段も提供しています。

1.3.6. サーバ管理

J2EE 1.3 以前のプラットフォームでは、アプリケーションサーバの管理に関わる仕組みが標準化されて いませんでした。そのため、各々のサーバベンダは、独自の実装方式によってサーバ管理を実現してい ました。J2EE 1.4 ではJMXという技術を利用してそれらの枠組みが標準化されました。

WebOTX ASにおいてもJMX という標準仕様に基づきサーバの実行時性能をモニタリングすることができます。 さらに、アプリケーションの配備についてもDeployment API というインタフェースが標準化されています。 WebOTX は、標準仕様に基づいた運用管理のためのコマンドとGUI ツールを提供しています。