アプリケーションをデプロイしようとすると、次の例外が発生したようです。
Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
java.util.List is an interface, and JAXB can't handle interfaces.
this problem is related to the following location:
at java.util.List
at private java.util.List foobar.alkohol.register.webservice.jaxws.GetRelationsFromPersonResponse._return
at foobar.alkohol.register.webservice.jaxws.GetRelationsFromPersonResponse
java.util.List does not have a no-arg default constructor.
this problem is related to the following location:
at java.util.List
at private java.util.List foobar.alkohol.register.webservice.jaxws.GetRelationsFromPersonResponse._return
at foobar.alkohol.register.webservice.jaxws.GetRelationsFromPersonResponse
戻り値の型を List から List<List<RelationCanonical>> に変更するまで、私のコードはうまく機能しました
部分的な Web サービスは次のとおりです。
@Name("relationService")
@Stateless
@WebService(name = "RelationService", serviceName = "RelationService")
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
public class RelationService implements RelationServiceLocal {
private boolean login(String username, String password) {
Identity.instance().setUsername(username);
Identity.instance().setPassword(password);
Identity.instance().login();
return Identity.instance().isLoggedIn();
}
private boolean logout() {
Identity.instance().logout();
return !Identity.instance().isLoggedIn();
}
@WebMethod
public List<List<RelationCanonical>> getRelationsFromPerson(@WebParam(name = "username")
String username, @WebParam(name = "password")
String password, @WebParam(name = "foedselsnummer")
String... foedselsnummer) {
......
......
......
}
@SOAPBinding を削除してデフォルトを試してみましたが、同じ結果が発生します。どんな助けにも感謝します
アップデート
特筆したいことがあります。すべての List を ArrayList に変更してから、コンパイルしました。コンパイル済みで動作しないと言う理由は、動作がおかしいからです。タイプ RelationServiceStub.ArrayList のオブジェクトを取得しますが、オブジェクトに取得メソッドがないか、リストとして動作しません。また、リストにキャストしようとしましたが、うまくいきませんでした。
これは、Axis 2 と wsdl2java を使用した後であることに注意してください。そうです、今はコンパイルできますが、データを取得する方法がわかりません。