【问题标题】:Getting Error When Throwing User Defined Exception at Java Web Services在 Java Web 服务中引发用户定义的异常时出错
【发布时间】:2012-06-03 03:42:13
【问题描述】:

我无法在我的 Web 服务的方法中引发异常。当我在我的方法中抛出异常并尝试从 Soap UI 测试我的应用程序时,它会给出该错误:

Failed to import WSDL

java.lang.NullPointerException

我的问题是:

如何为 Java Web 服务编写用户定义的异常?

(即,有一个方法可以返回一个给定名字的学生。但是如果学生在数据库中找不到会抛出错误?)

【问题讨论】:

    标签: java web-services exception


    【解决方案1】:

    中,例外是一等公民,被称为s。基本上,故障是您的操作可以返回的另一条消息 - 但具有不同的语义。通常,错误会被转换为端点接口中的强类型异常。

    示例取自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 异常,它将被转换为 &lt;fault&gt; 消息并在客户端重新抛出。如果您只是在服务器端抛出任意消息,则会将其视为错误并可能导致例如客户端有 500 错误代码。

    【讨论】:

    • 我是 Java Web 服务的新手。我使用 Spring 并且不编写任何 wsdl 模式,它是自动生成的。我可以在 Java 端这样做吗?
    • @karmaci:是的,使用jaxws,您可以使用@WebFault 注释您的异常。
    • 这里有东西:stackoverflow.com/questions/2064447/… 但我不知道如何实现它。我需要一个简单的基本示例。
    • 我已经实现了一个示例,但是我的示例在没有定义 targetNamespace 元素的情况下不起作用?你有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    • 2010-09-16
    相关资源
    最近更新 更多