ibm-ws-bnd.xml ファイルを使用して、ご使用のアプリケーション内のサーバー・プロバイダーおよびクライアントの Web サービス・エンドポイントをカスタマイズできます。
始める前に
ibm-ws-bnd.xml ファイルは、Web ベースの Web サービス・アプリケーション (WAR ファイル) の /WEB-INF ディレクトリー内、または EJB ベースの Web サービス・アプリケーション (JAR ファイル) の /META-INF ディレクトリー内になければなりません。クライアントが clientContainer で実行されている場合、ibm-ws-bnd.xml ファイルは、クライアント EAR 内の JAR ファイルの /META-INF ディレクトリーになければなりません。
このタスクについて
ibm-ws-bnd.xml ファイルを構成することで、サービス・プロバイダーとコンシューマーの両方で Web サービス・アドレス構成をオーバーライドして、Liberty にデプロイされたアプリケーション内で特定のURL を使用して Web サービスをエクスポートし、JAX-WS クライアント・アプリケーションから Web サービスをインポートすることができます。
ibm-ws-bnd.xml ファイル
内で構成できるすべての使用可能なエレメントについては、『ibm-ws-bnd.xml ファイル』を参照してください。
手順
- サービス・プロバイダーの Web サービス・バインディングをオーバーライドします。
- Web サービス・エンドポイント・アドレスをオーバーライドします。 webservice-endpoint エレメントでは、port-component-name 属性によって識別される Web サービス・エンドポイントのエンドポイント・アドレスをオーバーライドできます。
address 属性には、ご使用のアプリケーションのコンテキスト・ルートへの相対パスを指定します。
<?xml version="1.0" encoding="UTF-8"?>
<webservices-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ws-bnd_1_0.xsd" version="1.0">
<!-- 0 to many endpoint descriptions -->
<webservice-endpoint port-component-name="Hello" address="/hiService" />
</webservices-bnd>
- EJB ベースの Web サービスのコンテキスト・ルートをオーバーライドします。 Web サービスが EJB ベースの Web サービスで、EJB アプリケーション (JAR アーカイブ) で定義されている場合、デフォルトのコンテキスト・ルートは EJB jar 名になります。ただし、http-publishing エレメントの context-root 属性を使用してデフォルト値をオーバーライドすることができます。
<?xml version="1.0" encoding="UTF-8"?>
<webservices-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ws-bnd_1_0.xsd" version="1.0">
<!-- optional http publishing module overrides -->
<http-publishing context-root="/HiServer" />
</webservices-bnd>
注: context-root 属性は、Web サービスが EJB ベースの Web サービスで、EJB JAR アーカイブで定義されている場合のみ有効になります。Web サービスが Web アプリケーション (WAR アーカイブ) で定義されている場合、それが EJB ベースの Web サービスであるかどうかにかかわらず、http-publishing エレメントの context-root 属性は無視され、このコンテキスト・ルートが常にその Web アプリケーションのコンテキスト・ルートになります。
- クライアント・アプリケーションの Web サービス・バインディングをオーバーライドします。
- WSDL 文書のロケーションをオーバーライドします。 service-ref エレメントでは、Web サービス・クライアント・アプリケーション内の Web サービス参照の WSDL ロケーションをオーバーライドできます。
<?xml version="1.0" encoding="UTF-8"?>
<webservices-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ws-bnd_1_0.xsd" version="1.0">
<service-ref name="services/hello" wsdl-location="http://localhost:9080/HiServer/hiService?wsdl" />
</webservices-bnd>
wsdl-location 属性には絶対 URI (HTTP またはファイル・プロトコルのいずれか) を指定しますが、クライアント・アプリケーションのルートを基準とした相対 URI を指定することもできます。以下に例を示します。<?xml version="1.0" encoding="UTF-8"?>
<webservices-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ws-bnd_1_0.xsd" version="1.0">
<service-ref name="services/hello" wsdl-location="WEB-INF/wsdl/hiService.wsdl" />
</webservices-bnd>
- ポート・アドレスをオーバーライドします。 port エレメントでは、Web サービス・クライアントの Web サービス参照内のポートのアドレスをオーバーライドできます。
<?xml version="1.0" encoding="UTF-8"?>
<webservices-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ws-bnd_1_0.xsd" version="1.0">
<service-ref name="services/hello" wsdl-location="WEB-INF/wsdl/hiService.wsdl">
<port name="HelloPort" namespace="http://server.ejb.hello.sample.jaxws.ws.ibm.com/" address="http://localhost:9080/HiServer/hiService" />
</service-ref>
</webservices-bnd>
port エレメントの address 属性には、Web サービス・ポートの絶対 URI を指定します。参照先の Web サービスにポートが 1 つしかない場合、service-ref エレメントの port-address 属性を使用できます。以下に例を示します。<webservices-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ws-bnd_1_0.xsd" version="1.0">
<service-ref name="services/hello" port-address="http://localhost:9080/HiServer/hiService" />
</webservices-bnd>
注: service-ref エレメントの port-address 属性と port エレメントの address 属性がどちらも指定されている場合、 port エレメントの address 属性が有効になります。