我不能在我的网络服务方法中抛出异常。当我在我的方法中抛出异常并尝试从Soap UI测试我的应用程序时,它会给出错误:
Failed to import WSDL
和
java.lang.NullPointerException
我的问题是:
如何为Java Web Services编写用户定义的异常?
(即有一种方法可以返回一个名字给出的学生。但是如果学生在数据库找不到,会抛出错误吗?)
答案 0 :(得分:1)
wsdl例外是一等公民,被称为soap fault。基本上,错误是您的操作可以返回的另一个消息 - 但具有不同的语义。通常,故障会在端点接口中转换为强类型异常。
取自Web services hints and tips: Design reusable WSDL faults:
的示例<message name="faultMsg"><part name="fault" element="tns:fault"/>
<portType name="Interface">
<operation name="op1">
<input name="op1Request" message="tns:op1RequestMsg"/>
<output name="op1Response" message="tns:op1ResponseMsg"/>
<fault name="fault" message="tns:faultMsg"/>
</operation>
</portType>
如果从服务方法中抛出suvh异常,则会将其转换为<fault>
消息并在客户端重新抛出。如果您只是在服务器端抛出任意消息,则将其视为错误,并可能导致例如在客户端有500个错误代码。