jaxws的web service的自定义fault

本文介绍了在JAX-WS中自定义Fault的过程,包括建立Web Service及Web Method、定义异常类MyException和错误信息类MyFault、发布Web Service并查看WSDL,最后在客户端进行验证。还提到JAX-WS 2.1可能可直接将Java异常映射到Fault。
jaxws的web service的自定义fault.

  在jaxws中自定义fault比较绕弯,以下是自定义一个fault的过程。 

1 建立web service以及 web method. 

@WebService 
public interface PersonService { 

@WebMethod 
public Person getPersonById(String id) throws MyException; 



2 MyException.里面一定要有一个faultInfo的object. 

@WebFault(name = "MyException") 
public class MyException extends Exception implements Serializable { 

private static final long serialVersionUID = 1L; 

private MyFault faultInfo; 

public MyException(String s, MyFault faultInfo) { 
super(s); 
this.faultInfo = faultInfo; 


public MyFault getFaultInfo() { 
return faultInfo; 


public void setFaultInfo(MyFault faultInfo) { 
this.faultInfo = faultInfo; 



3 定义MyFault. 

public class MyFault { 

private String errMsg; 
private int errCode; 

public String getErrMsg() { 
return errMsg; 


public void setErrMsg(String errMsg) { 
this.errMsg = errMsg; 


public int getErrCode() { 
return errCode; 


public void setErrCode(int errCode) { 
this.errCode = errCode; 




4 发布web service. 查看wsdl,可以看到以下内容。 
- <message name="MyException"> 
      <part element="tns:MyException" name="fault" />

  </message>

  - <portType name="PersonService"> 
- <operation name="getPersonById"> 
<input message="tns:getPersonById" /> 
<output message="tns:getPersonByIdResponse" /> 
<fault message="tns:MyException" name="MyException" /> 
</operation> 
</portType>

  <xs:element nillable="true" name="MyException" type="tns:myFault" />

  - <xs:complexType name="myFault">

  - <xs:sequence>

  <xs:element name="errCode" type="xs:int" />

  <xs:element name="errMsg" type="xs:string" minOccurs="0" />

  </xs:sequence>

  </xs:complexType>

  5 在client验证。

  try {
   p = ps.getPersonById("exception");
   } catch (MyException me) {

  MyFault myFault = me.getFaultInfo();

  log.log(Level.INFO, "Error ErrCode = "
    + myFault.getErrCode());
   log.log(Level.INFO, "Fault ErrMsg = "
    + myFault.getErrMsg());
}

  绕了好大一圈,擦汗。

  貌似jaxws2.1可以直接map java exception到fault. 有时间可以试一试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值