【发布时间】:2012-01-17 00:49:37
【问题描述】:
我正在使用 Redstone 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 远程过程。我是经过身份验证的用户。可能会发生三件事:
1) 找到Issue对象,我有权使用它,远程序列化,本地反序列化。 2) 找到了问题对象,但我没有使用它的授权。 3) 未找到问题对象。
2 和 3 是异常情况,但据我所知 XML-RPC 不支持异常。如果只有情况 1) 和 3),如果没有找到,我也许可以返回 null 问题,但由于还有其他可能性,我需要一个更通用的解决方案。
谢谢!
【问题讨论】: