| Interstage Application Server/Interstage Web Server J2EE ユーザーズガイド |
目次
索引
![]()
|
| 第4部 Webサービス編 | > 第18章 Webサービスの開発 | > 18.2 Webサービスを呼び出す場合(クライアント機能)の開発 |
Webサービスクライアントは、WSDLから生成したスタブを利用してWebサービスを呼び出す処理を行う任意のクラスです。
WebサービスクライアントがWebサービスを呼び出す方法は、以下の二通りあります。
Webサービスを呼び出す処理では、以下のオブジェクトを利用します。
ServiceFactoryクラスを使用してServiceオブジェクトを取得する方法は任意のJavaアプリケーションで利用可能です。この場合、以下の手順でWebサービスを呼び出します。

Serviceインタフェースのクラス名が“StockQuoteProviderService”、サービスエンドポイントインタフェースのクラス名が“StockQuoteProvider”、呼び出すWebサービスのオペレーションの名前が“getLastTradePrice”の場合についての処理例です。
ServiceFactory sf = ServiceFactory.newInstance();//(1) StockQuoteProviderService sqs = (StockQuoteProviderService) sf.loadService(StockQuoteProviderService.class);//(2) StockQuoteProvider sqp = sqs.getStockQuoteProviderPort();//(3) float price = sqp.getLastTradePrice(tickerID);//(4) |
WebアプリケーションまたはEJBアプリケーション、J2EEアプリケーションクライアントからWebサービスを呼び出す場合、JNDIを使用してServiceオブジェクトをlookupすることができます。その他のJavaアプリケーションでServiceオブジェクトを取得する場合は、ServiceFactoryクラスを使用して取得してください。
JNDIを使用する場合は以下の手順でWebサービスを呼び出します。
lookupの引数には、以下の文字列を指定します。
java:comp/env/[ deployment descriptorの<service-ref-name>に指定した値 ] |
deployment descriptorについては、“service reference記述”を参照してください。

InitialContext ic = new InitialContext (); //(1)
StockQuoteProviderService sqs =
(StockQuoteProviderService)ic.lookup("java:comp/env/service/StockQuote"); //(2)
StockQuoteProvider sqp = sqs.getStockQuoteProviderPort(); //(3)
float price = sqp.getLastTradePrice(tickerID); //(4) |
以下のメソッドは使用できません。
------------------------------------------------------------------
} catch( javax.xml.rpc.ServiceException e ){
e.printStackTrace();
if( e.getLinkedCause() != null ){
e.getLinkedCause().printStackTrace();
}
} catch( javax.xml.rpc.soap.SOAPFaultException e ){
e.printStackTrace();
System.out.println(" Code = " + e.getFaultCode());
System.out.println(" String = " + e.getFaultString());
System.out.println(" Actor = " + e.getFaultActor());
if( e.getDetail() != null ){
Detail detail = e.getDetail();
Iterator it = detail.getDetailEntries();
if( it != null ){
while(it.hasNext()){
SOAPElement elm = (SOAPElement)it.next();
System.out.println(" Detail = " + elm);
}
}
}
} catch( javax.xml.rpc.JAXRPCException e ){
e.printStackTrace();
if( e.getLinkedCause() != null ){
e.getLinkedCause().printStackTrace();
}
} catch( java.rmi.RemoteException e ){
e.printStackTrace();
if( e.detail != null ){
e.detail.printStackTrace();
}
} catch( Throwable e ) {
e.printStackTrace();
}
------------------------------------------------------------------
目次
索引
![]()
|