| Interstage Studio プログラマーズガイド |
目次
索引
|
| 付録A Interstage Application Server V9.0.1以降で動作するJ2EEアプリケーションを開発する |
Webアプリケーション、EJBアプリケーションまたはJ2EEアプリケーションクライアントからWebサービスを呼び出す場合、JNDIを使用してServiceオブジェクトをlookupすることができます。
WebサービスクライアントアプリケーションからJNDIを使用してServiceオブジェクトをlookupする場合、クライアントアプリケーションの形態に応じて以下のdeployment descriptorにservice reference記述を定義する必要があります。
|
クライアントアプリケーションの形態 |
deployment descriptor |
|---|---|
|
WebアプリケーションからServiceオブジェクトをlookupする場合 |
web.xml |
|
EJBアプリケーションからServiceオブジェクトをlookupする場合 |
ejb-jar.xml |
|
J2EEアプリケーションクライアントからServiceオブジェクトをlookupする場合 |
application-client.xml |
<?xml version="1.0" encoding="UTF-8" ?>
<web-app id="WebApp_ID" version="2.4" 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/web-app_2_4.xsd">
<display-name>WordServer</display-name>
・・・
<service-ref>
<description>WSDL Service WebSercie</description>
<service-ref-name>service/WordServer</service-ref-name>
<service-interface>sample.WordServerService</service-interface>
</service-ref>
</web-app>
deployment descriptorのタグの詳細は、Interstage Application Server V9.0.1以降の"Interstage Application Server J2EEユーザーズガイド"を参照してください。
[Webサービスクライアント]ウィザードを利用することで、WSDLファイルからWebサービスクライアントアプリケーションを作成することができます。
Webサービスクライアントアプリケーションの作成については、"Webサービスクライアントアプリケーションを作成する"を参照してください。
JNDIを使用してServiceオブジェクトを取得して、スタブからWebサービスにアクセスします。
java:comp/env/[deployment descriptorの<service-ref-name>に指定した値]
package sample;
import java.rmi.RemoteException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.xml.rpc.ServiceException;
import javax.xml.rpc.holders.StringHolder;
public class WordClient {
public WordClient() {
}
public void run(String[] args) {
try {
InitialContext ic = new InitialContext();
WordServerService service = (WordServerService)ic.lookup("java:comp/env/service/WordServerService");
WordServer wordServer = service.getWordServerPort();
String param1 = "Test is OK" ;
StringHolder param2 = new javax.xml.rpc.holders.StringHolder("") ;
int wordNumber = wordServer.countWord(param1,param2) ;
System.out.println("word number " + wordNumber) ;
System.out.println("words " + param2.value) ;
} catch (RemoteException e) {
e.printStackTrace();
} catch (ServiceException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
WordClient object = new WordClient();
object.run(args);
}
}

JNDIを利用してServiceオブジェクトをlookupする場合は、単一のInitialContextオブジェクトを複数のスレッドで使用することはできません。

J2EEアプリケーションクライアントからJNDIを使用する場合は、JNDIサービスプロバイダの環境設定をする必要があります。JNDIサービスプロバイダの環境設定については、Interstage Application Server V9.0.1以降の"Interstage Application Server J2EEユーザーズガイド"を参照してください。
目次
索引
|