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