我有一个非常简单的(现有的)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>
为此,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 within this class.
*
* <pre>
* <complexType name="person">
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="firstName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* <element name="lastName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "person", propOrder = {
"firstName",
"lastName"
})
public class Person {
protected String firstName;
protected String lastName;
/**
* Gets the value of the firstName property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getFirstName() {
return firstName;
}
/**
* Sets the value of the firstName property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setFirstName(String value) {
this.firstName = value;
}
/**
* Gets the value of the lastName property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getLastName() {
return lastName;
}
/**
* Sets the value of the lastName property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setLastName(String value) {
this.lastName = value;
}
}
链接到WSDL(包括模式)
将此文件下载到硬盘上的某个地方。
我使用的wsimport
命令行如下所示:
mkdir D:\JavaDevHG\MavenWSClient\target\generated-sources\jaxws-wsimport
"C:\Program Files\Java\jdk1.8.0_05\bin\wsimport" -keep ^
-s D:\JavaDevHG\MavenWSClient\target\generated-sources\jaxws-wsimport ^
D:/JavaDevHG/MavenWSClient/src/main/wsdl/myWSDL.xml
"C:\Program Files\Java\jdk1.8.0_05\bin\javadoc" ^
-sourcepath D:\JavaDevHG\MavenWSClient\target\generated-sources\jaxws-wsimport ^
-subpackages org
Loading source files for package org.mytest.ws.mavenwsserver...
Constructing Javadoc information...
Standard Doclet version 1.8.0_05
Building tree for all the packages and classes...
Generating .\org\mytest\ws\mavenwsserver\HelloWorldWebService.html...
...
...
Generating .\org\mytest\ws\mavenwsserver\Person.html...
..\..\..\target\generated-sources\jaxws-wsimport\org\mytest\ws\mavenwsserver\Person.java:15: error: bad use of '>'
* <complexType name="person">
^
..\..\..\target\generated-sources\jaxws-wsimport\org\mytest\ws\mavenwsserver\Person.java:16: error: bad use of '>'
* <complexContent>
...
... ^
我只能证实你的发现。由于重现此代码所需的设置很少,没有任何漏洞,因此到目前为止唯一合理的结论是,这是OpenJDK8附带的wsimport
工具中的一个bug。这个工具只是没有更新来反映由同一JDK包的javadoc
工具施加的新限制。
http://jbossas.jboss.org/downloads 我发现一些文章提到Jboss AS 7不能与JDK8一起工作,但我的同事是PC是用JDK8启动的。我想应该有另一种方法来解决。 更新 经过尝试,我发现Jboss EAP7.0或Jboss AS 7.0.0 Final可以用JDK8执行,我将降级到我需要的版本。
对于Web服务来说相当陌生,已经做了一些研究,并使用JAX-WS RI(wsimport工具)为第三方WSDL生成了客户端存根。正在使用 JDK 8。使用生成的存根,编写 Web 服务客户端以调用 WSDL 操作。Maven Build是成功的,但在测试它时,得到了“java.lang.NoClassDefFoundError: javax/xml/ws/Service”。 这是Web服务客户端。
我需要在我的项目中使用一个web服务。我使用NetBeans所以我右键单击我的项目并尝试添加一个新的“Web服务客户端”。上次我检查时,这是创建web服务客户机的方法。但它导致一个AssertionError,它说: java.lang.AssertionError:org.xml.sax.SAXParseException;systemid:jar:file:/path/to/glassfish
3)使用REST客户端 将response_resclient.code 对于1和2,两者都是正确的。它们都返回状态201,登录成功,但使用3-REST_Client失败。状态为404 REST_Client: 对于Rest-client gem,它在向mysite.vn发送post请求后返回404错误,代码为443。我对这个案子没有理想。请你帮我解释一下这个案子好吗。如何用REST客户端纠正这个
我正在开发一个Spotify应用程序,我想获得令牌。 我做错了什么? 真的有办法使用JavaScript从静态HTML文件中使用Spotify API吗?
就像https://docs.wildfly.org/14/developerguide.html所说的那样,我使用下面的代码配置了WebService客户端的超时: 只要我的WebService客户机运行在使用JDK8的WildFly8上,这就工作得很好。自从我将它迁移到WildFly14/JDK11之后,这个解决方案就不再起作用了。我试了几个地图键,比如: 有人知道吗? 你好,罗伯特