重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お世話になります。

perlクライアントから、SOAP::Liteモジュールでaxisサーブレット(javaクラス)の呼出を行っています。
サーブレットであるエラーが発生したときに、例外を投げているのですが、
perlクライアント側でその例外をキャッチするにはどのようにしたら良いのでしょうか?

●perlクライアント ---------------------------------------------
my $service = SOAP::Lite
-> uri('​http://xxx/axis/services/test')
-> proxy('​http://xxx/axis/services/test?wsdl');

$result = $service->Test( 0, 0 );

●javaサーブレットクラス -------------------------------------
public class test( int a, int b ) {

if ( a==0 || b==0 ) {
throw Exception( "testException" );
}

A 回答 (2件)

当方の環境では取得できますが・・・



ActivePerl v5.6.1
SOAP::Lite v0.55
Apache axis v1.4
JDK 1.5.0_12

--- perlソース ---
use SOAP::Lite;
use Data::Dumper;
my $service = SOAP::Lite
-> uri('http://localhost:8080/axis')
-> proxy('http://localhost:8080/axis/Hello.jws')
;
$result = $service->sayHello();
if($result->fault){
print STDERR $result->faultstring;
}


--- javaソース ---
import java.lang.Exception;

public class Hello{
public String sayHello() throws Exception{
throw new Exception();
return "Hello!";
}


※axisは http://muimi.com/j/axis/ を参考にセットアップしています。
    • good
    • 0
この回答へのお礼

度々のご回答ありがとうございます。

現状のシステムではうまくいかないため、別の原因があるかもしれません。
(少々複雑なつくりになっているので・・)
とりあえずHelloWorldなど、簡易環境を作ってみて試行してみたいと思います。

お礼日時:2007/10/10 16:21

$result->fault


$result->faultcode
$result->faultstring
で例外の種類、メッセージが取れませんか?

クライアントによりfaultがうまく取得できないことがあるようなので、サーバ側で例外をキャッチしたら例外用レスポンスを自前で作るほうが安全だとは思いますが。

参考URL:http://www-06.ibm.com/jp/developerworks/webservi …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

ご指摘の方法ですと、通信エラー(無効サーバや回線切断)などは
キャッチできるのですが、サーバが吐き出すExceptionは無視されてしまいます。

クライアントにより・・というのに関係があるのでしょうか・・。

お礼日時:2007/10/09 16:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!