1 つの Java EE 6 EJB モジュールに同じ serviceName (ただし異なる targetNamespace) を持つ 2 つの Web サービスをデプロイしたい場合、問題が発生します。
ここで私のセットアップ:
my-webservice-ejb.jar
src/main/java/
-- de.xx. MyService1 .java
@Stateless(name=" MyServiceEJB1 ")
@WebService(targetNamespace="http:// de.xx ", serviceName=" MyService ", portName="MyServicePort", wsdlLocation="META-INF/wsdl/ MyService1. wsdl ")
-- de.xx. MyService2 .java
@Stateless(name=" MyServiceEJB2 ")
@WebService(targetNamespace="http:// de.xx.v2 ", serviceName=" MyService ", portName="MyServicePort", wsdlLocation="META-INF/wsdl/ MyService2.wsdl ")src/main/resources/META-INF/wsdl/
-- MyService1.wsdl ( targetNamespace http://de.xxでMyServiceを定義) -- MyService2.wsdl ( targetNamespace http://de.xx.v2でMyServiceを定義)
Glassfish は、デプロイによって次のエラーで実行されます。
エンドポイントを初期化できません: エラー:
javax.xml.ws.WebServiceException: WSDL ファイル/my-webservice-ejb.jar/META-INF/wsdl/MyService1.wsdl には次のサービスがあります [{http://de.xx}MyService ] ですが、{http://de.xx.v2}MyService ではありません。
@WebService/@WebServiceProvider で serviceName や targetNamespace を指定するのを忘れたのではないでしょうか?
両方のサービス EJB (同じコードと注釈) を異なる ejb.jar (my-webservice1-ejb.jar と my-webservice2-ejb.jar) に分割すると、展開は問題なく実行されます。