我无法在 Web 服务的方法中引发异常。当我在方法中抛出异常并尝试从 Soap UI 测试我的应用程序时,它会给出该错误:
Failed to import WSDL
和
java.lang.NullPointerException
我的问题是:
如何为 Java Web 服务编写用户定义的异常?
(即有一个方法返回由姓名给出的学生。但是,如果学生在数据库中找不到,则会抛出错误?)
最佳答案
在 wsdl异常(exception)是一等公民,被称为 soap fault s。基本上,错误是您的操作可以返回的另一条消息 - 但具有不同的语义。通常,故障会转换为端点接口(interface)中的强类型异常。
示例取自 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 错误代码。
关于java - 在 Java Web 服务中引发用户定义的异常时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10790299/