Interstage Studio プログラマーズガイド
目次 索引 前ページ次ページ

付録A Interstage Application Server V9.0.1以降で動作するJ2EEアプリケーションを開発する> A.2 EJB2.1のアプリケーションの開発方法

A.2.1 Stateless Session BeanをWebサービス化する方法

Stateless Session BeanをWebサービス化するための手順について説明します。

(1) Stateless Session Beanの作成

プロジェクトの作成

[新規 Enterprise JavaBeansプロジェクト]ウィザードの[Enterprise JavaBeansバージョン]で[2.1]を選択して、Enterprise JavaBeansプロジェクトを作成します。

Enterprise Beanの作成

[新規 Enterprise Bean]ウィザードでEnterprise Beanを作成します。

  1. Enterprise Bean種別
    [Enterprise Bean種別]では、[Stateless Session Bean]を選択します。

  2. インタフェース生成オプション
    Stateless Session Beanを作成する場合は、[LocalHome/Localインタフェースを生成する]を選択してください。Webサービスからだけ呼び出されるStateless Session Beanの場合はLocalHome/Localインタフェースは不要ですが、ここでは、[LocalHome/Localインタフェースを生成する]を選択してください。
    Interstage Application Server V9.0.1のEJB2.1アプリケーションでは、Home/Remoteインタフェース経由でのリモートアクセスをサポートしていません。
  3. ビジネスメソッド定義
    Webサービスで公開するメソッドを定義します。ウィザード終了後に生成されたEnterprise Beanクラスに定義したメソッドを実装します。

サービスエンドポイントインタフェースの作成

生成したEnterprise Beanクラスからサービスエンドポイントインタフェースを作成します。
サービスエンドポイントインタフェースでは以下の条件を満たすようにしてください。

インタフェースの生成は[インタフェースの抽出]機能を利用して生成できます。
  1. プロジェクトエクスプローラで生成したEnterprise Beanクラスを選択します。
  2. コンテキストメニューから[リファクタリング] > [インタフェースの抽出]を選択します。
  3. [インタフェースの抽出]ダイアログボックスの[インタフェース内で宣言されるメンバ]で公開するメソッドを選択します。
  4. 生成されたインタフェースをサービスエンドポイントインタフェースの条件を満たすように修正します。

deployment descriptorの更新

deployment descriptor(ejb-jar.xml)にサービスエンドポイントインタフェースの定義をします。

  1. プロジェクトエクスプローラで、ejb-jar.xmlを選択してDDエディタ(EJB)で開きます。
  2. DDエディタ(EJB)の[ソース]タブを選択してXMLを表示します。
  3. Webサービス化するStateless Session Beanの<ejb-name>配下に、<service-endpoint>タグおよび、サービスエンドポイントインタフェースクラス名を設定します。

    以下に設定例を示します。

    <?xml version="1.0" encoding="UTF-8"?>
    <ejb-jar version="2.1" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">
    
      <display-name>BankJAR</display-name>
      <enterprise-beans>
         <session>
           <ejb-name>CreditCardEndpointBean</ejb-name>
           <local-home>sCreditCardEndpointHome</local-home>
           <local>CreditCardEndpointRemote</local>
           <service-endpoint>sample.CreditCardIntf</service-endpoint>
           <ejb-class>sample.CreditCardEndpointBean</ejb-class>
           <session-type>Stateless</session-type>
           <transaction-type>Container</transaction-type>      
         </session>
      </enterprise-beans>
    
      <assembly-descriptor>
        <container-transaction>
          <method>
            <ejb-name>CreditCardEndpointBean</ejb-name>
            <method-intf>ServiceEndpoint</method-intf>
            <method-name>validateCreditCard</method-name>
          </method>
          <trans-attribute>Required</trans-attribute>
        </container-transaction>
      </assembly-descriptor>
    
    </ejb-jar>

(2) Webサービス関連定義ファイルの作成

Webサービスの公開に必要な以下の定義ファイルを生成します。

webservices.xml以外の定義ファイルの生成にはiswsgen wsdlコマンドを使用します。

     iswsgen wsdl -module ejb [オプション] "インタフェース名"

インタフェース名には、作成したサービスエンドポイントインタフェースを指定します。
以下にコマンドの実行例を示します。

     iswsgen wsdl -module ejb sample.CreditCardIntf

EJBアプリケーションやクラスを参照する場合は、コマンドオプションの"-classpath"にクラスパスを指定して実行してください。
iswsgenコマンドの詳細については、Interstage Application Server V9.0.1以降の"Interstage Application Server リファレンスマニュアル(コマンド編)"を参照してください。

webservices.xmlは、以下の手順で作成します。

  1. [ファイル]メニューまたは、コンテキストメニューから[新規] > [その他]を選択します。

  2. [新規]ウィザードの[XML] > [XML文書ファイル]を選択します。

  3. [XMLファイルの作成]ウィザードの[XMLファイルの作成]ページで、[XMLファイルを最初から作成]を選択して、[次へ]をクリックします。

  4. [XMLファイル名]ページでは、以下を選択して、[終了]をクリックします。

    項目

    設定値

    親フォルダを入力または選択

    <プロジェクト>/<ソースフォルダ>/META-INF

    ファイル名

    webservices.xml


  5. 作成したwebservices.xmlファイルをXMLエディタで開き編集します。

    以下に設定例を示します。

    <?xml version="1.0" encoding="UTF-8"?>
    <webservices version="1.1" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/j2ee_web_services_1_1.xsd">
         <webservice-description>
              <webservice-description-name>CreditCard</webservice-description-name>
              <wsdl-file>META-INF/wsdl/CreditCardEndpointBean.wsdl</wsdl-file>
              <jaxrpc-mapping-file>META-INF/CreditCardEndpointBean_mapping.xml</jaxrpc-mapping-file>
              <port-component>
              <port-component-name>CreditCard</port-component-name>
              <wsdl-port xmlns:wsdl-port_ns="http://sample">wsdl-port_ns:CreditCardrPort</wsdl-port>
                   <service-endpoint-interface>sample.CreditCardIntf</service-endpoint-interface>
                   <service-impl-bean>
                        <ejb-link>CreditCardEndpointBean</ejb-link>
                   </service-impl-bean>
              </port-component>
         </webservice-description>
    </webservices>
webservices.xmlについては、Interstage Application Server V9.0.1以降の"Interstage Application Server J2EEユーザーズガイド"を参照してください。

生成した定義ファイルは以下の構成で格納してください。

ファイル名

格納先

WSDLファイル

META-INF/wsdl 配下

webservices.xml

META-INF 配下

<WSDLファイル名>_mapping.xml

(3) EARファイルにパッケージング

Webサービス化されたStateless Session Beanを配備する場合は、モジュールは必ずEARファイルである必要があるため、EARファイルにパッケージングします。
EARファイルの作成については、"J2EEアプリケーションを開発する"を参照してください。

(4) 配備

作成したEARファイルをInterstage Application ServerのIJServerに配備します。
配備の手順については、"Interstage Studioユーザーズガイド"を参照してください。

Webサービスからのみ呼び出し可能なStateless Session Beanを含むejb-jarは、以下のIJServerに配備してください。それ以外のIJServerに配備すると配備に失敗します。
配備時に以下の警告メッセージが表示されますが、EJB2.1アプリケーションではリモートアクセスをサポートしていないため、問題ありません。
「警告 : クライアント配布物はWeb + EJB [1VM]種別のサーバではダウンロードすることができません。」

Webサービス化したStateless Session BeanをIJServerに配備すると、自動的にEJB SOAPルータと呼ばれるWebアプリケーションが組み込まれます。
WebサービスではHTTPプロトコルでリクエストが送受信されるため、Webサービス化されたStateless Session Beanを運用する場合にはSOAP(HTTP)からのリクエストを送受信するためのServletが必要になります。このServletのことをEJB SOAPルータと呼びます。
EJB SOAPルータはWebサービス化されたStateless Session Beanを含むejb-jarファイルに対して1つずつ作成されます。

目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 1998-2007