WebSerivce是一种服务提供方式,通过WebService可以很方便的使用不同应用程序实现调用.许多平台对WebService都提供了实现。基于java实现WebService的比较流行的有CXF Axis JAX-WS,因为其实现原理都差不多,所以使用也大同小异。下面使用JAX-WS写的一个简单的WebService
首先声明接口:
package gd.hz.service;
import javax.jws.WebService;
@WebService //声明WebService接口
public interface IMyService {
public int num(int a, int b) ;
}
IMyService提供一个求和运算的方法,并且把计算的结果返回.
对其进行实现:
package gd.hz.service;
import javax.jws.WebService;
@WebService(endpointInterface="gd.hz.service.IMyService") //明白所实现的接入点
public class MyService implements IMyService {
@Override
public int num(int a, int b) {
int c = a + b ;
System.out.println("a+b=" + c);
return c;
}
}
num方法对参数a和了进行求和并返回结果,@WebService:声明WebService服务
接下来发布服务
package gd.hz.service;
import javax.xml.ws.Endpoint;
public class Service {
public static void main(String[] args) {
//提供服务的地址
String address = "http://localhost:5050/my" ;
//MyService提供服务的实体
Endpoint.publish(address, new MyService()) ;
}
}
最后实现所提供的服务:
package gd.hz.service;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
public class ServiceClient {
public static void main(String[] args) {
try {
//提供服务的WSDL
URL url = new URL("http://localhost:5050/my?wsdl") ;
//http://service.hz.gd/:服务的命名空间
//MyServiceService:服务名称
QName qName = new QName("http://service.hz.gd/", "MyServiceService") ;
Service service = Service.create(url, qName) ;
IMyService myService = service.getPort(IMyService.class) ;
System.out.println(myService.num(2, 5));
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
WebService在提供服务时会发布wsdl文档,通过对wsdl文档的解析可以得到我们调用所需要的信息.这个例子当我们运行ServiceClient 服务器端会计算机出结果并返回输出到来.
这个例子只是简单的介绍了WebService的一个流程,在下一个章节将详细介绍WebService如何动作的.
下面是该例子的源码:http://www.kuaipan.cn/file/id_129263676497613799.htm