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ユーザーズガイド"を参照してください。
目次 索引 |