我发现用于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<>而不是数组?
答案 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自定义可能会对其进行一些自定义。
关于主题here和here的更多链接,(后者提及" SCA"但这使用JAX-WS和JAXB因此是相关的。)