NetBeans IDE は、Java EE および GlassFish の各チームとの密接な協力のもとで、Java EE 仕様との最大限の統合と、それらのできるだけ容易な使用法を実現するために開発されました。NetBeans IDE は、Java EE プログラミングを迅速に学び、生産性を向上させる最善の方法です。
このドキュメントでは、Java EE 仕様の主な概念を紹介し、それらが実際のプログラミングにどのように関係するかを説明します。このチュートリアルは、次の節から構成されます。
Java EE プラットフォームでは、サーブレットの仕様で要求される配備記述子、web.xml ファイルを除き、配備記述子を不要にすることによって配備を簡素化しています。ejb-jar.xml のようなその他の配備記述子や、web.xml の Web サービスに関連するエントリは、旧式です。J2EE 1.4 の配備記述子は、複雑になることが多く、記述時に誤りが起こりやすいものでした。Java EE プラットフォームでは、代わりに「注釈」を利用します。注釈は public や private と同様に、コード内で指定する Java の修飾子です。たとえば、Java EE 仕様のサブセットである EJB 3 仕様は、Bean の種類、インタフェースの種類、リソース参照、トランザクション属性、セキュリティーなどのための注釈を定義します。JAX-WS 2.0 仕様も、Web サービスのためのよく似た注釈のセットを提供しています。アーティファクトの生成に使用される注釈もあります。また、コードの記録に使用される注釈もあります。そのほかにも、セキュリティーや実行時に特有のロジックのような拡張サービスを提供するものがあります。要約すると、Java EE プラットフォームは、特に次の作業のための注釈を提供しています。
簡素化されたオブジェクトリレーショナルマッピング。新しい Java Persistence API により、POJO 内で注釈を使用して Java オブジェクトをリレーショナルデータベースにマッピングすることで、オブジェクトリレーショナルマッピングがより簡単で透過性の高いものになっています。
IDE では、ほかの Java クラスをコーディングするように、エンタープライズ Bean をコーディングすることができ、コード補完とエディタヒントを使用して、適切なメソッドを実装し、インタフェースでクラスの同期を維持することができます。ビジネスメソッドや Web サービスオペレーションなどを生成するために特別なコマンドやダイアログボックスを使用する必要はありませんが、コマンドは、ユーザーが Java EE コードの構文に慣れるのを支援するために、まだ使用できます。
IDE では、Java EE プラットフォームによって提供されるリソースインジェクションの注釈のための完全なコード補完が、ソースエディタに用意されています。また、「EJB の呼び出し」および「データベースを使用」などのコマンドを実行すると、IDE によって、ファイルにリソースが自動的に注入されます。
Java Persistence API モデル
Java EE プラットフォームには、JSR-220 の一部として開発された Java Persistence API が導入されています。Java Persistence API は、Web アプリケーションやアプリケーションクライアントなど、EJB コンポーネント以外でも使用できます。また、Java EE プラットフォーム以外で Java SE アプリケーションでも使用できます。
Java Persistence API の主な特徴として、次の点が挙げられます。
エンティティーが POJO。「コンテナ管理による持続性」(CMP) を使用していた EJB コンポーネントとは異なり、この新しい API を使用するエンティティーオブジェクトはコンポーネントではないため、EJB モジュール内に存在する必要はありません。
標準化されたオブジェクトリレーショナルマッピング。この新しい仕様はオブジェクトリレーショナルマッピングの処理方法を標準化しているため、開発者はベンダー固有の方法を学ばなくてもよくなります。Java Persistence API は、オブジェクトリレーショナルマッピングの情報を指定するために注釈を使用しますが、これまでどおり XML 記述子もサポートしています。
名前付きクエリー。これからの名前付きクエリーは、メタデータ内に表現された静的なクエリーです。このクエリーは Java Persistence API クエリーまたはネイティブクエリーのどちらかになります。これにより、クエリーの再利用が非常に簡単になります。
IDE には、新しい Java Persistence API を利用したツールが用意されています。エンティティークラスは、データベースから自動的に作成できるほか、手動でコーディングすることもできます。IDE には、持続性ユニットの作成および管理を行うためのテンプレートおよびグラフィックエディタも提供されています。Java Persistence API の使用の詳細については、「Java EE 6 アプリケーション入門」を参照してください。
Web サービス
Java EE プラットフォームでは、注釈の使用によって Web サービスのサポートが大幅に向上し、簡素化されています。この領域に関与する仕様には、JSR 224 (Java API for XML-Based Web Services (JAX-WS) 2.0)、JSR 222 (Java Architecture for XML Binding (JAXB) 2.0)、および JSR 181 (Web Services Metadata for the Java Platform) があります。
JAX-WS 2.0
JAX-WS 2.0 は、Java EE プラットフォーム内の Web サービスのための新しい API です。JAX-RPC 1.1 の後継として、JAX-WS 2.0 はいくつかの面が改善されている一方で、自然な RPC プログラミングモデルを保持しています。改善されているのは、データバインディング、プロトコルとトランスポートの独立性、REST スタイルの Web サービスのサポート、および各開発の容易さです。
JAX-RPC 1.1 との重要な違いは、すべてのデータバインドが JAXB 2.0 に委譲されたことです。これにより、JAX-WS ベースの Web サービスが XML スキーマを 100% 使用できるようになり、相互運用性と使いやすさの向上につながっています。この 2 つのテクノロジが十分に統合されているため、ユーザーが 2 種類のツールセットを使い分ける必要はありません。Java テクノロジのクラスから始めると、JAXB 2.0 は、WSDL (Web Service Description Language) ドキュメント内部に自動的に埋め込まれた XML スキーマドキュメントを生成できるため、ユーザーが手動でこの誤りが起こりやすい統合を実行しなくてすみます。
追加設定をしなくても、JAX-WS 2.0 は SOAP 1.1、SOAP 1.2、および XML/HTTP プロトコルをサポートしています。プロトコル拡張性は当初からの目標であったため、JAX-WS 2.0 では、たとえば FAST Infoset のような、より優れたパフォーマンス、または特化されたアプリケーションのために、ベンダーが追加のプロトコルおよびエンコーディングをサポートすることが可能です。大きなバイナリデータの送受信を最適化するためにアタッチメントを使用する Web サービスは、W3C の MTOM/XOP (Message Transmission Optimization Mechanism/XML-binary Optimized Packaging の略) 標準をプログラミングモデルへの影響なしに使用できます(詳細は MTOM/XOP のページを参照)。Java EE テクノロジ以前は、Web サービスを定義するのに、長くて扱いにくい記述子が必要でした。今では、 @WebService という注釈を Java テクノロジのクラスに付けるだけです。このクラスのすべての public メソッドは、Web サービスオペレーションとして自動的に公開され、その引数はすべて JAXB 2.0 を使用して XML スキーマデータ型にマッピングされます。
非同期 Web サービス
Web サービスの呼び出しはネットワーク上で行われるため、こうした呼び出しにかかる時間は予測できません。多くのクライアント、特に JFC/Swing ベースのデスクトップアプリケーションのような対話型のものでは、サーバからの応答を待たなければならないため、重大なパフォーマンスの低下が起こることがあります。そうしたパフォーマンスの低下を避けるため、JAX-WS 2.0 は新しい非同期式のクライアント API を提供しています。この API により、アプリケーションプログラマは独自にスレッドを作成する必要がなくなります。代わりに、長時間実行されるリモート呼び出しの管理を JAX-WS ランタイムに任せることができます。
非同期メソッドは、WSDL によって生成された任意のインタフェースのほか、より動的な Dispatch API とも同時に使用できます。WSDL ドキュメントのインポート時には、Web サービスによって定義された任意のオペレーションのために、非同期メソッドを生成するよう要求できます。
2 つの使用モデルがあります。
ポーリングモデルでは、呼び出しを行います。準備ができてから、結果を要求します。
コールバックモデルでは、ハンドラを登録します。応答が届き次第、通知されます。
非同期呼び出しのサポートはすべてクライアント側に実装されるため、対象の Web サービスには変更は必要ありません。
IDE には、JAX-WS を操作するツールが用意されています。「新規ファイル」ウィザードのテンプレートを使用して JAX-WS アーティファクトを生成できます。非同期 Web サービスは、Web サービスカスタマイゼーションエディタを使用して作成できます。このエディタのコード補完機能には、Web サービスで使用できる注釈も含まれます。