客户端捕获Web服务用户异常[Java 6.0.17]

时间:2009-11-18 17:45:31

标签: java jax-ws web-services

我正在尝试使用JAX-WS从Web服务器向客户端发送EXCEPTION ... 当服务器抛出异常时,客户端会捕获它...但内容不是预期的消息...

Server.java

package pck;

@WebService()
public class Server
{
    @WebMethod()
    public function() throws UserException
    {
    throw new UserException(“Something”);
    }
}

Exception.java

import javax.xml.ws.WebFault;

@WebFault()
public class UserException
        extends Exception
{
    private String ErrMessage;

    public UserException(String message)
    {
        this.ErrMessage = message;
    }

    public String ErrorMessage()
    {
        return this.ErrMessage;
    }
}

Client.java

public class Client
{
    public static void main(String[] args) throws Exception
    {
    try
        {
        Server.function();
        }
    catch (UserException ex)
        {
        System.out.println("User Exception: " + ex.ErrorMessage());
        }
    }
}

现在,正如我所提到的,当服务器抛出异常时,客户端会捕获它,但ex.ErrorMessage()返回字符串“pck.UserException”而不是“Something”,它是在服务器中创建的......关于为什么的任何线索?

此外,当我运行我的WebService时,我会在输出中不断收到以下消息:     com.sun.xml.internal.ws.model.RuntimeModeler getExceptionBeanClass
    信息:动态创建异常bean类pck.jaxws.UserExceptionBean

任何线索或帮助将不胜感激。 谢谢,

1 个答案:

答案 0 :(得分:0)

不确定,但您的自定义异常看起来很奇怪。事实上你应该super消息:

public UserException(String message) {
    super(message);
}

这样你可以通过e.getMessage()获得它。看看它是否有帮助。