Web Service学习小结——基于JDK自带JAX-WS实现的web service

阅读更多
该文组成:
1. 概念解读
2. 例子

Web Service:是使应用程序可以 以 与平台和编程语言无关的方式进行相互通信的一项技术规范。Web服务是一个软件接口,它描述了一组可以在网络上通过标准化的XML消息传递访问的操作。它使用基于XML语言的协议来描述要执行的操作或者要与另一个Web服务交换的数据。

W3School :WSDL:WSDL is a document written in XML. The document describes a Web service. It specifies
the location of the service and the operations (or methods) the service exposes.

SOAP:(Simple Object Access Protocol)简单对象访问协议, 是在分散或分布式的环境中交换信息并执行远程过程调用的轻量级协议,是一个基于XML的协议
W3School :SOAP is a simple XML-based protocol to let applications exchange information over HTTP.

SOAP协议可以说是一种基于HTTP协议之上的一种协议。HTTP协议的请求数据或者响应数据都是文本格式的,而SOAP协议就是将我们应用程序的对象或者数据封装层XML格式的数据,然后作为HTTP的响应数据或者请求数据进行传送。然后通过WS-binding帮助我们在XML格式的数据与应用程序的对象之间进行转换。


以下是使用jdk自带的JAX-WS实现开发的web service

首先开发服务器端的程序:
1. 新建普通的java项目即可。
2. 创建如下结构的类:

Web Service学习小结——基于JDK自带JAX-WS实现的web service_第1张图片
先创建一个接口Speakable:
package com.piedra.ws;

import javax.jws.WebService;

@WebService
public interface Speakable {
	public String speak(String from , String to , String cont);
}

要注意,记得写上annotation @WebService。有了接口还需要有一个实现类Duck(会讲话的鸭子):
package com.piedra.ws.impl;

import javax.jws.WebService;

import com.piedra.ws.Speakable;

@WebService(endpointInterface="com.piedra.ws.Speakable")
public class Duck implements Speakable {

	@Override
	public String speak(String from, String to, String cont) {
		return from + " tell " + to + " " + cont ;
	}

}

接口和实现类都开发好了就要发布服务了,发布服务的代码如下:Starter.java
package com.piedra.ws.main;

import javax.xml.ws.Endpoint;

import com.piedra.ws.impl.Duck;

public class Starter {
	public static void main(String[] args) {
		String wsdlURL = "http://localhost:3737/ws";
		Endpoint.publish(wsdlURL, new Duck());
	}
}


发布服务之后我们就可以访问WSDL的定义了:
打开IE浏览器,我们在地址栏输入:http://localhost:3737/ws?wsdl  如下图:

Web Service学习小结——基于JDK自带JAX-WS实现的web service_第2张图片

好吧,为了开发一个正常一点的web service项目,我们需要在创建一个java Project。
创建好新的java项目后。我们发现如果要开发的客户端跟服务器端在不同的地方,那么,我们根本无法获得服务,比如我们要调用Duck的speak方法,那是不可能的事情啊,因为客户端和服务器端在不同的机器还可能使用不同的开发语言。
我们可能会想能不能通过上面发布的wsdl地址进行访问?
而wsdl仅仅只是描述用的,根本不用调用。
是的,我们可以让wsdl文件转为我们需要的类和接口。而这个转换过程可以借助wsimport(如果是axis2或者cxf框架可能会有其他的方式——还没看,不了解!)

Web Service学习小结——基于JDK自带JAX-WS实现的web service_第3张图片
这样子,在我们的G盘的ws目录下面就会生产我们需要的代码了
将整个包拷贝到我们新创建的客户端项目中,并创建我们需要的测试类

Web Service学习小结——基于JDK自带JAX-WS实现的web service_第4张图片
测试类的代码很简单:
package com.piedra.ws.client;

import com.piedra.ws.impl.DuckService;
import com.piedra.ws.impl.Speakable;

public class Test {
	public static void main(String[] args) {
		Speakable duck = new DuckService().getDuckPort();
		System.out.println(duck.speak("lin", "wu", "duck!~"));
	}
}

打印结果:lin tell wu duck!~

JAX-WS实现web service大概就是这样的形式,还有的开发方式是先写wsdl文件,然后再生成客户端和服务器端的代码。还有使用CXF,AXIS2开发web service。

继续学习中、、、、、、

谢谢阅读!!!



  • Web Service学习小结——基于JDK自带JAX-WS实现的web service_第5张图片
  • 大小: 6.7 KB
  • Web Service学习小结——基于JDK自带JAX-WS实现的web service_第6张图片
  • 大小: 12.8 KB
  • Web Service学习小结——基于JDK自带JAX-WS实现的web service_第7张图片
  • 大小: 103.6 KB
  • Web Service学习小结——基于JDK自带JAX-WS实现的web service_第8张图片
  • 大小: 11.7 KB
  • ws_1.rar (18.6 KB)
  • 下载次数: 16
  • 查看图片附件

你可能感兴趣的:(Web Service学习小结——基于JDK自带JAX-WS实现的web service)