- PR -

JAX-RPCを使っての動的なリモートメソッド実行の方法について

1
投稿者投稿内容
フレ
会議室デビュー日: 2003/03/23
投稿数: 12
投稿日時: 2003-11-10 16:20
お世話になります。
最近になってWebサービスを使ったRPCのお勉強をはじめました。
とりあえず以下のような環境で勉強しています。

【UDDIレジストリサーバ】
SUN JAVA WEB SERVICES DEVELOPER PACK 1.2
※AS上で稼動しているWebサービスを登録ずみとします。

【アプリケーションサーバ(SOAPサーバ)】
SUN ONE Application Server 7 Platform Edition
※WSDLとSOAPで使用するIFなどを配置済みとします。

【SOAPクライアント】
Javaアプリケーション
※SOAPのスタブ経由でRPCを実行します。


アプリケーションサーバに付属していたサンプルを参考にして
SOAPを使ったRPCが動作するようにはなりましたが
現時点では以下のようなコードを書いているため
レジストリサーバから動的にサービス情報を取得してきて
RPCを実行するということができていません。

============================================================
try {
  String endpoint= "http://192.168.0.1/hello/helloworld?WSDL";
  String UrlString = endpoint;
  String nameSpaceUri = "http://192.168.0.1/wsdl/HelloWorld";
  String serviceName = "HelloWorld";
  String portName = "HelloIFPort";

  URL helloWsdlUrl = new URL(UrlString);
  ServiceFactory serviceFactory = ServiceFactory.newInstance();
  Service helloService = serviceFactory.createService(helloWsdlUrl,
new QName(nameSpaceUri, serviceName));
  HelloIF myProxy = (HelloIF) helloService.getPort(new QName(nameSpaceUri, portName),
samples.webservices.jaxrpc.proxy.HelloIF.class);
  System.out.println(myProxy.sayHello("Test Message"));
} catch (Exception ex) {
  ex.printStackTrace();
}
============================================================

上記のコードだと
endpoint、nameSpaceUri、serviceName、portNameの
4つの情報があらかじめ分かっていないとRPCを実現できませんが
できれば以下のような手順で実行したいと思っています。

(1)SOAPクライアントでレジストリサーバから登録サービスを検索
      ↓
(2)サービスの情報(サービス名やWSDLを示すURL)を取得
      ↓
(3)SOAPクライアントから2項のWSDLにアクセスし、サービスの詳細情報を取得
      ↓
(4)サービスの詳細情報を基にライブラリ(JAX-RPC)が動的にスタブを生成して
   SOAPクライアントはスタブを使用してRPCを実現する。

やりたいことは以下のページに詳細されていた
「UDDI情報からダイナミック・バインディングに挑戦」という項目と
同様のことです。
http://www.atmarkit.co.jp/fxml/rensai/soap05/soap05d.html

JAX-RPCで実現することは可能なのでしょうか...?
また、実現方法をご存知の方がいらっしゃいましたら
教えていただけると助かります。

以上です。
よろしくお願いします。
Paul
ベテラン
会議室デビュー日: 2002/04/30
投稿数: 75
お住まい・勤務地: 東京
投稿日時: 2003-11-25 19:57
中込です。

引用:

やまさんの書き込み (2003-11-10 16:20) より:
(1)SOAPクライアントでレジストリサーバから登録サービスを検索
      ↓
(2)サービスの情報(サービス名やWSDLを示すURL)を取得
      ↓
(3)SOAPクライアントから2項のWSDLにアクセスし、サービスの詳細情報を取得
      ↓
(4)サービスの詳細情報を基にライブラリ(JAX-RPC)が動的にスタブを生成して
   SOAPクライアントはスタブを使用してRPCを実現する。

やりたいことは以下のページに詳細されていた
「UDDI情報からダイナミック・バインディングに挑戦」という項目と
同様のことです。

JAX-RPCで実現することは可能なのでしょうか...?



JAX-RPC単体では、「UDDI情報からダイナミック・バインディング」に相当するインタフェースを持っていないため、できません。

JAX-RやUDDI4j等で(1)、(2)を、JAX-RPCの動的プロキシ方式を使って(3)、(4)をコーディングすれば、結果的には同様のことが可能になるといえるでしょう。
フレ
会議室デビュー日: 2003/03/23
投稿数: 12
投稿日時: 2003-11-25 22:49
山野です。

引用:


JAX-RPC単体では、「UDDI情報からダイナミック・バインディング」に相当するインタフェースを持っていないため、できません。

JAX-RやUDDI4j等で(1)、(2)を、JAX-RPCの動的プロキシ方式を使って(3)、(4)をコーディングすれば、結果的には同様のことが可能になるといえるでしょう。




回答ありがとうございます。
やはりそうなるんですかぁ。

仕事が終わった後にヒマをみて勉強しているので
ご回答いただいたようなカンジでコーディングすればいけそうかなぁって
ところまでは感触がつかめていましたが、ご回答いただいたことで
うまくいきそうな気がしてきたので試してみたいと思います。

試してみてうまくいったらサンプルソースも含めて
報告したいと思います。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)