一个简单的webService接口发布与实现

webService是什么

1、基于web的服务,服务器整出一些资源让客户端应用访问获取数据。
2、一个跨语言、跨平台的规范。
3、多个跨平台、跨语言应用间通信整合的方案。

什么时候使用webService?

1、同一家公司新旧应用之间的调用。
2、不同公司的应用之间调用。
3、一些提供数据的内容聚合应用:天气预报、股票行情。

webService中的几个重要术语

1、WSDL: (web service definition language)数据定义语言

  • 对应一种类型的文件**.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文件的路径
    — 借助生成的代码编写请求代码。
    **第四步:**在项目目录下执行以下命令:
    一个简单的webService接口发布与实现_第1张图片
    在项目中生成如下代码:
    一个简单的webService接口发布与实现_第2张图片
    第五步: 客户端请求调用
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);
}
}

你可能感兴趣的:(java)