EmbeddedJettyアプリケーションにJAX-WSWebサービスを追加しようとしています。Webサービスクライアントは.NETアプリケーションになります。
私のプロジェクトは、Netbeans7.1.1でMavenアプリケーションとして作成されました。Spring3.0を使用しています。
JAX-WSをアプリケーションに追加するには、次の手順を実行しました。
pom.xmlにjaxws-springを追加しました。
<dependency> <groupId>org.jvnet.jax-ws-commons.spring</groupId> <artifactId>jaxws-spring</artifactId> <version>1.8</version> <exclusions> <exclusion> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </exclusion> </exclusions> </dependency>
私のSpringWebサービスのコンテキストで、WSSpringServletを構成します。
webservicesContext.addServlet(new ServletHolder(new WSSpringServlet()), "/service/*");
私のサービスの実装クラスを作成しました。
@WebService(name = "GenerateUEIDService") public class GenerateUEIDService { @WebMethod(operationName = "generateUniqueIds") public String generateUniqueIds() { return "Hello World"; } }
SpringapplicationContext.xmlファイルでサービスを構成します。
<bean id="generateUEIDService" class="com.mycompany.GenerateUEIDService"/> <wss:binding url="/service/GenerateUEID.svc"> <wss:service> <ws:service bean="#generateUEIDService" /> </wss:service> </wss:binding>
上記の手順3では、NetbeansでWebサービス作成ウィザードを使用しませんでした。代わりに、GenerateUEIDServiceを通常のJavaクラスとして作成しましたが、アノテーションを追加しました。Netbeansは、プロジェクトビューに「GenerateUEIDServiceService」が下にある「Webサービス」ノードを作成したため、これがWebサービスであることをどういうわけか検出しませんでした。GenerateUEIDServiceServiceを展開すると、「generateUniqueIds:String」が表示されます。
うまく構築されているようです。しかし、アプリケーションを実行すると、次のようになります。
com.sun.xml.ws.model.RuntimeModelerException:ランタイムモデラーエラー:ラッパークラスcom.mycompany.jaxws.GenerateUniqueIdsが見つかりません。それらを生成するためにAPTを実行しましたか?
いいえ、何も生成するためにAPTを実行していません。私の構成を考えると、どのようにそれを行う必要がありますか?pom.xmlにプラグインを追加する必要がありますか?それとも、Netbeansが魔法のようにラッパーを生成することになっていたのでしょうか。
私のWebサービスクライアントは.NETになることに注意してください。したがって、ドキュメント/リテラルラップのデフォルトのSOAPBindingを使用する必要があると思います。