WebService
WebService即Web服务。它采用标准的SOAP协议传输,采用WSDL作为描述语言的跨编程语言和跨操作系统的远程调用技术,主要可以进行资源共享。
WebService三要素
WebService三要素为SOAP、WSDL、UDDI。SOAP用来描述传递信息的格式; WSDL用来描述如何访问具体的接口,可以理解为WebService的使用说明书;UDDI目录服务,用来管理,分发,查询WebService 。
SOAP协议
WebService中比较重要的是SOAP协议。SOAP协议即是简单对象访问协议,是交换数据的一种协议规范,是一种轻量的、简单的、基于XML的协议。它是通过HTTP来交换信息,简单理解为SOAP=HTTP+XML。
SOAP协议消息结构
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Header>
</soap:Header>
<soap:Body>
<soap:Fault>
</soap:Fault>
</soap:Body>
</soap:Envelope>
复制代码
WebService的基本使用
1、编写天气查询接口
public interface WeatherService {
public String queryWeather(String cityName);
}
复制代码
2、实现天气查询接口
import javax.jws.WebService;
@WebService
public class WeatherServiceImpl implements WeatherService {
//天气预报查询
@Override
public String queryWeather(String cityName) {
System.out.println("获取到城市名为:"+cityName);
String result = "晴";
return result;
}
}
复制代码
3、发布服务
import javax.xml.ws.Endpoint;
public class Server {
public static void main(String[] args) {
//发布天气查询服务
Endpoint.publish("http://127.0.0.1:22222/weather",
new WeatherServiceImpl());
System.out.println("发布WebService服务");
}
}
复制代码
4、生成客户端调用代码
//可以根据wsdl文档生成客户端调用代码的工具
//在命令行中输入以下命令即可生成
wsimport -s . http://127.0.0.1:22222/weather?wsdl
/*
* wsimport
* -d<目录> 将生成.class文件
* -s<目录> 将生成.java文件
* -p<生成的新包名> 将生成的类,放于指定的包下。
*/
//生成以下Java文件
/*
ObjectFactory.java
package-info.java
QueryWeather.java
QueryWeatherResponse.java
WeatherServiceImpl.java
WeatherServiceImplService.java
*/
复制代码
5、编写客户端调用
import com.plf.webservice.WeatherServiceImpl;
import com.plf.webservice.WeatherServiceImplService;
public class Client {
public static void main(String[] args) {
//创建服务视图
WeatherServiceImplService weatherInterfaceImplService =
new WeatherServiceImplService();
//通过服务视图得到服务端点
WeatherServiceImpl weatherInterfaceImpl =
weatherInterfaceImplService.getWeatherServiceImplPort();
//调用webservice
String result = weatherInterfaceImpl.queryWeather("绍兴");
System.out.println("从服务器获取数据:"+result);
}
}
复制代码
6、结果
发布WebService服务
获取到城市名为:绍兴
从服务器获取数据:晴
复制代码