0

一段时间以来,我试图找到解决以下问题的方法。我有一个包含几个 (6) xsd 导入的 wsdl 文件。我无法更改这些 xsd,因为它们在我的项目之外。总共有 4 个定义,这些定义在其中 2 个模式中略有不同。我试图将每个“冲突”的 xsd 模式转换为它自己的包。我尝试了以下绑定,但它没有完成这项工作:

testbindings.jaxb:

<bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.1">
    <bindings schemaLocation="a.xsd">
         <schemaBindings>
               <package name="org.wsi.a" />
         </schemaBindings>
    </bindings>
</bindings>

使用:wsimport -p org.wsi -b testbindings.jaxb broker.wsdl

所有类都在 中生成org.wsi,没有类在org.wsi.a. 如果没有 -p 开关,所有 xsd 都会在它们自己的默认包中生成。但不能告诉 wsimport 为每个 xsd 使用特定的包。此时我使用以下绑定文件,这可能是不正确的,但 wsimport 不会抱怨:

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

<jaxws:bindings wsdlLocation="broker.wsdl" node="wsdl:definitions/wsdl:types/xsd:schema">

    <jaxb:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema" node="//xs:schema/xs:import[@namespace='http://docs.oasis-open.org/wsn/b-2']">>
        <jaxb:schemaBindings>
            <jaxb:package name="org.broker.wsi.b_2"/>
        </jaxb:schemaBindings>
    </jaxb:bindings>

    <jaxb:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema" node="//xs:schema/xs:import[@namespace='http://docs.oasis-open.org/wsn/t-1']">>
        <jaxb:schemaBindings>
            <jaxb:package name="org.broker.wsi.t_1"/>
        </jaxb:schemaBindings>
    </jaxb:bindings>

</jaxws:bindings>

在包 org.broker.wsi.b_2 和 org.broker.wsi.t_1 中,不会生成任何文件。

我使用了以下指定的绑定: http: //docs.oracle.com/cd/E13222_01/wls/docs103/webserv/data_types.html#wp227713 但可能不正确。

欢迎提出建议。

4

1 回答 1

0

问题/答案中描述了为 wsdl、内部 xsd 和外部 xsd 设置正确包名称的问题:

int-bindings.xml 文件:

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

<jaxws:package name="org.broker.wsi" />

<jaxb:bindings node="//xsd:schema">
    <jaxb:schemaBindings>
        <jaxb:package name="org.broker.wsi.al"/>
    </jaxb:schemaBindings>
</jaxb:bindings>

外部绑定文件(缩写):

<jaxb:bindings version="1.0"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">

    <jaxb:bindings schemaLocation="http://docs.oasis-open.org/wsn/b-2.xsd" node="//xsd:schema">
            <jaxb:schemaBindings>
                 <jaxb:package name="org.broker.wsi.oasis.b2"/>
            </jaxb:schemaBindings>
    </jaxb:bindings>
</jaxb:bindings>
于 2012-10-04T13:37:25.417 回答