Cosminexus アプリケーションサーバ V8 Webサービス開発の手引

[目次][用語][索引][前へ][次へ]

3.5.4 EJBのWebサービスの設定用WARファイルの作成

EJBのWebサービス呼び出し機能は,EARファイルに設定用WARファイルを含めない構成で利用できます。ただし,WARファイルの指定が必要なアプリケーションサーバの機能を利用するために,EARファイルに設定用WARファイルを含めることができます。ここでは設定用WARファイルについて説明します。

<この項の構成>
(1) EARファイルに設定用WARファイルを含めない場合
(2) EARファイルに設定用WARファイルを含める場合
(3) 設定用WARファイル名
(4) 設定用WARファイルのweb.xml

(1) EARファイルに設定用WARファイルを含めない場合

EARファイルにEJB JARファイルが含まれていて,さらにEJB JARファイルにEJBのWebサービス実装クラスが含まれるとき,JAX-WSエンジンは設定用WARファイルを含むと仮定して動作します。仮定される設定用WARファイルの構成を次の表に示します。

表3-3 仮定される設定用WARファイルの構成

ディレクトリ 備考
/


WEB-INF/
web.xml 3.5.4(4)を参照してください。
META-INF/

(凡例)
−:説明や補足事項が特にないことを示します。

(2) EARファイルに設定用WARファイルを含める場合

EJBのWebサービス実装クラスを呼び出す際に同時にサーブレットフィルタ機能を適用するなど,web.xmlに設定を加えたい場合,作成したweb.xmlを設定用WARファイルに格納し,EARファイルに含めます。設定用WARファイルの構成を次の表に示します。なお,設定用WARファイルには命名規則があります。設定用WARファイルのファイル名については,「3.5.4(3) 設定用WARファイル名」を参照してください。

表3-4 設定用WARファイルの構成

ディレクトリ 備考
/










WEB-INF/


classes/ コンパイルしたJavaクラスを格納します。フィルタを使用する場合は,フィルタのJavaクラスをこのディレクトリに格納します。


lib/ コンパイルしたJavaクラスを含むJARファイルを格納します。フィルタを使用する場合は,フィルタのJavaクラスを含むJARファイルをこのディレクトリに格納します。
web.xml 3.5.4(4)を参照してください。
META-INF/

(凡例)
−:説明や補足事項が特にないことを示します。

注※
設定用WARファイルのclassesにPOJOのWebサービスを含めないでください。POJOのWebサービスを含めた場合の動作は保証されません。

(3) 設定用WARファイル名

EARファイルに設定用WARファイルを含める場合,EJBのWebサービスの設定用WARファイル名は,J2EEサーバ用ユーザプロパティファイル(usrconf.properties)のwebserver.container.jaxws.webservice.wsee.warnameプロパティで指定したファイル名にする必要があります。

EARファイルに設定用WARファイルを含めない場合,webserver.container.jaxws.webservice.wsee.warnameプロパティで指定したファイル名の設定用WARファイルを含むと仮定して動作します。EARファイルに設定用WARファイルを含めない場合,メッセージがJ2EEサーバのログに出力されるので,JAX-WSエンジンが設定用WARファイルを含むと仮定したことを確認できます(KDJE42391-I)。このメッセージが出力されなかった場合は,プロパティで指定した設定用WARファイルがEARファイルに含まれることを確認できます。

なお,プロパティのデフォルト値は「CosminexusWSEE.war」です。

EJBのWebサービス呼び出しに対して,次に示す設定を使用できます。これらの設定を使用する場合は,設定用WARファイルをEARファイルに含めて,設定用WARファイル名を指定してください。

(4) 設定用WARファイルのweb.xml

ここではEJBのWebサービスの設定用WARファイルに含まれるweb.xmlについて説明します。

web.xmlを作成する場合,ファイル名称は"web.xml"とし,WARファイルを構成するWEB-INFディレクトリの直下に格納します。web.xmlの格納が必須かどうかは,J2EEサーバ用ユーザプロパティファイル(usrconf.properties)のwebserver.container.jaxws.webservice.wsee.no_webxml.enabledプロパティの設定値によって異なります。

次に,設定用WARファイルにweb.xmlを含めない場合の動作および設定用WARファイルにweb.xmlを含める場合の動作について説明します。

(a) 設定用WARファイルにweb.xmlを含めない場合

webserver.container.jaxws.webservice.wsee.no_webxml.enabledプロパティの設定値に"strict",または"lax"を設定して,EJBのWebサービスの設定用WARファイルにweb.xmlを含めない場合,Webサービス呼び出し時に次に示す内容のweb.xmlがあるものとして処理されます。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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_2_5.xsd">
  <description>Cosminexus JAX-WS Default web.xml</description>
  <display-name>Cosminexus_JAX_WS_Default_web_xml</display-name>
  <listener>
    <listener-class>
      com.cosminexus.xml.ws.transport.http.servlet.EJBWSServletContextListener
    </listener-class>
  </listener>
  <servlet>
    <description>EJB Endpoint servlet for Cosminexus JAX-WS</description>
    <display-name>EJB_Endpoint_servlet_for_Cosminexus_JAX_WS</display-name>
    <servlet-name>CosminexusJaxwsEjbServlet</servlet-name>
    <servlet-class>
      com.cosminexus.xml.ws.transport.http.servlet.EJBWSServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>CosminexusJaxwsEjbServlet</servlet-name>
    <url-pattern>"/" + Webサービス1のサービス名+ "/" + Webサービス1のクラス名</url-pattern>
    <url-pattern>"/" + Webサービス2のサービス名+ "/" + Webサービス2のクラス名</url-pattern>
      :
    <url-pattern>"/" + Webサービスnのサービス名+ "/" + Webサービスnのクラス名</url-pattern>
  </servlet-mapping>
  <session-config>
    <session-timeout>60</session-timeout>
  </session-config>
</web-app>

url-pattern要素の「"/" + Webサービス1のサービス名+ "/" + Webサービス1のクラス名」は,Webサービス実装クラスのjavax.jws.WebServiceアノテーションのserviceName属性とname属性の値に,プレフィクスとして「/」(スラッシュ)を付けた文字列が定義されます。

設定用WARファイル内に格納したすべてのWebサービス実装クラスについて,url-pattern要素があるかのように動作します。

注意
  • JAX-WSエンジンが仮定したweb.xmlは,実際に設定用WARファイル内に生成されるわけではありません。Webサービスが呼び出される場合を除いて,すべてこの仮定はないものとして扱われます。

(例)
cjgetapppropコマンドで取得できる属性ファイルには,web.xmlに関する情報は含まれません。また,webserver.container.jaxws.webservice.wsee.no_webxml.enabledプロパティに"lax"を設定して不正な内容のweb.xmlを設定用WARファイルに含めた場合は,実際に含まれているweb.xmlに関する情報だけが取得できます。
  • webserver.container.jaxws.webservice.wsee.no_webxml.enabledプロパティに"lax"を設定して不正な内容のweb.xmlを設定用WARファイルに含めた場合,JAX-WSエンジンがWebサービス呼び出し時に仮定するweb.xmlの内容が,実際のweb.xmlに記載されるわけではありません。
(b) 設定用WARファイルにweb.xmlを含める場合

webserver.container.jaxws.webservice.wsee.no_webxml.enabledプロパティに"strict"を設定してweb.xmlをWARファイルに含める場合,または"none"を設定した場合,web.xmlは,次に示す条件を満たすように作成してください。

EJBのWebサービスの設定用WARファイルに含めるweb.xmlの例を次に示します。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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_2_5.xsd">
  <description>Cosminexus JAX-WS Default web.xml</description>
  <display-name>Cosminexus_JAX_WS_Default_web_xml</display-name>
  <listener>
    <listener-class>
      com.cosminexus.xml.ws.transport.http.servlet.EJBWSServletContextListener
    </listener-class>
  </listener>
  <servlet>
    <description>EJB Endpoint servlet for Cosminexus JAX-WS</description>
    <display-name>EJB_Endpoint_servlet_for_Cosminexus_JAX_WS</display-name>
    <servlet-name>CosminexusJaxwsServlet</servlet-name>
    <servlet-class>
      com.cosminexus.xml.ws.transport.http.servlet.EJBWSServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>CosminexusJaxwsServlet</servlet-name>
    <url-pattern>/AddNumbersImplService/AddNumbersImpl</url-pattern>
  </servlet-mapping>
  <session-config>
    <session-timeout>60</session-timeout>
  </session-config>
</web-app>

この例では,Webサービス実装クラスのjavax.jws.WebServiceアノテーションのserviceName属性の値が「AddNumbersImplService」で,さらにname属性が「AddNumbersImpl」であることを想定しています。

webserver.container.jaxws.webservice.wsee.no_webxml.enabledプロパティの設定値に"lax"を設定し,設定用WARファイルにweb.xmlを含める場合,リスナ,サーブレット,サーブレットマッピング,およびそのほかの要素が不完全に含まれるとき,動作は保証されません。