我正在尝试为以下amazon wsdl生成工件:http:
//webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl
使用以下ant任务:
<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport">
<classpath>
<pathelement location="${BUILD_LIBS}/jaxws-ri/lib/jaxws-tools.jar"/>
</classpath>
</taskdef>
<target name="wsimport" depends="init">
<delete dir="${generated.src}" />
<mkdir dir="${generated.src}"/>
<wsimport
debug="true"
keep="true"
verbose="true"
destdir="${generated.src}"
package="com.amazon.webservices.ecs"
wsdl="wsdl/AWSECommerceService.wsdl"/>
</target>
Run Code Online (Sandbox Code Playgroud)
但是没有为以下元素生成java工件,如下所示:
<xs:element name="Condition">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="All"/>
<xs:enumeration value="New"/>
<xs:enumeration value="Used"/>
<xs:enumeration value="Collectible"/>
<xs:enumeration value="Refurbished"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
即使生成了所有其他元素,基本上也不会生成枚举.以前有人见过这个问题吗?我正在使用jax-ws ri 2.2.1 http://jax-ws.java.net/2.2.1/
谢谢
通过简化的XSD获取以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="com.acme" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Widget">
<xs:complexType>
<xs:sequence>
<xs:element
minOccurs="0" name="color" nillable="true" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="WidgetColor" type="xs:string" />
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
然后,尝试以下操作:
xjc test.xsd
Run Code Online (Sandbox Code Playgroud)
您应该总是得到以下异常:
parsing a schema...
compiling a schema...
[ERROR] Two declarations cause a collision in the ObjectFactory class.
line 11 of file:/C:/test.xsd
[ERROR] (Related to above error) This is the other declaration.
line 7 of file:/C:/test.xsd
Failed to produce code.
Run Code Online (Sandbox Code Playgroud)
请注意,元素名称" Widget "是complexType,并且具有名为" color "的元素.在元素" Widget " 的同一级别,还有一个名为" WidgetColor " 的简单元素.
什么是更令人费解的是,如果你删除 …
在我的工作中使用jaxws-maven-plugin进行代码生成.我有两个项目是"普通"和"客户".结构大致如下:
app/
common/
resource/
some.xsd
client/
resource/
some.wsdl
Run Code Online (Sandbox Code Playgroud)
如何使用项目"common"中的xsd在项目"client"中从wsdl生成类?
pom.xml中:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<verbose>true</verbose>
<bindingFiles>
<bindingFile>${project.parent.basedir}/common/resource/some.xsd</bindingFile>
</bindingFiles>
<wsdlFiles>
<wsdlFile>/resource/some.wsdl</wsdlFile>
</wsdlFiles>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud) 我是网络服务的新手.
我必须为Web服务编写rest Web服务客户端.Web服务在SoapUI上运行正常.URL的WSDL文件提供给我.但是当我在Eclipse项目中添加wsdl文件时,它会产生编译错误
src-resolve.4.2: Error resolving component 'xs:schema'. It was detected that 'xs:schema' is in namespace 'http://www.w3.org/2001/XMLSchema', but components from this namespace are not referenceable from schema document 'file:///E:/Ashish%20Workspace/HATStoLSAMS%20Webservice/HATS2LSAMSWS/WebContent/WEB-INF/wsdl/CorpsiteService.svc.wsdl'. If this is the incorrect namespace, perhaps the prefix of 'xs:schema' needs to be changed. If this is the correct namespace, then an appropriate 'import' tag should be added to 'file:///E:/Ashish%20Workspace/HATStoLSAMS%20Webservice/HATS2LSAMSWS/WebContent/WEB-INF/wsdl/CorpsiteService.svc.wsdl'.
Run Code Online (Sandbox Code Playgroud)
我搜索了很多东西以摆脱这些错误,但没有任何效果.如果我忽略错误并尝试使用wsimport和wsdl2java命令创建存根,则会出错
[ERROR] undefined element declaration 'xs:schema'
line 1 of http://chec.local/STAR.WCF/CorpsiteService.svc?singlewsdl
Run Code Online (Sandbox Code Playgroud)
我使用下面的命令来生成存根
wsimport -d e:\test -s E:\wssrc http://chec.local/STAR.WCF/CorpsiteService.svc?singlewsdl -wsdllocation "../../../../../WEB-INF/wsdl/CorpsiteService.svc.wsdl"
Run Code Online (Sandbox Code Playgroud)
我在这一点上陷入困境,并且整天都在努力.任何有关这方面的帮助都会非常有帮助
我是网络服务的新手.我正在尝试使用此命令生成存根:
wsimport -d ./build -s ./src -p com.ECS.client.jax http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl -b jaxws-custom.xml
Run Code Online (Sandbox Code Playgroud)
我在cmd中收到此错误:
wsimport无法识别
我的Java环境变量系统路径是C:\Program Files (x86)\Java\jdk1.7.0.我究竟做错了什么?
我使用netbeans中的wsimport而不是cmd来解决这个问题...但我仍然不知道为什么我不能从cmd中使用它.
我一直在尝试编写一个Web服务(JAX-WS),并且我已经完成了从2006年到2013年的一些教程.其中大多数是关于某些IDE的.那些谈论手动创建/部署Web服务的人都使用ant脚本.到这里一切都很好.
在我检查ant脚本的那一刻,混乱就开始了.一些旧的教程使用APT任务来编译SEI,然后wsgen用于生成工件.较新的只使用wsgen(尽管APT在ant脚本中被定义为taskdef).此外,正如我一直在阅读有关JAVA 7文档的内容,它表示您不需要使用wsgen,因为javac本身会执行所有编译和工件请求.for WS是在运行时动态生成的.
我尝试在SEI上使用javac命令并将其部署在tomcat上,但它没有用.
任何人都可以澄清我需要在JAVA SE 7版本中使用哪些命令来部署Web服务.
另外,我想知道每个命令生成什么以及何时使用哪些命令.
根据我的知识,开发和部署不需要wsimport,但只需要构建WS-client.它是否正确?如果没有,请提供指示,以明确我的理解.
提前致谢
此外,如果我重复我的自我,那么对不起,因为我是StackOverflow的新手并且对此不太熟悉.:)
我有一个非常简单(现有)的Web服务,我想生成一个反对使用JDK8的Web服务客户端.
我正在使用纯JDK8工具链,这意味着我使用了JDK8目录中的wsimport工具.
现在来看问题:JDK8中wsimport工具生成的Java源代码不符合JDK8 Javadoc.您可能知道Javadoc工具在JDK8中变得更加严格.
请考虑以下简单架构:
<xs:schema version="1.0" targetNamespace="http://mavenwsserver.ws.mytest.org/">
<xs:element name="operation" type="tns:operation"/>
<xs:element name="operationResponse" type="tns:operationResponse"/>
<xs:complexType name="operation">
<xs:sequence>
<xs:element name="person" type="tns:person" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="person">
<xs:sequence>
<xs:element name="firstName" type="xs:string" minOccurs="0"/>
<xs:element name="lastName" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="operationResponse">
<xs:sequence>
<xs:element name="return" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
为此,wsimport工具将生成Java代码,如下所示:
package org.mytest.ws.mavenwsclient;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java class for person complex type.
*
* <p>The following schema fragment specifies the expected content contained …Run Code Online (Sandbox Code Playgroud) 我正在使用wsimport为JAX-WS webservice调用生成客户端存根
wsimport有-p选项,允许自定义包的名称.
例如.如果WSDL具有com.abc的命名空间,则可以通过wsimport使用-p com.pqr命令行调用com.abq来替换com.abc .
但是,只有在wsdl中只使用一个命名空间时,这才能正常工作.
如果wsdl中有多个名称空间,是否有办法用不同的包名替换每个名称空间.
例如.如果我希望命名空间com.abc.s1被命名空间com.pqr.s1和命名空间com.abc.s2替换为命名空间com.pqr.s2.
如果我使用wsimport -p com.pqr.s1,它会将所有生成的类放入com.pqr.s1
有没有办法实现我想要的?
我有多个(假设是2,A和B)webservices,我需要生成一个客户端来使用它们.在Netbeans中,我使用向导"new Web Service Client"传递两个wsdl,查看输出Netbeans只需为每个wsmport调用wsimport.
wsimport http:/mydomain/wsA.svc?wsdl
wsimport http:/mydomain/wsB.svc?wsdl
Run Code Online (Sandbox Code Playgroud)
A和B都生成一个相同的包com.mydomain.myapp(我猜它们是在同一个命名空间中定义的),所以我得到了在同一个包中合并的A和B的存根类集.
但是,wsimport还为每个Web服务创建一个ObjectFactory,因此如果我在AI获取与B定义相关的ObjectFactory之后生成B的存根(因为第一个,A被覆盖).相反,如果我切换订单,A的ObjectFactory仍然存在.
问题是我需要两个ObjectFactories才能为Web服务A和B的类型创建JAXBElements包装clas实例.
有没有办法在Java包中映射A的名称空间,在另一个中映射B以获取
com.mydomain.myapp.a
com.mydomain.myapp.b
Run Code Online (Sandbox Code Playgroud)
所以保留两个ObjectFactories?
简单的重构没有帮助,因为在内部调用了getClass(),一旦一个包被重构,它就不再起作用了.
我正在从多个wsdl文件生成java类.作品.但是,我想在@WebServiceClient注释中提供适当的wsdl文件.在wsdlLocation属性中,我希望目录路径与不同的文件名连接在一起.例如/myDir/myWsdl-1.wsdl用于第一个Web服务.但是,wsdlLocation仅填充"/ myDir" - 没有服务名称.如何为每个wsdl提供该名称?
@WebServiceClient(name = "myService", targetNamespace = "http://mycompany.com/services/", wsdlLocation = "/myDir")
Run Code Online (Sandbox Code Playgroud)
以下是我的指示:
<wsdlLocation>/myDir</wsdlLocation>
<wsdlDirectory>src/main/resources/myDir</wsdlDirectory>
<wsdlFiles>
<wsdlFile>myWsdl-1.wsdl</wsdlFile>
<wsdlFile>myWsdl-2.wsdl</wsdlFile>
<wsdlFile>myWsdl-3.wsdl</wsdlFile>
<wsdlFile>myWsdl-4.wsdl</wsdlFile>
</wsdlFiles>
Run Code Online (Sandbox Code Playgroud)
是什么让我失去了注意力?
谢谢你的任何提示.费德.