webService是什么
1、基于web的服务,服务器整出一些资源让客户端应用访问获取数据。
2、一个跨语言、跨平台的规范。
3、多个跨平台、跨语言应用间通信整合的方案。
什么时候使用webService?
1、同一家公司新旧应用之间的调用。
2、不同公司的应用之间调用。
3、一些提供数据的内容聚合应用:天气预报、股票行情。
webService中的几个重要术语
1、WSDL: (web service definition language)web服务描述语言
- 对应一种类型的文件**.wsdl**
- 定义了web service 的服务器端与客户端应用交互传递请求和响应数据的格式和方式。
- 一个web service 对应一个唯一的wsdl文档
2、SOAP:(simple object access protocol)简单对象访问协议
- 是一种简单的、基于HTTP 和 XML 的协议,用于在WEB 上交换结构化的数据。
- soap消息: 请求消息和响应消息。
- http + xml 片段。
3、SEI:( WebService EndPoint Interface)webservice终端接口
- webService 服务器端用来处理请求的接口
4、CXF : Celtix + XFire
- 一个apache的用于开发webService 服务器端和客户端的框架。
开发webservice
开发时使用JDK1.6及以上版本进行开发,工作过程中使用CXF进行开发。webservice开发由服务器端和客户端组成。
使用JDK开发webservice
一、开发服务器端
- web service 编码:
— 注解:@WebService( SEI 和 SEI 的实现类)
—注解: @WebMethod(SEI中的所有方法) - 发布web service:
— Endpoint(终端,发布webservice)
**第一步:**创建一个接口,在接口上添加@WebService注解,方法上添加@WebMethod注解.这两个注解是JDK中的包
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public interface WsHello {
@WebMethod
public String sayHello(String name);
}
`
**第二步:**实现接口,在实现类上添加@WebService注解
import javax.jws.WebService;
@WebService
public class WsHelloImpl implements WsHello {
public String sayHello(String name) {
System.out.println(" server sayHello()" + name);
return "hello world" + name;
}
}
**第三步:**发布webservice
import javax.xml.ws.Endpoint;
import ws.WsHelloImpl;
public class ServerTest {
public static void main(String[] args) {
String address = "http://192.168.1.103/ws-test/hello";
Endpoint.publish(address, new WsHelloImpl());
System.out.println("发布成功");
}
}
二、开发客户端
- 使用Eclipse提供的web service 浏览器访问
— 查看对应的wsdl文档: …?wsdl(一般浏览器)
—请求webService并查看请求和响应消息(通过eclipse中的webService浏览器) - 创建客户端应用编码方式访问
— 借助JDK的bin中的wsimport.exe 工具生成客户端代码:
命令:wsimport -keep url
//url 为wsdl文件的路径
— 借助生成的代码编写请求代码。
**第四步:**在项目目录下执行以下命令:
在项目中生成如下代码:
第五步: 客户端请求调用
import ws.WsHelloImpl;
import ws.WsHelloImplService;
public class ClientTest {
public static void main(String[] args) {
WsHelloImplService factory = new WsHelloImplService();
WsHelloImpl hello = factory.getWsHelloImplPort();
String result = hello.sayHello("Jack");
System.out.println("client:" + result);
}
}