![]() |
![]() |
|
|
| |
WebLogic Web サービスの呼び出し
この章では、クライアント アプリケーションから WebLogic Web サービスを呼び出す方法について説明します。
WebLogic Web サービスの呼び出しは、クライアント アプリケーションが Web サービスを使用するために実行するアクションです。WebLogic Web サービスを呼び出すクライアント アプリケーションは、Java、Microsoft SOAP Toolkit などの任意のテクノロジを使用して記述できます。
クライアント アプリケーションは、呼び出す Web サービスに関する SOAP メッセージをアセンブルして必要なすべてのデータを SOAP メッセージの本文に含めます。次にクライアントは SOAP メッセージを HTTP/HTTPS を介して WebLogic Server に送信します。そこで Web サービスが実行され、SOAP メッセージが HTTP/HTTPS を介してクライアントに送り返されます。
注意: クライアント アプリケーションを Java で記述する場合、WebLogic サーバはオプションの Java クライアント JAR ファイルを提供します。このファイルには WebLogic Web サービスを呼び出すために必要な WebLogic Web サービス クライアント API や WebLogic FastParser などが含まれます。他の Java WebLogic サーバ クライアントとは異なり、weblogic.jar
ファイルを含める必要がなく、シンクライアントを作成できます。JAR ファイルのダウンロードの詳細については、
Java クライアント JAR ファイルの Web サービス ホーム ページからのダウンロードを参照してください。
各 Web サービスは独自のホーム ページを持っています。同じサーブレット コンテキストを共有する Web サービスはこの Web ページを共有します。この Web ページを使用して Web サービスの WSDL および Java クライアント JAR ファイルを取得します。この Web ページの詳細およびブラウザで呼び出す方法については、 WebLogic Web サービス ホーム ページの呼び出しを参照してください。
WebLogic サーバは、デプロイされた WebLogic Web サービスからダウンロード可能な Java クライアント JAR ファイル内にクライアント サイド Java SOAP API を持ちます。この API を使用して WebLogic Web サービスを呼び出す Java クライアント アプリケーションを作成します。このマニュアル内の例および製品に付属のサンプルでは、この API を使用しています。
警告: W3C または JavaSoft からの標準クライアント サイド Web Service API 仕様は利用できません。WebLogic Web サービス クライアント API が Java コミュニティ プロセスでは標準化されていないため、BEA Systems ではリリースごとに動作方法を変更する権利を保持し、下位互換性を保たない場合があります。
この章の例では、WebLogic Web サービス クライアント API のメイン クラス、インタフェース、およびメソッドについて簡単に説明します。API についての詳細なドキュメントは、「WebLogic Server API リファレンス」で weblogic.soap
パッケージを検索してください。
WebLogic Web サービス クライアント API でサポートされているクライアント モード
WebLogic Web サービス クライアント API では、WebLogic Web サービスを呼び出す Java クライアント アプリケーションの次の 2 つのモードをサポートしています。
この章で説明されている静的および動的クライアント アプリケーションはどちらも、Web サービスの WSDL を使用します。WSDL を使用しないクライアント アプリケーションの作成については、 WSDL ファイルを使用しない Web サービスの呼び出しを参照してください。
RPC スタイル Web サービスまたはメッセージスタイル Web サービスのいずれかを呼び出すために、静的クライアント アプリケーションと動的クライアント アプリケーションのどちらも使用できます。
WebLogic Web サービスを呼び出すクライアントの例
WebLogic Server には、RPC スタイル Web サービスおよびメッセージスタイル Web サービスを作成する両方の例と、Web サービスを呼び出す Java および Microsoft VisualBasic クライアント アプリケーションの両方の例があります。
これらの例は、BEA_HOME
\samples
\examples
\webservices
ディレクトリにあります。BEA_HOME
は、メイン WebLogic Server インストール ディレクトリを指します。RPC スタイル Web サービスの例は rpc
ディレクトリにあり、メッセージスタイル Web サービスの例は message
ディレクトリにあります。
例を作成して実行する方法の詳細については、ブラウザで Web ページ BEA_HOME
\samples
\examples
\webservices
\package-summary.html
を呼び出してください。
WebLogic Web サービス ホーム ページの呼び出し
WebLogic Web サービス ホーム ページは、特定のサーブレット コンテキスト用に定義された Web サービスを WSDL ファイルおよび各 Web サービスに関連付けられている Java クライアント JAR ファイルとともに一覧表示します。
次のテンプレート URL を使用してブラウザで WebLogic Web サービス ホーム ページを呼び出します。
[protocol]://[
host
]:[port
]/[context
]/index.html
この URL の説明は以下のとおりです。
protocol
は、Web サービスのビルドに使用される build.xml
Ant ファイルの <wsgen>
要素の protocol
属性を指します。有効な値は、http
(デフォルト)または https
です。
host
は、Web サービスをホストしているコンピュータのホスト名を指します。
port
は、Web サービスをホストしている WebLogic Server インスタンスのポート番号を指します。
context
は、Web サービスのビルドに使用される build.xml
Ant ファイルの <wsgen>
要素の context
属性を指します。
たとえば、次の build.xml
ファイルを使用して Web サービスをビルドするとします。
<project name="myProject" default="wsgen">
<target name="wsgen">
<wsgen
destpath="myWebService.ear"
context="/myContext"
protocol="http">
<rpcservices path="myEJB.jar">
<rpcservice
bean="statelessSession"
uri="/rpc_URI"/>
</rpcservices>
<messageservices>
<messageservice
name="sendMsgWS"
action="send"
destination="examples.soap.msgService.MsgSend"
destinationtype="topic"
uri="/sendMsg"
connectionfactory="examples.soap.msgService.MsgConnectionFactory"/>
<messageservice
name="receiveMsgWS"
action="receive"
destination="examples.soap.msgService.MsgReceive"
destinationtype="topic"
uri="/receiveMsg"
connectionfactory="examples.soap.msgService.MsgConnectionFactory"/>
</messageservices>
</wsgen>
</target>
</project>
デフォルト ポート 7001
の myHost
ホスト上の /myContext
コンテキスト用の WebLogic Web サービス ホーム ページを呼び出す URL は、次のようになります。
http://www.myHost.com:7001/myContext/index.html
Web サービス ホーム ページから Web サービスの WSDL を取得するには、次の手順に従います。
Java クライアント JAR ファイルの Web サービス ホーム ページからのダウンロード
WebLogic Server は、WebLogic Web サービスを呼び出す Java クライアント アプリケーションを作成するために必要な Java コード のほとんどを含む Java クライアント JAR ファイルを提供します。特に、JAR ファイルには クライアント サイド SOAP API の WebLogic 実装が含まれ、SOAP メッセージの作成および処理に低レベル Java コードを記述する必要がありません。
Java クライアント JAR ファイルには、次のオブジェクトが含まれます。
build.xml
Java ANT ビルド ファイルの clientjar
要素によって指定される追加クラス ファイル
注意: BEA では現在、クライアント機能をサーバ機能と別個にはライセンスしていないため、必要な場合には、この Java クライアント JAR ファイルをユーザ自身の顧客に再配布できます。
Java クライアント JAR ファイルをコンピュータにダウンロードするには、次の手順に従います。
WebLogic Web サービスを呼び出して WSDL を取得する URL
WSDL は、呼び出す Web サービスを記述するためにクライアント アプリケーションによって使用されます。
WebLogic Web サービスの WSDL にアクセスするための URL は、次のとおりです。
[
protocol
]://[host
]:[port
]/[context
]/[WSname
]/[WSname
].wsdl
この URL の説明は以下のとおりです。
protocol
は、Web サービスのビルドに使用される build.xml
Ant ファイルの <wsgen>
要素の protocol
属性を指します。デフォルトでは、この値は http
です。
host
は、Web サービスをホストしているコンピュータのホスト名を指します。
port
は、Web サービスをホストしている WebLogic Server インスタンスのポート番号を指します。
context
は、Web サービスのビルドに使用されるbuild.xml
Ant ファイルの <wsgen>
要素の context
属性を指します。
WSname
は、Web サービスの名前です。
たとえば、build.xml
ファイルの bean
属性が statelessSession
を指定した場合、weblogic-ejb-jar.xml
には次のエントリがあります。
<weblogic-enterprise-bean>
<ejb-name>statelessSession</ejb-name>
<jndi-name>statelessSession.WeatherHome</jndi-name> </weblogic-enterprise-bean>
WSname
値は statelessSession.WeatherHome
になります。
build.xml
ファイル内で Web サービスを定義する messageservice
要素の name
属性によって指定されます。
たとえば、
WebLogic Web サービス ホーム ページの呼び出し にリストされている build.xml
サンプル ファイルを使用すると、RPC スタイル Web サービスの WSDL にアクセスする URL は次のようになります。
http://www.myHost.com:7001/myContext/statelessSession.WeatherHome/statelessSession.WeatherHome.wsdl
同様に、2 つのメッセージスタイル Web サービス用の WSDL にアクセスする URL は、次のようになります。
http://www.myHost.com:7001/myContext/sendMsgWS/sendMsgWS.wsdl
http://www.myHost.com:7001/myContext/receiveMsgWS/receiveMsgWS.wsdl
RPC スタイル WebLogic Web サービスを呼び出すクライアントの作成
この節では、RPC スタイル WebLogic Web サービスを Java および Microsoft SOAP ToolKit の 2 つのタイプのクライアントから呼び出す方法について説明します。
この節で示す例では、examples.ejb.basic.statelessSession
WebLogic Server 例で説明されている Trader ステートレス セッション EJB に基づいた RPC スタイル Web サービスを呼び出します。
必要な Java コード のほとんどすべてが WebLogic Server で提供され、クライアント コンピュータにダウンロードする Java クライアント JAR ファイルにパッケージ化されているため、WebLogic Web サービスを呼び出す Java クライアント アプリケーションの作成は簡単です。
この節では、クライアント アプリケーションの静的および動的の 2 つのモードについて説明します。EJB と JavaBean パラメータおよび戻り値の型の Java インタフェースがあり、クライアント Java コード内で直接使用する場合は、静的クライアントを使用します。インタフェースがない場合は、動的クライアントを使用します。
次の例では、WebLogic Server の examples.ejb.basic.statelessSession
EJB のサンプルに基づいた RPC スタイル Web サービスを呼び出す簡単な静的 Java クライアントを示します。
この例では、Web サービスの WSDL の取得に URL の http://www.myhost.com:7001/myContext/statelessSession/statelessSession.wsdl を使用します。この URL の作成方法および RPC スタイル Web サービスの作成に使用される build.xml
ファイルの例については、
WebLogic Web サービスを呼び出して WSDL を取得する URLを参照してください。
例の後に示す手順では、このクライアントを作成するために実行する基本手順で例に関連する部分について説明します。
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import examples.ejb.basic.statelessSession.Trader;
import examples.ejb.basic.statelessSession.TradeResult;
public class Client{
public static void main( String[] arg ) throws Exception
Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.soap.http.SoapInitialContextFactory");
h.put("weblogic.soap.wsdl.interface",
Trader.class.getName() );
Context context = new InitialContext(h);
Trader service = (Trader)context.lookup(
"http://www.myHost.com:7001/myContext/statelessSession/statelessSession.wsdl" );
TradeResult result = (TradeResult)service.buy( "BEAS", 100 );
System.out.print( result.getStockSymbol() );
System.out.print( ":" );
System.out.println( result.getNumberTraded() );
}
}
WebLogic Web サービスを静的に呼び出す Java コードは、EJB を呼び出すリモート メソッド呼び出し(RMI)クライアント コードと似ています。主な違いは次のとおりです。
RPC スタイル WebLogic Web サービスを呼び出す静的 Java クライアントを作成するには、次の手順に従います。
この手順の詳細については、 Java クライアント JAR ファイルの Web サービス ホーム ページからのダウンロードを参照してください。
main
メソッド内で、次の Java コードを追加してクライアントを初期化し、Web サービスと対話できるようにします。
Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.soap.http.SoapInitialContextFactory");
h.put("weblogic.soap.wsdl.interface",
Trader.class.getName() );
Context context = new InitialContext(h);
Trader service = (Trader)context.lookup( "http://www.myHost.com:7001/myContext/statelessSession/statelessSession.wsdl" );
この例では、Trader
は EJB へのパブリック インタフェースです。context.lookup()
メソッドで使用される URL の作成方法の詳細については、
WebLogic Web サービスを呼び出して WSDL を取得する URLを参照してください。
TradeResult result = (TradeResult)service.buy( "BEAS", 100 );
クライアントは、Trader
EJB の buy()
メソッドを実行します。戻り値は TraderResult
JavaBean オブジェクトです。Trader
EJB のパブリック メソッドを見つけるには、Web サービスの返された WSDL を検証するか、またはダウンロードした Java クライアント JAR ファイルを unJAR して javap ユーティリティを使用して Trader
インタフェースのメソッドをリストします。
TraderResult
JavaBean の get
メソッドを使用して返された結果を取得します。TraderResult
クラスのメソッドを見つけるには、Java クライアント JAR ファイルを unJAR して javap ユーティリティを使用して TraderResult
クラスのメソッドをリストします。
System.out.print( result.getStockSymbol() );
System.out.print( ":" );
System.out.println( result.getNumberTraded() );
次の例では、WebLogic Server の examples.ejb.basic.statelessSession
EJB のサンプルに基づいた RPC スタイル Web サービスを呼び出す簡単な動的 Java クライアントを示します。
この例では、Web サービスの WSDL の取得に URL のhttp://www.myhost.com:7001/myContext/statelessSession/statelessSession.wsdl を使用します。この URL の作成方法および RPC スタイル Web サービスの作成に使用される build.xml
ファイルの例については、
WebLogic Web サービスを呼び出して WSDL を取得する URLを参照してください。
例の後に示す手順では、このクライアントを作成するために実行する基本手順で例に関連する部分について説明します。
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import examples.ejb.basic.statelessSession.TradeResult;
import weblogic.soap.WebServiceProxy;
import weblogic.soap.SoapMethod;
public class DynamicClient{
public static void main( String[] arg ) throws Exception{
Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.soap.http.SoapInitialContextFactory");
Context context = new InitialContext(h);
WebServiceProxy proxy = (WebServiceProxy)context.lookup(
"http://www.myHost.com:7001/myContext/statelessSession/statelessSession.wsdl" );
SoapMethod method = proxy.getMethod( "buy" );
TradeResult result = (TradeResult)method.invoke(
new Object[]{ "BEAS", new Integer(100) } );
System.out.print( result.getStockSymbol() );
System.out.print( ":" );
System.out.println( result.getNumberTraded() );
}
}
RPC スタイル WebLogic Web サービスを呼び出す動的 Java クライアントを作成するには、次の手順に従います。
この手順の詳細については、 Java クライアント JAR ファイルの Web サービス ホーム ページからのダウンロードを参照してください。
main
メソッド内で、次の Java コードを追加してクライアントを初期化し、Web サービスと対話できるようにします。
Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.soap.http.SoapInitialContextFactory");
Context context = new InitialContext(h);
WebServiceProxy proxy = (WebServiceProxy)context.lookup( "http://www.myHost.com:7001/myContext/statelessSession/statelessSession.wsdl" );
この例では、context.lookup()
メソッドは、特定の Trader
オブジェクトではなく汎用 WebServiceProxy
オブジェクトを返します。これにより、WebServiceProxy
が任意の EJB オブジェクトを表すことが可能になるため、例がより動的になります。context.lookup()
メソッドで使用される URL の作成方法の詳細については、
WebLogic Web サービスを呼び出して WSDL を取得する URLを参照してください。
SoapMethod method = proxy.getMethod( "buy" );
TradeResult result = (TradeResult)method.invoke(
new Object[]{ "BEAS", new Integer(100) } );
クライアントは、invoke()
メソッドを使用して間接的に Trader
EJB の buy()
メソッドを実行します。戻り値は TraderResult
JavaBean オブジェクトです。Trader
EJB のパブリック メソッドを見つけるには、Web サービスの返された WSDL を検証するか、またはダウンロードした Java クライアント JAR ファイルを unJAR して javap ユーティリティを使用して Trader
インタフェースのメソッドをリストします。
TraderResult
JavaBean の get
メソッドを使用して返された結果を取得します。TraderResult
クラスのメソッドを見つけるには、Java クライアント JAR ファイルを unJAR して javap ユーティリティを使用して TraderResult
クラスのメソッドをリストします。
System.out.print( result.getStockSymbol() );
System.out.print( ":" );
System.out.println( result.getNumberTraded() );
Microsoft SOAP Toolkit クライアントの記述
WebLogic Web サービスは、Microsoft SOAP ToolKit で提供されるクライアント サイド コンポーネントを使用して Microsoft Visual Basic アプリケーションから呼び出すことができます。
注意: WebLogic Server 6.1 では、Microsoft SOAP ToolKit のバージョン 2.0sp2 のみをサポートしています。
次の Visual Basic のサンプル コードは、examples.webservices.rpc
例で記述される WebLogic Web サービスを呼び出す簡単な例を示します。
SET soapclient = CreateObject("MSSOAP.SoapClient")
Call soapclient.mssoapinit(
"http://myhost:7001/weather/statelessSession.WeatherHome/statelessSession.WeatherHome.wsdl", "Weather", "WeatherPort")
wscript.echo soapclient.getTemp(94117)
Microsoft SOAP ToolKit を使用して WebLogic Web サービスを Visual Basic アプリケーションから呼び出すには、次の手順に従います。
SoapClient
オブジェクトを Visual Basic アプリケーション内でインスタンス化します。
SoapClient.mssoapinit()
メソッドを実行することによって 次のパラメータを渡し、SoapClient
オブジェクトを初期化します。
service
要素の name
属性で識別される Web サービスの名前。
port
要素の name
属性で識別される Web サービスのポート。
SoapClient
オブジェクトを初期化した後で、WSDL 内で定義されているすべてのメソッドは SoapClient
オブジェクトに動的にバインドされます。
メッセージスタイル WebLogic Web サービスを呼び出す Java クライアントの作成
この節では、Java クライアント アプリケーションからメッセージスタイル Web サービスを呼び出す方法について説明します。
必要な Java コード のほとんどすべてが WebLogic Server で提供され、クライアント コンピュータにダウンロードする Java クライアント JAR ファイルにパッケージ化されているため、メッセージスタイル WebLogic Web サービスを呼び出す Java クライアント アプリケーションの作成は簡単です。
この節では、データを WebLogic Server に送信するメッセージスタイル Web サービスを呼び出す Java クライアントと、データを受信するメッセージスタイル Web サービスを呼び出す Java クライアントの 2 種類について説明します。両方の例で、動的 Java クライアントの作成方法を示します。
注意: 送受信アクションは、クライアント アプリケーションの視点から見ています。
例で示す 2 つのメッセージスタイル Web サービスは、次の build.xml
ファイルを使用してアセンブルされていると想定します。
<project name="myProject" default="wsgen">
<target name="wsgen">
<wsgen
destpath="messageExample.ear"
context="/msg"
protocol="http" >
<messageservices>
<messageservice
action="send"
name="Sender"
destination="examples.soap.msgService.MsgSend"
destinationtype="topic"
uri="/sendMsg"
connectionfactory="examples.soap.msgService.MsgConnectionFactory"/>
<messageservice
action="receive"
name="Receiver"
destination="examples.soap.msgService.MsgReceive"
destinationtype="topic"
uri="/receiveMsg"
connectionfactory="examples.soap.msgService.MsgConnectionFactory"/>
</messageservices>
</wsgen>
</target>
</project>
build.xml
ファイルは、次の 2 つのメッセージスタイル Web サービスを示しています。クライアント アプリケーションが JNDI 名 examples.soap.msgService.MsgSend
を使用して JMS トピックにデータを送信するために使用する Sender
と、クライアント アプリケーションが JNDI 名 examples.soap.msgService.MsgReceive
を使用して JMS トピックからデータを受信するために使用する Receiver
の 2 つです。両方のメッセージスタイル Web サービスは、同じ ConnectionFactory(examples.soap.msgService.MsgConnectionFactory
)を使用して JMS 接続を作成します。
この節では、Web サービスを呼び出してデータを WebLogic Server に送信する動的 Java クライアント アプリケーションを作成する方法について説明します。要点を簡潔に示すため、この例ではデータを含める String
データ型を送信します。
注意: org.w3c.dom.Document
、org.w3c.dom.DocumentFragment
、または org.w3c.dom.Element
の各データ型を send
メソッドに送信する方法を示すさらに複雑な例については、
WSDL ファイルを使用しない Web サービスの呼び出しを参照してください。
データを WebLogic Server に送信するメッセージスタイル Web サービスは、単一のメソッド send
を定義します。これは、ユーザの Java クライアント アプリケーションから呼び出す必要がある唯一のメソッドです。send
メソッドで使用できるパラメータは実際のデータです。データ型は String
(例で使用)、DOM ツリー、InputStream
などの任意の型を使用できます。データは Web サービスをアセンブルするために使用される build.xml
ファイル内に指定した JMS の送り先で最終的に終了します。
例では URL http://localhost:7001/msg/Sender/Sender.wsdl
を使用して Web サービスの WSDL を取得します。この URL の作成方法の詳細については、
WebLogic Web サービスを呼び出して WSDL を取得する URLを参照してください。
例の後の手順では、このクライアントを作成するために実行する基本手順の一部として、例に関連する節について説明します。
package examples.soap;
import java.util.Properties;
import java.net.URL;
import javax.naming.Context;
import javax.naming.InitialContext;
import weblogic.soap.WebServiceProxy;
import weblogic.soap.SoapMethod;
import weblogic.soap.SoapType;
import weblogic.soap.codec.CodecFactory;
import weblogic.soap.codec.SoapEncodingCodec;
public class ProducerClient{
public static void main( String[] arg ) throws Exception{
Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.soap.http.SoapInitialContextFactory");
h.put("weblogic.soap.verbose", "true" );
CodecFactory factory = CodecFactory.newInstance();
factory.register( new SoapEncodingCodec() );
h.put( "weblogic.soap.encoding.factory", factory );
Context context = new InitialContext(h);
WebServiceProxy proxy = (WebServiceProxy)context.lookup(
"http://localhost:7001/msg/Sender/Sender.wsdl" );
SoapMethod method = proxy.getMethod( "send" );
String toSend = arg.length == 0 ? "No arg to send" : arg[0];
Object result = method.invoke( new Object[]{ toSend } );
}
}
データを WebLogic Server に送信するメッセージスタイル WebLogic Web サービスを呼び出す動的 Java クライアントを作成するには、次の手順に従います。
この手順の詳細については、 Java クライアント JAR ファイルの Web サービス ホーム ページからのダウンロードを参照してください。
main
メソッドで、Properties
オブジェクトを作成して初期コンテキスト プロパティを設定します。
Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.soap.http.SoapInitialContextFactory");
h.put("weblogic.soap.verbose", "true" );
CodecFactory factory = CodecFactory.newInstance();
factory.register( new SoapEncodingCodec() );
h.put( "weblogic.soap.encoding.factory", factory );
send
メソッドを取得します。
Context context = new InitialContext(h);
WebServiceProxy proxy = (WebServiceProxy)context.lookup(
"http://localhost:7001/msg/Sender/Sender.wsdl" );
SoapMethod method = proxy.getMethod( "send" );
send
メソッドを呼び出して、データを Web サービスに送信します。この例では、クライアント アプリケーションは単純に最初の引数を受け取って String
として送信します。ユーザーが特定の引数を指定しない場合、クライアント アプリケーションでは文字列 No arg to send
を送信します。
String toSend = arg.length == 0 ? "No arg to send" : arg[0];
Object result = method.invoke( new Object[]{ toSend } );
この節では、Web サービスを呼び出してデータを WebLogic Server から受信する動的 Java クライアント アプリケーションを作成する方法について説明します。
データを WebLogic Server から受信するメッセージスタイル Web サービスは、receive
という単一のメソッドを定義します。これは、ユーザの Java クライアント アプリケーションから呼び出す必要がある唯一のメソッドです。receive
メソッドでは入力パラメータを使用できません。Web サービスをアセンブルするために使用された build.xml
ファイル内に指定する JMS の送り先から Web サービスが取得したデータを含む汎用 Java オブジェクトを返します。
この節で示す例では URL の http://localhost:7001/msg/Receiver/Receiver.wsdl
を使用して Web サービスの WSDL を取得します。この URL の作成方法の詳細については、
WebLogic Web サービスを呼び出して WSDL を取得する URLを参照してください。
例の後の手順では、このクライアントを作成するために実行する基本手順の一部として、例に関連する節について説明します。
package examples.soap;
import java.util.Properties;
import java.net.URL;
import javax.naming.Context;
import javax.naming.InitialContext;
import weblogic.soap.WebServiceProxy;
import weblogic.soap.SoapMethod;
import weblogic.soap.SoapType;
import weblogic.soap.codec.CodecFactory;
import weblogic.soap.codec.SoapEncodingCodec;
public class ConsumerClient{
public static void main( String[] arg ) throws Exception{
Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.soap.http.SoapInitialContextFactory");
h.put("weblogic.soap.verbose", "true" );
CodecFactory factory = CodecFactory.newInstance();
factory.register( new SoapEncodingCodec() );
h.put( "weblogic.soap.encoding.factory", factory );
Context context = new InitialContext(h);
WebServiceProxy proxy = (WebServiceProxy)context.lookup(
"http://localhost:7001/msg/Receiver/Receiver.wsdl" );
SoapMethod method = proxy.getMethod( "receive" );
while( true ){
Object result = method.invoke( null );
System.out.println( result );
}
}
}
データを WebLogic Server から受信するメッセージスタイル WebLogic Web サービスを呼び出す動的 Java クライアントを作成するには、次の手順に従います。
この手順の詳細については、 Java クライアント JAR ファイルの Web サービス ホーム ページからのダウンロードを参照してください。
main
メソッドで、Properties
オブジェクトを作成して初期コンテキスト プロパティを設定します。
Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.soap.http.SoapInitialContextFactory");
h.put("weblogic.soap.verbose", "true" );
CodecFactory factory = CodecFactory.newInstance();
factory.register( new SoapEncodingCodec() );
h.put( "weblogic.soap.encoding.factory", factory );
receive
メソッドを取得します。
Context context = new InitialContext(h);
WebServiceProxy proxy = (WebServiceProxy)context.lookup(
"http://localhost:7001/msg/Receiver/Receiver.wsdl" );
SoapMethod method = proxy.getMethod( "receive" );
receive
メソッドを呼び出してデータを Web サービスから受信します。この例では、クライアント アプリケーションは無限 while
ループを使用して連続して receive
メソッドを呼び出します。つまり、メッセージの JMS の送り先をポーリングします。receive
メソッドがデータを返すと、クライアント アプリケーションはその結果を標準の出力に出力します。
while( true ){
Object result = method.invoke( null );
System.out.println( result );
WebLogic Server が Web サービスを実行中に例外が生成された場合、Web サービスを呼び出したクライアント アプリケーションが標準 SOAP 障害についての実行時 weblogic.soap.SoapFault
例外を受け取ります。
WebLogic Server の次のタイプの例外は、クライアント アプリケーション内で実行時 SoapFault
例外を生成する可能性があります。
クライアント アプリケーションが SoapFault
例外を受け取った場合、weblogic.soap.SoapFault
の次のメソッドを使用して検証してください。
getFaultCode()
− SOAP faultcode を返します。
getFaultString()
− WebLogic Server 内で例外を生成したクラスまたはインタフェースの名前を返します。たとえば、RPC スタイル Web サービスを構成するステートレス セッション EJB が例外を生成した場合、getFaultString()
メソッドはこの EJB のインタフェースを返します。
printStackTrace()
− 例外のスタック トレースを返します。
次の Java クライアント アプリケーションからの抜粋部分は、weblogic.soap.SoapFault
を使用して WebLogic Server 上で発生したエラーを検証する例を示しています。
import weblogic.soap.SoapFault;
...
try {
TradeResult result = (TradeResult)method.invoke(
new Object[]{ "BEAS", new Integer(100) } );
System.out.print( result.getStockSymbol() );
System.out.print( ":" );
System.out.println( result.getNumberTraded() );
} catch (SoapFault fault){
System.out.println( "Ooops, got a fault: " + fault );
fault.printStackTrace();
}
Web サービスを呼び出すための初期コンテキスト ファクトリ プロパティ
次の表は、Java クライアント アプリケーション内で WebLogic で生成された Java クライアント JAR ファイルを使用して WebLogic Web サービスを呼び出すときに Properties
オブジェクトを使用して設定できる Java プロパティを示しています。
注意: これらのプロパティは、初期コンテキスト ファクトリに渡されます。Java システム プロパティではありません。
WebLogic Web サービスを呼び出すクライアントに必要な追加クラス
WebLogic Web サービスは、次の 2 つのエンコーディング スタイルをサポートしています。
Java クライアント アプリケーションが SOAP エンコーディングを使用する場合、WebLogic Server からダウンロードした Java クライアント JAR ファイルには WebLogic Web サービスを呼び出すために必要なすべてのクラスが含まれます。
ただし、クライアント アプリケーションが Apache のリテラル XML エンコーディングを使用している場合は、Java クライアント JAR ファイルには必要なファイルすべては含まれません。クライアント JAR ファイルのサイズはそれほど大きくないのが普通です。
以下に、追加で必要になる可能性があるクラスを示します。
クライアント アプリケーションを実行するときに CLASSPATH 環境変数をそれぞれの場所に設定するか、または wsgen
Java Ant タスクを使用して Web サービスをアセンブルするときに build.xml
ファイル内のclientjar
要素を使用して、これらのクラスを含めることができます。
クライアント アプリケーションで必要なクラスの完全なリストを取得するには、アプリケーションをコンパイルしてから -verbose
フラグを指定して実行します。これにより必要なすべてのクラスがリストされます。
![]() |
![]() |
![]() |