JAX-WS アプリケーションの web.xml ファイルにある URL パターンのカスタマイズ

web.xml ファイルには、モジュール内の Web コンポーネントの構造、および外部との依存関係に関する情報が含まれ、 実行時のコンポーネントの使用方法が記述されています。 Java™ API for XML-Based Web Services (JAX-WS) アプリケーションの場合、 web.xml ファイル内で URL パターンをカスタマイズできます。

このタスクについて

JavaBeans ベースの JAX-WS アプリケーションを Web サービスとしてパッケージする場合、Web サービスは、Web アーカイブ (WAR) ファイル、またはエンタープライズ・アーカイブ (EAR) ファイル内の WAR モジュールに含まれています。JAX-WS 有効 WAR ファイルには、以下の項目が含まれています。
  • WEB-INF/web.xml ファイル。このファイルには、Web アプリケーションを構成する Web コンポーネントの構成およびデプロイメント情報が記述されています。
  • アノテーションを付けたクラス。このクラスは、サービス・エンドポイント実装クラスなど、アプリケーション・モジュールに含まれる Web サービスを実装します。
  • JAXB クラス
  • (オプション) アプリケーション・モジュールに含まれる Web サービスを説明する Web サービス記述言語 (WSDL) 文書。
  • (オプション) XML スキーマ・ファイル
  • (オプション) ユーティリティー・クラス
  • (オプション) Web サービス・クライアント

デフォルトの URL パターンは、Web サービス実装クラスに含まれている @WebService.serviceName 属性によって定義されます。 サービス実装クラスに関連付けられている WSDL ファイルに単一ポート定義が含まれている場合は、 デフォルトの URL パターンの使用を選択することも、web.xml ファイル内の URL パターンをカスタマイズすることもできます。 サービス実装クラスに関連付けられている WSDL ファイルに同一サービス定義内の複数のポート定義が含まれている場合は、カスタマイズした URL パターンが必要です。 サービス実装クラスに複数のポート定義が含まれているときにデフォルトの URL パターンを使用すると、 複数のサービス実装クラスが同一の URL パターンにマップされ、エラー条件が発生します。 web.xml ファイルを編集し、サービス定義別に URL パターンをカスタマイズする必要があります。 各ポートは、Web サービス実装クラスとその独自のカスタム URL パターンにマップされます。web.xml ファイルの URL パターンをカスタマイズすることにより、 URL パターン定義の競合を訂正します。

JAX-WS アプリケーションが エンタープライズ・アーカイブ (EAR) ファイル内の Enterprise JavaBeans (EJB) Java アーカイブ (JAR) ファイルにパッケージされている場合、endptEnabler コマンドを使用して、 URL パターンをカスタマイズすることができます。

手順

  1. カスタム URL パターンが必須または任意であるかを指定します。 カスタム URL パターンが必要であるのは、JAX-WS Web サービス用の WSDL ファイルで、単一のサービス内に複数のポート定義が含まれている場合のみです。それ以外の場合は、 カスタム URL パターンをオプションで定義することができます。
  2. サービス実装クラスの URL パターンをカスタマイズするには、web.xml ファイルを編集し、カスタム URL パターンを必要とする各 JAX-WS Web サービス実装クラスに、<servlet> および対応する <servlet-mapping> エントリーを指定します。 <url-pattern> 値を、 <servlet-mapping> エントリー内で定義する必要があります。

タスクの結果

以上で、Web サービス対応 Web アーカイブ (WAR) ファイルで URL パターンがカスタマイズされました。

サービス実装クラス内の単一 WSDL ポート定義

次の例では、サービス実装クラスに関連付けられている WSDL ファイルに単一ポート定義が含まれている場合に、デフォルト URL パターンと、URL パターンをカスタマイズする方法について図示しています。

これは、サンプルの Web サービス実装クラスからの抜粋です。

package com.ibm.test;
@WebService(serviceName="EchoService", portName="SOAP11EchoServicePort")
public class EchoServiceSOAP11{

これは、EchoServiceSOAP11 Web サービス実装クラスに関連付けられている WSDL ファイルからの抜粋です。

<wsdl:service name="EchoService">
		<wsdl:port name="SOAP11EchoServicePort" tns:binding="..." >
		...
	</wsdl:port>
</wsdl:service>
JSR-109 によって規定されているように、 この例のデフォルト URL パターンは、@WebService.serviceName 属性を使用して 構成されています。ここで、デフォルト URL パターンは /EchoService です。

この例の URL パターンをカスタマイズする場合には、 web.xml ファイルを編集して、url-pattern エントリーを付与します。 この例では、カスタマイズ後の URL パターンは /EchoServiceSOAP11 になっています。

以下の抜粋は、サーブレットのセットアップを示すサンプル web.xml ファイルからのものです。

<servlet id="...">
		<servlet-name>com.ibm.test.EchoServiceSOAP11</servlet-name>
		<servlet-class>com.ibm.test.EchoServiceSOAP11</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
		<servlet-name>com.ibm.test.EchoServiceSOAP11</servlet-name>
		<url-pattern>/EchoServiceSOAP11</url-pattern> ---->  Defining the URL pattern and pointing it to the service implementation class.
</servlet-mapping>

次の例では、サービス実装クラスに関連付けられている WSDL ファイルに複数のポート定義が含まれている場合に必要な、URL パターンのカスタマイズについて図示しています。

以下の抜粋は、サンプルの Web サービス実装クラスからのものです。

package com.ibm.test;
@WebService(serviceName="EchoService", portName="SOAP11EchoServicePort")
public class EchoServiceSOAP11{
	...
}
package com.ibm.test;
@WebService(serviceName="EchoService", portName="SOAP12EchoServicePort")
public class EchoServiceSOAP12{
	...
}

以下の抜粋は、EchoServiceSOAP11 Web サービス実装クラスに関連付けられている WSDL ファイルからのものです。WSDL ファイル内の各ポートは、Web サービス実装クラスの portName にマップされます。

<wsdl:service name="EchoService">
		<wsdl:port name="SOAP11EchoServicePort" tns:binding="..." >
		...
	</wsdl:port>
		<wsdl:port name="SOAP12EchoServicePort" tns:binding="..." >
		...
	</wsdl:port>
</wsdl:service>

このシナリオでは、WSDL ファイル内に複数のポート定義があるので、 web.xml ファイルを編集することで URL パターンをカスタマイズする必要があります。 各サービスのカスタム URL パターンを指定します。

以下の抜粋は、サーブレットのセットアップを示すサンプル web.xml ファイルからのものです。

<servlet id="...">
		<servlet-name>com.ibm.test.EchoServiceSOAP11</servlet-name>
		<servlet-class>com.ibm.test.EchoServiceSOAP11</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
		<servlet-name>com.ibm.test.EchoServiceSOAP11</servlet-name>
		<url-pattern>/EchoServiceSOAP11</url-pattern>
</servlet-mapping>

<servlet id="...">
		<servlet-name>com.ibm.test.EchoServiceSOAP12</servlet-name>
		<servlet-class>com.ibm.test.EchoServiceSOAP12</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
		<servlet-name>com.ibm.test.EchoServiceSOAP12</servlet-name>
		<url-pattern>/EchoServiceSOAP12</url-pattern>
</servlet-mapping>

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_customwebxml
ファイル名:twbs_customwebxml.html