次のような 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
。
つまり、クライアント プログラムから Web サービスのみを呼び出すと、Person を返すメソッドinsertRow
もある場合にのみ機能します。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.]
変ですね!
何が起こっている?