| 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つずつ作成されます。
目次
索引
![]()
|