Interstage Studio プログラマーズガイド |
目次
索引
![]() ![]() |
付録A Interstage Application Server V9.0.1以降で動作するJ2EEアプリケーションを開発する | > A.2 EJB2.1のアプリケーションの開発方法 |
Stateless Session BeanをWebサービス化するための手順について説明します。
プロジェクトの作成
[新規 Enterprise JavaBeansプロジェクト]ウィザードの[Enterprise JavaBeansバージョン]で[2.1]を選択して、Enterprise JavaBeansプロジェクトを作成します。
Enterprise Beanの作成
[新規 Enterprise Bean]ウィザードでEnterprise Beanを作成します。
Interstage Application Server V9.0.1のEJB2.1アプリケーションでは、Home/Remoteインタフェース経由でのリモートアクセスをサポートしていません。
サービスエンドポイントインタフェースの作成
生成したEnterprise Beanクラスからサービスエンドポイントインタフェースを作成します。
サービスエンドポイントインタフェースでは以下の条件を満たすようにしてください。
インタフェースの生成は[インタフェースの抽出]機能を利用して生成できます。
- プロジェクトエクスプローラで生成したEnterprise Beanクラスを選択します。
- コンテキストメニューから[リファクタリング] > [インタフェースの抽出]を選択します。
- [インタフェースの抽出]ダイアログボックスの[インタフェース内で宣言されるメンバ]で公開するメソッドを選択します。
- 生成されたインタフェースをサービスエンドポイントインタフェースの条件を満たすように修正します。
deployment descriptorの更新
deployment descriptor(ejb-jar.xml)にサービスエンドポイントインタフェースの定義をします。
以下に設定例を示します。
<?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>
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は、以下の手順で作成します。
項目 |
設定値 |
---|---|
親フォルダを入力または選択 |
<プロジェクト>/<ソースフォルダ>/META-INF |
ファイル名 |
webservices.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 |
Webサービス化されたStateless Session Beanを配備する場合は、モジュールは必ずEARファイルである必要があるため、EARファイルにパッケージングします。
EARファイルの作成については、"J2EEアプリケーションを開発する"を参照してください。
作成したEARファイルをInterstage Application ServerのIJServerに配備します。
配備の手順については、"Interstage Studioユーザーズガイド"を参照してください。
Webサービスからのみ呼び出し可能なStateless Session Beanを含むejb-jarは、以下のIJServerに配備してください。それ以外のIJServerに配備すると配備に失敗します。
- WebアプリケーションとEJBアプリケーションを同一JavaVMで運用
配備時に以下の警告メッセージが表示されますが、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つずつ作成されます。
目次
索引
![]() ![]() |