CXF 2.7.5 を使用して Web サービスを呼び出しています。wsdl2java プログラム (コマンド ライン MSDOS および Maven) を使用してクライアント クラスを生成しました。jaxb (デフォルトのデータバインディング) ではエラーが発生し、サーバー側を変更できないため、xmlbeans データバインディングを使用する必要があります。したがって、xmlbeans databinding パラメータを使用すると、生成は問題ありません。
次のメソッドで Web メソッドを呼び出します。
WcfDemandService service = new WcfDemandService();
IWcfDemandService client = service.getBasicHttpBindingIWcfDemandService();
TODemand ticketToSubmit = TODemand.Factory.newInstance();
...
boolean ret = client.submit(ticketToSubmit);
webmethods を呼び出すと、単純な Java プログラムでは完全に動作しますが、ポートレットの liferay コンテキストでは動作しません: このエラーがあります (英語では、翻訳は org.tempuri.CheckConsistencyDocumen はインターフェイスであり、jaxb はインターフェイスを処理できません) ) :
09:48:33,899 エラー [http-bio-8080-exec-4][PortletServlet:115] javax.portlet.PortletException: com.sun.xml.ws.spi.db.DatabindingException: com.sun.xml.bind。 v2.runtime.IllegalAnnotationsException: 149 カウントの IllegalAnnotationExceptions org.tempuri.CheckConsistencyDocument est une interface et JAXB ne peut pas gérer les interfaces. この問題は次の場所に関連しています。この問題は、次の場所に関連しています。.TODemand est une インターフェイスと JAXB ne peut pas gérer les インターフェイス。この問題は、org.datacontract.schemas.x2004.x07 の場所に関連しています。.TODemand at public abstract org.datacontract.schemas.x2004.x07. * .TODemand org.tempuri.CheckConsistencyDocument$CheckConsistencyDocument$CheckConsistency.getEntity() at org.tempuri.CheckConsistencyDocument$CheckConsistency at public abstract org.tempuri.CheckConsistencyDocument$CheckConsistency org.tempuri.CheckConsistencyDocument.getCheckConsistency() at org.tempuri.CheckConsistencyDocument
このエラーは、多くのインターフェイスで繰り返されます。
このコードが liferay コンテキストで機能しない理由を知っていますか?