我有一个如下所示的Web服务界面:
@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
public interface MyWS<T> {
@WebMethod Person getRow(int id);
@WebMethod T insertRow(T a);
}
真正奇怪的是,如果我还有一个返回Person的方法,insertRow
方法才有效。请注意,我不必使用getRow
来insertRow
工作。
换句话说:当我从客户端程序中仅在Web服务上调用insertRow
时,如果我还有一个返回Person的getRow
方法,它就会起作用。如果我从Web服务中删除getRow
然后再次运行客户端程序,我会遇到以下异常:
Exception in thread "main" javax.xml.ws.WebServiceException: javax.xml.bind.MarshalException
- with linked exception:
[com.sun.istack.internal.SAXException2: class com.myproject.Person nor any of its super class is known to this context.
javax.xml.bind.JAXBException: class com.myproject.Person nor any of its super class is known to this context.]
奇怪,呵呵!
发生了什么事?