1

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) に分割すると、展開は問題なく実行されます。

4

0 に答える 0