- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试从一个 wsdl 文件中生成一个带有 maven 和 jaxb 的客户端,其中包含 2 个模式以及来自不同模式的一些同名元素
当我尝试执行编译时出现下一个错误:
Two declarations cause a collision in the ObjectFactory class.
WSDL 架构:
<wsdl:types>
<schema targetNamespace="http://ws.services" xmlns="http://www.w3.org/2001/XMLSchema">...</schema>
<schema targetNamespace="http://ws.models" xmlns="http://www.w3.org/2001/XMLSchema">...</schema>
</wsdl:types>
我尝试重命名产生错误的元素,但是然后我的 spring 客户端收到了正确的 SOAP 消息,但它没有正确填充响应对象(它的所有属性都是空的)。我猜问题可能来自重命名响应类,所以这就是为什么我试图生成不同的包以保留所有类的原始名称。
为了做到这一点,我编写了下一个绑定(bind)文件,但我不知道我做错了什么,它不起作用。
bindings.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings version="2.1"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema" >
<jaxb:bindings schemaLocation="mywsdl.wsdl#types?schema1"
node="/xs:schema[@targetNamespace='http://ws.services']">
<jaxb:schemaBindings>
<jaxb:package name="package1" />
</jaxb:schemaBindings>
</jaxb:bindings>
<jaxb:bindings schemaLocation="mywsdl.wsdl#types?schema2"
node="/xs:schema[@targetNamespace='http://ws.models']">
<jaxb:schemaBindings>
<jaxb:package name="package2" />
</jaxb:schemaBindings>
</jaxb:bindings>
</jaxb:bindings>
我在maven文件中的配置部分是下一个,以防万一它有用:
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
</execution>
</executions>
<configuration>
<wsdlLocation>wsdl/mywsdl.wsdl</wsdlLocation>
<wsdlDirectory>src/main/resources/wsdl</wsdlDirectory>
<wsdlFiles>
<wsdlFile>mywsdl.wsdl</wsdlFile>
</wsdlFiles>
<bindingDirectory>src/main/resources/wsdl</bindingDirectory>
<bindingFiles>
<bindingFile>bindings.xml</bindingFile>
</bindingFiles>
<packageName>original.package</packageName>
<sourceDestDir>${basedir}/src/main/java</sourceDestDir>
</configuration>
当我用这个绑定(bind)文件编译时,出现同样的错误。所以我认为这可能是不对的。
你有没有发现任何错误?
谢谢。
最佳答案
根据我的经验,最好创建 2 个绑定(bind)文件(每个 WSDL 文件一个)。相应地更新您的 pom.xml 并确保绑定(bind)文件的根元素是 jaxws:bindings(而不是 jaxb:bindings!)
一些提示:
“package1”的示例绑定(bind)文件:
<?xml version="1.0" encoding="UTF-8"?>
<jaxws:bindings xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
wsdlLocation="mywsdl.wsdl"
version="2.0">
<jaxws:package name="package1"/>
<jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle>
<jaxws:enableAsyncMapping>true</jaxws:enableAsyncMapping>
<jaxws:bindings node="//wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='http://ws.services']">
<jaxb:schemaBindings>
<jaxb:package name="package1"/>
</jaxb:schemaBindings>
</jaxws:bindings>
</jaxws:bindings>
关于java - 定制 Java 包 JAXB wsimport,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25932578/
我正在从命令行运行 wsimport 以从 WSDL 生成 java 类,如下所示。 wsimport -J-Djavax.xml.accessExternalDTD=all -J-
当我尝试使用 wsimport从命令提示符使用以下命令,它工作正常: wsimport -d generated C:\Users\generated\wsdlfile.xml 但是,当我尝试使用 w
我有一个简单的 ant 脚本来从 sdl 构建我的类。不幸的是 wsimport 立即失败。我怀疑这与类路径有关。 这是它产生的输出:
有几个这样的问题。但我的 PATH 变量是正确的 ;%JAVA_HOME%\bin; 我的JAVA_HOME是C:\Program Files\Java\jdk1.8.0_131 当我输入 java
这很奇怪。 我正在使用 maven 的 wsimport 插件生成肥皂服务的客户端代码,如下所示... org.jvnet.jax-ws-commons
对另一个“无法找到证书”问题表示歉意。 我正在 Windows 7 计算机上进行开发。我正在使用多个 Java 版本,因此明确了所使用的 java 版本(此处为 Java6)的路径。我通过以下两行实现
我正在使用 wsimport 从服务器导入 wsdl 文件。这是我正在使用的命令: X:>wsimport -keep -verbose http://xxxxxxxxxx parsing WSDL.
我使用 wsimport 从 WSDL 文件生成代理类。生成了 A 类,但是对应于 A 的构造函数参数的 B 类却没有。这可能是什么原因?谢谢。 这是 WSDL:
我正在生成一个具有 XSD 架构的对象 但是生成 Java 代码为 protected ProjectDataObj.RoleAssignments roleAss
网络服务新手问题: wsimport 为我的 wsdl-File 生成了两个类:MyException 和 MyException_Exception,但是 MyException 没有扩展异常。如何
我正在使用 wsimport 从 WSDL 文件(也已生成)生成我的 JAX-WS 客户端,但在客户端生成与服务器端不匹配的枚举时遇到问题。 我的 WSDL 文件中的适用片段显示了正确的条目:
我在尝试生成一些 Java 类时遇到问题。 C:\Users\kon\Desktop>wsimport -keep -verbose -extension -d generated http://XX
当我使用 wsimport 为某些服务生成代理时,每个端口的生成方法签名似乎没有使用 WSDL 中指定的复杂类型;但我注意到它在其他一些服务中也是如此。 这发生在多个服务上,但最近的例子是亚马逊的 A
我有一个使用相互 SSL 身份验证的 Web 服务。安装客户端证书后,我可以在浏览器中正常访问它。 我需要能够使用 wsimport 访问它以生成 Java 代码来访问该服务。 如何设置我的凭据以便我
我使用 wsimport 生成我的 java stub 文件。为此,我在 Eclipse 中使用了一个 ant 构建文件:
我正在尝试在 https://api.sendwordnow.com/webservices/v3/users.svc?wsdl 上使用 wsimport .这是我正在使用的 wsimport。 ws
首先,我想让您知道我已经可以连接到 Web 服务服务器。我问这个问题是因为我想更深入地了解 wsimport 生成的客户端是如何工作的。根据我的研究,wsimport 使用 JAXWS。请注意,我不了
我正在尝试使用 wsimport 生成文件,但出现上述错误。我已经完成了以下步骤: 1) JAVA_HOME - 设置为 C:\Program Files\Java\jre72) c:\Desktop
我正在尝试从远程 wsdl 导入数据。我用maven编写了简单的代码如下 org.codehaus.mojo jaxws-maven-plugin
我在使用基于 wsimport 生成的类的客户端代码时收到以下 Web 服务异常: javax.xml.ws.WebServiceException: @Action and @WebMethod(a
我是一名优秀的程序员,十分优秀!