我们有一个Web服务实现,它会抛出自定义SecurityException
。
public class SecurityException extends Exception {
然后使用maven插件java2ws
将服务转换为wsdl。生成的.wsdl文件包含
<xs:element name="SecurityException" type="tns:SecurityException"/>
<xs:complexType name="SecurityException">
...
<wsdl:message name="SecurityException">
<wsdl:part name="SecurityException" element="tns:SecurityException">
</wsdl:part>
</wsdl:message>
现在,如果我在.wsdl文件上运行wsdl2java
,我会收到 SecurityException 文件:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "SecurityException")
public class SecurityException {
}
和 SecurityException_Exception 文件:
@WebFault(name = "SecurityException", targetNamespace = "http://service...../")
public class SecurityException_Exception extends Exception {
private ....SecurityException securityException;
public SecurityException_Exception() {
super();
}
public SecurityException_Exception(String message) {
super(message);
}
public SecurityException_Exception(String message, Throwable cause) {
super(message, cause);
}
public SecurityException_Exception(String message, ....SecurityException securityException) {
super(message);
this.securityException = securityException;
}
public SecurityException_Exception(String message, ....SecurityException securityException, Throwable cause) {
super(message, cause);
this.securityException = securityException;
}
public ....SecurityException getFaultInfo() {
return this.securityException;
}
}
如何避免不必要的课程?为什么它甚至产生了?为什么不能重新创建旧类呢?
SecurityException extends Exception
(我们正在使用cxf 2.5版,因此我发现googleing的超级类的&lt; 2.3错误似乎不适用)
答案 0 :(得分:1)
想出来..显然你无法避免帮助类,因为在Web服务中使用时必须包装Exceptions,因为它们不可序列化。
答案 1 :(得分:0)
我正在使用内置maven的jAXB(jaxws-maven-plugin / wsimport目标),但我遇到了同样的问题。 (它生成了BusinessException和BusinessException_Exception)。
我的解决方法是将异常放在另一个命名空间中。所以现在我有两个BusinessException文件,在两个不同的文件夹中生成,一个是另一个以其他参数为例的异常。编译好,没有Exception_Exception丑陋。