• 締切済み

SOAP::Lite axis 例外処理

お世話になります。 perlクライアントから、SOAP::Liteモジュールを使い、 axisに登録されたjavaサーブレットクラスを呼び出しています。 (例) $s = SOAP::Lite->service( 'http://xxx.wsdl' ); #サービス名 $s->test(); #javaサーブレットクラス呼び出し javaサーブレットクラスが例外(Exception)で終了した場合、 perlクライアントで例外をキャッチする方法はありますでしょうか? #以下のコードではエラーはキャッチできませんでした。 eval { $s->test(); }; if ($@) { # エラー処理 }; * 通常処理はうまくうごいています。 例外は意図的にExceptionをthrowしています。java内ではキャッチして終了してます。

みんなの回答

回答No.1

あんま自信ないですが、何かの手がかりになれば。on_fault ハンドラで拾えるんじゃないかと思います。ドキュメントによると、デフォルトでは接続エラーはdieでそれ以外(FAULT = Servletでのthrow等?)はスルーするっぽいです。 on_faultハンドラのつかいかたは、t/21-public.t から抜粋するとこんな感じっぽいです。 use SOAP::Lite on_fault => sub { my $soap = shift; my $res = shift; ref $res ? warn(join " ", "SOAP FAULT:", $res->faultstring, "?n") : warn(join " ", "TRANSPORT ERROR:", $soap->transport->status, "?n"); return new SOAP::SOM; }, ; warnじゃなくてdieした方がお望みの挙動になるかもしれません。

mozori01
質問者

お礼

ご回答ありがとうございます。 on_faultハンドラについて、色々調べたのですが、 イマイチ使いかたがわかりませんでした。 SOAP Fault を使えば良さそうな感じだったので、 いまそちらの方向で色々試しています。

すると、全ての回答が全文表示されます。

関連するQ&A