Hitachi

Cosminexus V11 アプリケーションサーバ Webサービス開発ガイド


10.3.2 cosminexus-jaxws.xmlの書式

cosminexus-jaxws.xmlのフォーマットとエンコーディングを次に示します。このフォーマットとエンコーディング以外で記述した場合の動作は保証されません。

cosminexus-jaxws.xmlで指定できる要素を次の表に示します。

表10‒3 cosminexus-jaxws.xmlの要素一覧

要素名

指定個数

説明

jaxwsdd:endpoints要素

1個

ルート要素です。

jaxwsdd:endpoint要素

1個以上

URLと,Webサービス実装クラスまたはプロバイダ実装クラスのマッピングを指定します。

各要素および属性について説明します。

〈この項の構成〉

(1) jaxwsdd:endpoints要素(cosminexus-jaxws.xml)

jaxwsdd:endpoints要素は,cosminexus-jaxws.xmlのルート要素です。属性は持ちません。

(2) jaxwsdd:endpoint要素(cosminexus-jaxws.xml)

jaxwsdd:endpoint要素には,URLと,Webサービス実装クラスまたはプロバイダ実装クラスのマッピングを記述します。1個のjaxwsdd:endpoint要素に1個のマッピングを記述します。Webサービスが複数のポートを持つような場合(一つのWebサービスが複数のURLで提供される場合)や,同じWARファイル内に複数のWebサービスがある場合は,ポートやWebサービスに対応した数のjaxwsdd:endpoint要素を記述する必要があります。

jaxwsdd:endpoint要素の属性の一覧を次の表に示します。

表10‒4 jaxwsdd:endpoint要素の属性一覧

項番

属性名

必須

説明

1

name

jaxwsdd:endpoint要素を区別するための名前を指定します。

2

implementation

Webサービス実装クラスまたはプロバイダ実装クラスを指定します。

3

port

×

Webサービス実装クラスまたはプロバイダ実装クラスと対応づけるポートを指定します。javax.jws.WebServiceアノテーション,またはjavax.xml.ws.WebServiceProviderアノテーションの設定よりも優先されます。一つのWebサービス実装クラスまたはプロバイダ実装クラスを複数のURLにマッピングする場合に指定します。

4

url-pattern

Webサービス実装クラスまたはプロバイダ実装クラスと対応づけるURLを指定します。web.xmlのurl-pattern要素と対応しています。

(凡例)

○:指定が必須であることを示します。

×:指定が必須でないことを示します。

(a) name属性(cosminexus-jaxws.xml)

jaxwsdd:endpoint要素を区別するための名前を空文字列以外の文字列(Javaで扱える文字列)で指定します。

空文字列を指定した場合,デプロイ時にKDJW20031-Eのメッセージが出力されます。同じcosminexus-jaxws.xml内では一意の値にする必要があります。同じname属性値を持つjaxwsdd:endpoint要素が複数ある場合,KDJW40007-Wのメッセージが出力されます。

(b) implementation属性(cosminexus-jaxws.xml)

javax.jws.WebServiceアノテーションを持つクラスのクラス名を指定します。

空文字列を指定した場合,デプロイ時にKDJW20031-Eのメッセージが出力されます。また,存在しないクラスを指定した場合,デプロイ時にKDJW20014-Eのメッセージが出力されます。

複数のURLに対して同じWebサービス実装クラスまたはプロバイダ実装クラスをマッピングする場合は,port属性が一意になるように記述してください。特にWebサービス実装クラスの場合,port属性の記述がないときやport属性値が一意でないとき,メタデータとして不正なWSDLが発行されます。

(c) port属性(cosminexus-jaxws.xml)

メタデータとして発行するWSDLのポート名(wsdl:port要素のname属性の値)のQNameを指定します。メタデータの発行については,「10.6 メタデータの発行」を参照してください。

この属性は省略できます。属性を省略した場合や空文字列が指定された場合,implementation属性で指定したクラスのjavax.jws.WebServiceアノテーション,またはjavax.xml.ws.WebServiceProviderアノテーションのportName属性の値が使用されます。portName属性が省略されている場合は,JSR-181仕様に従って,Webサービス実装クラスまたはプロバイダ実装クラスの単純名にサフィックスとして"Port"を付加した文字列が使用されます。

複数のURLに対して同じWebサービス実装クラスをマッピングする場合,port属性を指定しないとメタデータが正常に発行されません。

(d) url-pattern属性(cosminexus-jaxws.xml)

implementation属性で指定したWebサービス実装クラスまたはプロバイダ実装クラスと対応づけるパス情報を指定します。url-pattern属性で指定した値に基づいて,ディスカバリが行われます。ディスカバリについては,「10.2.2(1) ディスカバリ」を参照してください。

パス情報は,明確な値でなければなりません(アスタリスクなどのワイルドカードは使用できません)。また,web.xmlのurl-pattern要素の値と1対1になるように指定する必要があります。

例えば,url-pattern属性に"/path1"を指定した場合,"/path1"へのリクエストに対して,implementation属性で指定したクラスがマッピングされます。

同じcosminexus-jaxws.xml内では一意の値にする必要があります。同じurl-pattern属性値を持つjaxwsdd:endpoint要素が複数ある場合,KDJW40009-Wのメッセージが出力されます。この場合,同じurl-pattern属性値を持つjaxwsdd:endpoint要素の中で,最初のjaxwsdd:endpoint要素に記述されたマッピングだけが有効になります。

(3) cosminexus-jaxws.xml使用時の設定例

次のWebサービスに対応したDDの記述例を示します。

表10‒5 Webサービス実装クラスと対応するURLの例

項番

Webサービス実装クラス

URL

1

com.sample.AddNumbersImplA

/test1

2

com.sample.AddNumbersImplB

/test2,/test3

web.xmlの例を示します。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <description>Sample web service &quot;fromwsdl&quot;</description>
  <display-name>Sample_web_service_fromwsdl</display-name>
  <listener>
    <listener-class>
      com.cosminexus.xml.ws.transport.http.servlet.WSServletContextListener
    </listener-class>
  </listener>
  <servlet>
    <description>Endpoint servlet for Cosminexus JAX-WS</description>
    <display-name>Endpoint_servlet_for_Cosminexus_JAX_WS</display-name>
    <servlet-name>CosminexusJaxwsServlet</servlet-name>
    <servlet-class>
      com.cosminexus.xml.ws.transport.http.servlet.WSServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>CosminexusJaxwsServlet</servlet-name>
    <url-pattern>/test1</url-pattern>
    <url-pattern>/test2</url-pattern>
    <url-pattern>/test3</url-pattern>
  </servlet-mapping>
</web-app>

バージョン2.5のweb.xmlを作成する場合は,web-app要素のversion属性を"2.5"に,xsd:schemaLocation属性の二つ目のロケーション情報を"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"にしてください。

cosminexus-jaxws.xmlの例を示します。

<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime'>
    <endpoint
        name="test1"
        implementation="com.sample.AddNumbersImplA"
        url-pattern="/test1"
    />
    <endpoint
        name="test2"
        implementation="com.sample.AddNumbersImplB"
        url-pattern="/test2"
        port="{http://sample.com}port1"
    />
    <endpoint
        name="test3"
        implementation="com.sample.AddNumbersImplB"
        url-pattern="/test3"
        port="{http://sample.com}port2"
    />
</endpoints>

バージョン2.5のweb.xmlを作成する場合は,web-app要素のversion属性を"2.5"に,xsd:schemaLocation属性の二つ目のロケーション情報を"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"にしてください。