可用于@WebFault

时间:2015-12-30 21:48:35

标签: java web-services soap

我发现用于SOAP Web服务表示为@WebFault的类的所有示例都包含一个Fault Beans数组,而表示为fault bean的类包含一个int,一个String,有时还包含一个List。

我的web服务使用java2ws创建wsdl构建步骤。

问题1)SOAP Web服务可以有多个@WebFault吗?人们会这么认为。

问题2)故障bean类可以采用Set吗?并且集合中的元素可以是类,即Set?

此处的目标是将JSR-303 bean验证失败从服务器传播回Web服务客户端,其中表单等待使用0,1或> 1错误消息进行更新。

TIA,

仍在学习史蒂夫

问题3)@WebFault类可以采用Set<>而不是数组?

1 个答案:

答案 0 :(得分:0)

1)是的,单个操作可能有多个错误,就像在Java中一个方法可以抛出多个已检查的异常

2)不确定你究竟在问什么。

让我举几个简单的例子说明你可以做些什么。可以指出你有用的方向:

// MyIntf.java
@WebService
public interface MyIntf {

@WebMethod
void myMethod() throws MyFault;

//...
}

// MyFault.java

@WebFault(faultBean="mypkg.MyFaultBean")
public class MyFault extends Exception {

private MyFaultBean bean;

public MyFault(MyFaultBean bean, String message) {
    super(message);
    this.bean = bean;
}

public MyFault(MyFaultBean bean, String message, Throwable cause) {
    super(message, cause);
    this.bean = bean;
}

public MyFaultBean getFaultInfo() {
    return bean;
}
}

// MyFaultBean.java
public class MyFaultBean {

    private Set mySet;

    public Set getMySet() {
        return mySet;
    }

    public void setMySet(Set mySet) {
        this.mySet = mySet;
    }
    //...
}   

因此,您尝试使用JAXB和JAX-WS在Java异常和WSDL错误之间进行映射(这样做可能有助于您的搜索)。

需要考虑的一件事是,是自上而下(WSDL / XSD主要,Java次要)还是自下而上(Java主要)。

如果您还没有尝试使用的固定Java界面(听起来可能没有,但也许你可以这样做),那么最好从WSDL / XSD开始,然后使用wsdl2java生成Java接口,然后使用JAXB自定义可能会对其进行一些自定义。

关于主题herehere的更多链接,(后者提及" SCA"但这使用JAX-WS和JAXB因此是相关的。)