JAX-WS は、SOAP サービスの通信とアクセスの速度を改善するための Java™ EE テクノロジーです。EGL では、JAX-WS またはその先行テクノロジーである Java API for XML-based RPC (JAX-RPC) のいずれかを使用する SOAP サービスと SOAP サービス・リクエスターを生成できます。現時点では、JAX-WS に基づいて EGL SOAP サービスのサポートをさらに強化していくことを目指しています。
JAX-WS に依拠するサービスとサービス要求は、JAX-RPC に依拠する他のロジックと対話できます。ランタイムの互換性も確保できます。EGL との関連では、JAX-WS によってサービスの生成に関する利便性が向上します。つまり、サービスを 1 回生成するだけで、その後、コードを SOAP サービスとして複数のターゲット・プロジェクトにデプロイする場合にも対応できるようになります。
以下の制約事項が該当します。
- JAX-WS に関する EGL サポートを使用できるのは、JEE バージョン 5 に対応するサーバーに SOAP サービスまたは SOAP サービス・リクエスターをデプロイする場合に限られます。テストが既に実施されているプラットフォームは、以下のとおりです。
- WebSphere® Application Server 7.0。
- Apache Tomcat 5.x (Java 1.6)。
- Apache Tomcat 6.x (Java 1.6)。
- JAX-WS を使用する場合は、サービスとサービス・リクエスターの間で EGL の構造化レコードを転送できません。JAX-RPC を使用する場合は、構造化レコードを転送できますが、リクエスターとサービスの両方が EGL 生成であれば、リクエスターとサービスの両方を JAX-RPC の下で実行する必要があります。
構造化レコードに関する EGL サポートの詳細については、『サービス・パーツの参照』を参照してください。
- EGL ターゲット・プロジェクトが、サービスまたはサービス・リクエスターが含まれている Web プロジェクトであれば、そのプロジェクトでは、2 つのテクノロジー (JAX-WS と JAX-RPC) のうちのいずれか 1 つだけを使用できます。ターゲット・プロジェクトに対してコードを生成したりデプロイしたりするときに、その他のテクノロジーを使用するサービスまたはサービス・リクエスターのサポートを追加することはできません。
例えば、JSF ハンドラーは常に、ソース・コードも含まれている Web プロジェクトに対して生成されます。JSF ハンドラーでは、JAX-WS または JAX-RPC のいずれかを使用して、呼び出し先の一連の SOAP サービスにアクセスできますが、別の方法で別の SOAP サービスにアクセスすることはできません。
既に触れた点ですが、ここでもう一度繰り返しておきます。サービスにアクセスしたりサービスをデプロイしたりするための Java EE テクノロジーは、ターゲット・プロジェクトのすべてのロジックで統一されていなければなりませんが、アクセス先の各リモート SOAP サービスは、その 2 つのテクノロジーのいずれかでデプロイできます。ランタイムの互換性も確保できます。
- EGL の 8.0.1.1 より前のバージョンの環境で、WSDL ファイルを使用して、インターフェース・パーツ、レコード・パーツ、サービス・スケルトンを自動的に作成していた場合は、以下の両方の条件が重なるとそれらのパーツによってエラーが発生する可能性があります。
- WSDL ファイルから作成したパーツを保存する場合。
- JAX-WS を使用するように構成したターゲット・プロジェクトに対して生成したりデプロイしたりするコードの基礎としてそれらのパーツを使用する場合。
EGL の 8.0.1.1 より前のバージョンで作成したコードを変換して、JAX-WS でそのコードを実行できるようにする場合は、そのコードで使用するインターフェース・パーツ、レコード・パーツ、サービス・スケルトンを再作成します。
以下のいずれかの条件が当てはまる場合は、インターフェース・パーツ、レコード・パーツ、サービス・スケルトンを再作成する必要はありません。
- バージョン 8.0.1.1 以上で作成したコードを生成したりデプロイしたりする場合。
- JAX-RPC で構成されているターゲット・プロジェクトに対して古いコードを再生成したり再デプロイしたりする場合。
- getContext システム機能を使用するコードがある場合は、JAX-RPC と JAX-WS の切り替えを行うときにコードを変更する必要があります。JAX-RPC と JAX-WS とでは、getContext から返されるオブジェクトが異なるからです。詳しくは、『getContext』を参照してください。
ターゲット・プロジェクトが JAX-WS で構成されているか JAX-RPC で構成されているかを決定する要素は、デプロイメント記述子エディターの「概要」タブにあるチェック・ボックスです。@WebBinding プロパティーを使用するサービス要求には、この規則の変形版が当てはまります。このプロパティーを使用すれば、サービス・アクセスの詳細をコード・ロジック内で (具体的にはサービス・アクセス変数の宣言内で) 直接指定できます。この場合にサービス要求の構成を決定する要素になるのは、リクエスターを生成するために使用するビルド記述子の参照先になっているデプロイメント記述子にあるチェック・ボックスの値です。