2017-07-12 18 views
0

我有一个包含多个模式的WSDL,我试图让wsimport通过模式将代码生成到我选择的包中。使用-b选项和JAX-WS/JAX-B绑定文件我基本上做到了这一点。通过使用wsimport和JAX绑定的模式生成包忽略服务类

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

另一方面,使用-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> 
+0

“模式”是什么意思?服务接口及其实现是否独立于XML模式? – VGR

+0

该服务是,但使用的请求/响应对象分布在不同的模式。 – Stroboskop

回答

1

按照JAX-WS specification,第8.4.1节,你并不需要一个XPath为JAX-WS类,如服务和端口类指定包:

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