使用wsimport和JAX绑定按模式生成包会忽略服务类

时间:2017-07-12 15:32:31

标签: java wsdl jax-ws

我有一个包含多个模式的WSDL,并且我试图让wsimport通过模式生成我选择的包中的代码。将-b选项与JAX-WS / JAX-B绑定文件一起使用,我基本上就这样做了。

默认路径中仍然只生成两个类:服务接口和服务实现。

另一方面,使用-p选项将所有类生成到一个包中,但是当我使用时,将忽略外部文件中定义的所有绑定。

该服务的XPath是什么,以便wsimport将这些文件生成到我的包中? 我试过像

这样的东西
<jaxws:bindings node="wsdl:definitions/wsdl:service"> ...
<jaxws:bindings node="wsdl:definitions/wsdl:binding"> ...
<jaxws:bindings node="wsdl:definitions/wsdl:portType"> ...

但都没有任何影响。

示例:

<jaxws:bindings
    xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    wsdlLocation="myService.wsdl"
>

    <!-- this works for schemas -->
    <jaxws:bindings node="wsdl:definitions/wsdl:types/xsd:schema[@targetNamespace='http://org.com/service/1.0']" >
        <jaxb:schemaBindings>
            <jaxb:package name="com.myorg.service.v1" />
        </jaxb:schemaBindings>
    </jaxws:bindings>

    <!-- the following does nothing -->
    <jaxws:bindings node="wsdl:definitions/wsdl:service">
        <jaxb:schemaBindings>
            <jaxb:package name="com.myorg.service.v1" />
        </jaxb:schemaBindings>
    </jaxws:bindings>

</jaxws:bindings>

1 个答案:

答案 0 :(得分:1)

根据JAX-WS specification,第8.4.1节,您不需要XPath来为JAX-WS类指定包,例如服务和端口类:

<jaxws:bindings wsdlLocation="http://example.org/foo.wsdl">
  <jaxws:package name="com.acme.foo"/>