Maven 2 CXF:如何使用JAXB外部绑定文件更改WSDL导入的XML模式的包?
我有一个WSDL文件,它导入了几个XML模式,每个模式都有相同的名称空间(我们称之为XML模式)。我正在尝试使用JAXB外部绑定文件来更改这些模式的生成包名(比方说B)。以下是一个例子: 我有一个POM文件,其中包含从WSDL生成代码的配置(使用cxf codegen插件) 我的WSDL:Maven 2 CXF:如何使用JAXB外部绑定文件更改WSDL导入的XML模式的包?,maven-2,jaxb,wsdl2java,Maven 2,Jaxb,Wsdl2java,我有一个WSDL文件,它导入了几个XML模式,每个模式都有相同的名称空间(我们称之为XML模式)。我正在尝试使用JAXB外部绑定文件来更改这些模式的生成包名(比方说B)。以下是一个例子: 我有一个POM文件,其中包含从WSDL生成代码的配置(使用cxf codegen插件) 我的WSDL: <definitions ...> <types> <xsd:schema elementFormDefault="qualified" targetN
<definitions ...>
<types>
<xsd:schema elementFormDefault="qualified" targetNamespace="C">
<xsd:import namespace="A" schemaLocation="SCHEMA_REF"/>
<xsd:import namespace="A" schemaLocation="SCHEMA_REF"/>
...
</xsd:schema>
</types>
...
</definitions>
...
...
这是我的实际绑定文件,它根本不起作用,似乎根本没有应用它(没有错误消息…)
.
由于我在生成过程中没有任何错误消息,可能是因为用于访问导入模式的XPath表达式不好
你们有什么线索吗?
我被困在这里了
提前感谢您的投入 有趣的是,你没有答案:)不幸的是,你不可能存档你想要的东西。唯一的方法是为您拥有的每个架构文件定义单独的绑定文件,这样可以很好地工作。通过直接引用其命名空间,尝试编写绑定,就像架构导入合并到WSDL文档中一样:
<jaxws:bindings wsdlLocation="WSDL_LOCATION"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
jaxb:version="2.0">
<jaxws:bindings
node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='A']">
<jaxb:schemaBindings>
<jaxb:package name="B" />
</jaxb:schemaBindings>
</jaxws:bindings>
</jaxws:bindings>
这对我有用。演示了如何使用导入的架构,真是太好了。谢谢您的回答,我现在不在讨论这个主题,所以无法测试这个解决方案。我会尽快的!还有一点——您必须为XSD文件使用纯“jaxb”名称空间,“jaxws”不能与它们一起工作。
<jaxws:bindings wsdlLocation="WSDL_LOCATION"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
jaxb:version="2.0">
<jaxws:bindings
node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='A']">
<jaxb:schemaBindings>
<jaxb:package name="B" />
</jaxb:schemaBindings>
</jaxws:bindings>
</jaxws:bindings>