- PR -

AXISのサービスメソッド内ではRMIは使えない?

投稿者投稿内容
おちゃ
常連さん
会議室デビュー日: 2005/01/07
投稿数: 25
投稿日時: 2005-01-25 19:37
引用:
Webサービス実装クラスのメソッド(DataService#getCustomer)は、呼ばれていることが確認されています。



これはgetCustomerのメソッド内に、各処理ごとにログを書き出すようにして、確認いたしました。
obj = (RemoteInterface)java.rmi.Naming.lookup(name);
の直前までログが吐かれていたのですが、このメソッド以降は何も吐かれていません。
Exceptionも吐かれていません。
参照したログはWebサービス実装クラスのメソッドの置いてあるTomcatのcatalina.outです。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-01-25 20:10
logsディレクトリに他にログファイルはありませんか?
H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2005-01-25 20:32
DataService#getCustomerが呼ばれているとのことですので、とりあえずネットワークとか設定の問題ではない感じですね。もうちょっと詳しい内容がわからないとなんともいえませんけどね。

私ならこうします。
1.AXISを使わずにDataService#getCustomerメソッドを呼び出してみる。
2.DataService#getCustomerのRMIの部分をコメントアウトして何かダミーの返答をするようにしてAXISでメソッドを呼び出してみる。
3.tcpmonを使って実際に何がAXIS上でやり取りされてるかを見てみる。
http://ws.apache.org/axis/java/user-guide.html#tcpmon

みたいな感じで、どの箇所で、どうして起きてるのかを先に見極めてみてください。(当たり前すぎてあんまし役に立ってない気もしますが・・・)AXISを使うとDebugが大変ですよね。私も何度か困った記憶があります。

なお、 http://ws.apache.org/axis/java/install.html のことですが、そこの説明の趣旨は「AXISはバイトストリームでデータを送らないからRMIやCORBAよりも遅いよ。Java同士で交信するのならRMIかCORBAを考えたほうがいいよ」って感じです。

[ メッセージ編集済み 編集者: H2 編集日時 2005-01-25 20:33 ]
おちゃ
常連さん
会議室デビュー日: 2005/01/07
投稿数: 25
投稿日時: 2005-01-26 15:53
H2さん、ありがとうございます。

いろいろ試してみたのですが、偶然動いてしまいました。
RMIの実装方法なのですが、クライアント側には、スタブ以外にも
サーバ側と同じクラスファイルをすべて入れると動くようでした。

クライアント側に必須なクラスファイルはスタブだけではないのですね?
H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2005-01-26 16:48
結局RMIの問題だったんですね。AXISとRMIを重ねて使うとどっちが問題なのかわからなくなるんですよね (私も経験者ですから 苦笑)

ちなみにこういう所に目を通しておくといいと思います。
http://java-house.jp/ml/topics/topics.html#core-rmi
おちゃ
常連さん
会議室デビュー日: 2005/01/07
投稿数: 25
投稿日時: 2005-01-27 11:00
みなさま、ありがとうございました。
結局はAXISは関係なくRMIの実装に問題がありました。
ご教示ありがとうございました。心からお礼申し上げます。

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