1

如果我想在一个 Java EE 6 EJB 模块中部署两个具有相同服务名称(但目标名称空间不同)的 Web 服务,我会遇到问题。

这是我的设置:

我的 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/我的服务2.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