2012-01-17 13 views
1

Redstone XML-RPCを使用していますが、この質問はすべてのXML-RPC通信に適用されます。考えるXML-RPCでエラー応答を処理する方法は?

static interface Jira 
{ 
    public String login(String username, String password) throws XmlRpcFault; 
    public void logout(String loginToken) throws XmlRpcFault; 
    public Issue findIssue(int issueId) throws XmlRpcFault; 
} 

public static void main(String[] args) throws Exception 
{ 
    Jira jira = (Jira) XmlRpcProxy.createProxy("http://jira.atlassion.com/RPC2", new Class[] { Jira.class }); 
    String token = jira.login(args[ 0 ], args [ 1 ]); 
    jira.logout(token); 
} 

は私がfindIssueリモートプロシージャをinvokoe言います。私は認証されたユーザーです。

1)Issueオブジェクトが見つかりました。使用する権限があり、リモートでシリアル化され、ローカルでシリアル化されていません。 2)Issueオブジェクトが見つかりましたが、使用する権限がありません。 3)Issueオブジェクトが見つかりません。

2と3は例外ですが、XML-RPCが例外をサポートしていないと言うことができます。 1)と3)の場合のみ、nullの問題が返されている可能性がありますが、それ以外の可能性があるため、もっと一般的な解決策が必要です。

ありがとうございます!

答えて

0

私はRedstoneライブラリをまだ使用していませんが、Javadocを見ていますが、エラーコードを返すサービスを呼び出すときにクライアント側で使用するXmlRpcFaultがありますが、サーバー上でそれを行う。

Apache XML-RPCの場合、サーバーで明示的にサポートされていなかったため、常に0が返されます。このライブラリは非常に似通った処理を行っているようで、採用できる回避策はおそらく似ています。

私は基本的にカスタムRuntimeExceptionをスローし、それを他の層で捕まえました。理想的には、サーブレットの実装でそれをキャッチすることは可能ですが、私の場合、内部的にcatch(Exception)を使用していたため、例外を正しく伝播するためにいくつかのクラスを拡張する必要がありました。

関連する問題