バックグラウンド :
以前に Apache CXF Web サービスを使用した経験がありますが、Apache CXF ディストリビューションに付属する wsdl2java ツールを使用してサービス エンドポイント インターフェイス (SEI) とサービス実装を生成するのは初めてです。
タスク :
私は現在、外部システムによって消費される SOAP ベースの Web サービスの実装に取り組んでいます。メッセージ (XSD) と WSDL ファイルは既に定義済みです。Apache CXF の wsdl2java ツールを使用して SEI を生成しようとしました。SEI は、入力パラメーターとして JAXB 型を使用して正しく生成され、型が Web サービス メソッドに返されます。
サービス実装クラス用に生成されたコードを見ると、javax.xml.ws.Service クラスを拡張していることがわかります。また、メソッド名に「Soap12Http」が追加されたサービス エンドポイント インターフェイスのメソッドと同じ名前を持つ、オーバーロードされたメソッドが多数生成されます。これらのメソッドのいくつかは、タイプ WebServiceFeature... features のパラメーターを受け取りますが、他のメソッドはパラメーターを受け取りません。例 :
public class Query extends Service {
@WebEndpoint(name = "product_query-soap12-http")
public IQuery getProductsSoap12Http(WebServiceFeature... features) {
return super.getPort(getProductsSoap12Http, IQuery.class,features);
}
}
*ここで、IQuery はサービス エンドポイント インターフェイスです
問題 :
- javax.xml.ws.Service を拡張する代わりに、サービス実装クラスがサービス エンドポイント インターフェイスを実装することを期待していました。これは有効な期待ですか?
- サービス実装クラスがサービス エンドポイント インターフェイスからメソッドを実装することを期待していました。これは有効な期待ですか?
- また、クラス ファイルとして生成する代わりに、wsdl2java コマンドで JAXB POJOS 用の jar を生成するように要求できるかどうかも知りたいです。