我有一个如下所示的 Web 服务界面:
@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
public interface MyWS<T> {
@WebMethod Person getRow(int id);
@WebMethod T insertRow(T a);
}
真正奇怪的是,该insertRow
方法仅在我还有一个返回 Person 的方法时才有效。请注意,我不必使用getRow
来insertRow
上班。
换句话说:当我从客户端程序仅调用insertRow
Web 服务时,只有当我还有一个getRow
返回 Person 的方法时它才有效。如果我getRow
从 web 服务中删除,然后再次运行客户端程序,我会得到这个异常:
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.]
奇怪啊!
到底是怎么回事?