JAX-WS 学习一:基于java的最简单的WebService服务
在本文中,我们将探讨如何使用JAX-WS创建一个基于Java的WebService服务,这是一种基于标准协议SOAP(Simple Object Access Protocol)和WSDL(Web Services Description Language)的Web应用程序,用于在不同应用程序之间提供互操作性。
准备工作
在开始创建我们的第一个Web Service之前,我们需要进行以下准备工作:
- JDK 1.7 或更高版本
- Eclipse IDE for Java EE Developers
- Apache Tomcat 7 或更高版本
创建一个简单的Web服务
接下来,我们将通过以下步骤创建一个简单的Web服务:
- 在Eclipse中创建一个新的动态Web项目。
- 在src目录下创建一个新的Java类。
- 在该类中编写以下代码:
package com.webservice;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public class MyWebService {
@WebMethod
public String sayHello(String name) {
return "Hello, " + name + "!";
}
}
在上面的代码中,我们创建了一个名为MyWebService
的类,并使用了@WebService
注释来指定该类是一个Web服务。接着我们定义了一个名为sayHello
的公共方法,并使用了@WebMethod
注释来指定该方法为Web服务的操作。sayHello
方法将接收一个字符串
类型的参数name
,并返回一个字符串类型的问候语。
- 在项目的WebContent目录下,创建一个新的Web Services描述文件(WSDL文件),文件名为
myWebService.wsdl
,内容如下。
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://webservice.com/"
targetNamespace="http://webservice.com/"
name="MyWebService">
<message name="SayHelloRequest">
<part name="name" type="xsd:string"/>
</message>
<message name="SayHelloResponse">
<part name="return" type="xsd:string"/>
</message>
<portType name="MyWebServicePortType">
<operation name="sayHello">
<input message="tns:SayHelloRequest"/>
<output message="tns:SayHelloResponse"/>
</operation>
</portType>
<binding name="MyWebServiceBinding" type="tns:MyWebServicePortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="sayHello">
<soap:operation soapAction=""/>
<input>
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:MyWebService"/>
</input>
<output>
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:MyWebService"/>
</output>
</operation>
</binding>
<service name="MyWebService">
<port name="MyWebServicePort" binding="tns:MyWebServiceBinding">
<soap:address location="http://localhost:8080/MyWebService"/>
</port>
</service>
</definitions>
在上面的代码中,我们定义了WSDL文件中的以下项:message、portType、binding和service。这些元素都描述了我们上面创建的sayHello方法。 具体而言,message元素定义输入和输出参数的类型。portType元素定义操作的类型、名称和中间消息,主要是为了方便绑定(portType binding)。binding元素定义如何对操作进行编码和选择协议。service元素定义有关服务的名称、端口和地址的信息,以及使用哪个绑定。
- 将MyWebService类发布到Tomcat服务器,可以通过Eclipse的WTP插件中的
Run on Server
选项来发布Web服务。发布完成后,我们就可以从浏览器中访问我们的WebService服务了。在浏览器中输入http://localhost:8080/MyWebService?wsdl
,将会看到刚刚创建的WSDL描述文件内容。
测试Web服务
最后,我们测试一下我们的示例Web服务。在浏览器或其他SOAP客户端中,输入以下内容:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice.com/">
<soapenv:Header/>
<soapenv:Body>
<web:sayHello>
<name>Wang Huan</name>
</web:sayHello>
</soapenv:Body>
</soapenv:Envelope>
因为我们的示例中使用了“encoded”风格,所以它将产生以下SOAP消息响应:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns1:sayHelloResponse xmlns:ns1="http://webservice.com/">
<return>Hello, Wang Huan!</return>
</ns1:sayHelloResponse>
</soap:Body>
</soap:Envelope>
通过上面的步骤,我们成功创建了一个基于Java的最简单的WebService服务。
总结
在本文中,我们使用JAX-WS和Eclipse IDE对Web服务进行了快速而简单的开发和部署。希望这篇文章能够帮助大家入门Web服务开发的世界,更多关于JAX-WS的知识,推荐查看官方文档。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JAX-WS 学习一:基于java的最简单的WebService服务 - Python技术站