• 締切済み

AxisServer

いま、SOAPに勉強をしています。 クライアントAからSOAPメッセージを サーバ(tomcat + axis)に送り処理をさせて クライアントA自身に返すことはできました。 そこで今やりたいのはクライアントAからサーバで処理をさせ、 違うクライアント(クライアントBとします)にメッセージを送りたいのですが、 この場合、サーバのプログラムはどうしたらいいのでしょうか? returnで返すとクライアントAに戻ってきますよね? となると、サーバでもクライアントAと同じような処理をさせるのでしょうか? そうだとすると、call.setTargetEndpointAddressの中身のURLはクライアントBのIPアドレスとして、 invokeで送信したとします。 そうすると、クライントBはどのようにそのメッセージをうけとるのでしょうか? (後、サービスの場所はどうなる?) Documentをみたら org.apache.axis.server.AxisServer というのがあったのですが、 これを使ったらいいのかな?と思うのですが、 使いからがわかりません・・・ ちなみに、クライアントBにはtomcatは入っていません。 どうかよろしくお願いします。

みんなの回答

  • carme
  • ベストアンサー率75% (3/4)
回答No.2

carmeです。 サーバ → クライアントBもSOAP通信と考えてらっしゃるのですね。 であれば、クライアントB側にもaxis等の環境(Tomcat環境)がないと 難しいのではないでしょうか…? (Axisの動作環境自体がサーブレットコンテナ環境を要しますからねぇ…) Axis上で動くものは確かにクライアントBでも動くとは思いますが… SOAP通信によって呼び出すとなると、 やはりその通信上の問題でサーブレットコンテナが必要になるのでは?と思います。 AxisServerは、Server側の動きをするためのクラス、という意味合いのように読み取れました。 (その反対としてAxisClientがある、と言った感じでしょうか?) RMIサーバのようなものではないのかなぁ…と。 ※もうご覧になっていらっしゃるかもしれませんが、 一応URLを張っておきますので、ドキュメント中で[AxisServer]で検索してみてください 私も、そこまでの事をやった事がないので、 ちゃんとした回答が出ずにすいませんm(_"_)m

参考URL:
http://jpfop.sourceforge.net/jaxml-axis/1.0/html-docs/architecture-guide.html
rikiponpon
質問者

お礼

お返事が遅れて申し訳ありませんでした. 参考URLの方はAxisを使う初めにざっとみただけだけでしたので 今度じっくり読んでみたいと思います. サーバ→クライアントB間はSOAPではなく違う方法を考えてみます. いろいろありがとうございました.

  • carme
  • ベストアンサー率75% (3/4)
回答No.1

私もAxisを勉強中の身なので、回答というわけにはいきませんが…。 クライアントA -> サーバ -> クライアントB という構成のようですが、 クライアントBにTomcat等が入ってないのであれば サーバ -> クライアントB 間はSOAP通信ではないですよね? クライアントBの受け口というのはどのようにしたいのでしょうか? クライアントAからのメッセージを 1.サーバで処理させたい 2.メッセージをクライアントBへ送り、クライアントBで処理させたい(この場合は、メッセージ転送、ですかね?) というのでは、作り方も変わってくるのかなぁ、と思います。 1の方であれば、サーバ(受けているプログラム内)でクライアントBのプログラムを何らかの形(クライアントBに接続できる形)で呼び出せば良いと思います。 2の方であれば、WS-Routing仕様に従ってSOAP Header等を指定してやらねばならないのかなぁ…と思いますが…。 (この場合は、クライアントB上にもTomcatは必要になってくるでしょう) なかなかWebにも資料が転がってなくて情報が乏しいとは思いますが、 (私も苦労しています…)頑張ってください!

rikiponpon
質問者

補足

サーバ → クライアントB間もSOAPでやりたいと思っていたのですが、無理なのでしょうか? ちなみに,クライアントBでもaxisのクラスは使用できると考えています. (CLASSPATHを通すなりして) 例で表すと, プログラムでRMIサーバをつくり,JFrameなどでGUIを作り, スレッドで後ろでRMIを動かしているといっふうにAxisServerもできないのか? と思っていました. (名前からServerとついていたので) サーバでの処理ですが,サーバではAから送られてきたメッセージを読み取り,ある処理を行い, そのメッセージをクライアントBに送るといった作業を行う予定です. carmeさんが言われている(1)の作業だと思います. サーバ → クライアントBはサーバからクライントBを呼び出すのが一番なんでしょかね。。

関連するQ&A