JAX WS wsdl生成 - 如何更改服务名称

时间:2013-11-04 16:38:19

标签: web-services soap wsdl jax-ws jboss7.x

服务器:JBoss 7.1 Java:7(JAX-WS版本:2.2.4-b01)

练习1:

@Name("CustomerServices")
@Stateless
@WebService
public class CustomerServices{ ... }

练习2:

@Name("CustomerServices")
@Stateless
@WebService(servicename="CustomerServices")
public class CustomerServices { ... }

当JBOSS通过JAX-WS生成wsdl文件时,wsdl看起来像:

练习1:

<wsdl:definitions>
...
    <wsdl:service name="CustomerServicesService">
        <wsdl:port binding="tns:CustomerServicesServiceSoapBinding"> 
            <soap:address location="<host>:<port>/<ejb-context>/CustomerServices"/>
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>

练习2:

<wsdl:definitions>
...
    <wsdl:service name="CustomerServices">
        <wsdl:port binding="tns:CustomerServicesServiceSoapBinding"> 
            <soap:address location="<host>:<port>/<ejb-context>/CustomerServicesService/CustomerServicesService"/>
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>

所以我的问题是,如何获得此输出?

<wsdl:definitions>
...
  <wsdl:service name="CustomerServices">
    <wsdl:port binding="tns:CustomerServicesServiceSoapBinding"> 
    <soap:address location="<host>:<port>/<ejb-context>/CustomerServices"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>

服务名称必须为 CustomerServices ,而不是CustomerServicesService,且地址位置必须为 ../ CustomerServices

感谢。

1 个答案:

答案 0 :(得分:2)

尝试:

@WebContext(contextRoot = "<ejb-context>", urlPattern = "/CustomerServices")

您还可以使用以下命令将portType设置为其他内容(即:<wsdl:portType name="MyCustomerServices">这将是生成客户端时端口接口的名称):

@WebService(name = "MyCustomerServices", serviceName = "CustomerServices")