WebService基本入门(基于jdk自带的jax-ws)
开发环境:
WIN7 eclipse jdk1.7
正文
人总是比较懒惰...大概一年前,我就有听说过webservice这个东西,并且有机会接触学习,然而当时并没有认真地对待,直到最近,由于公司项目中需要对接原有系统的一些接口(webservice实现),便使我步入了开始了学习webservice之路....好了,废话不扯那么多了,开始吧!
1、什么是webservice?
个人理解:一种提供接口,供客户端远程调用,服务端处理完后返回相应的数据;通过SOAP协议传输,统一了传输规则,使得异构系统之间能够通过此服务来进行通信。
2、简单实现
服务端
创建一个普通的java项目作为webservice的服务端
项目命名为:webservice_jax-ws
我们创建以下几个类(其中MyService.java为接口,MyServiceImpl.java为此接口的实现类)
首先,我们编写我们的MyService接口,分别定义了一个加法和一个减法的方法,具体代码如下:
1 package com.piglethao; 2 3 import javax.jws.WebService; 4 5 @WebService //注意导入的是javax.jws包下面的 6 public interface MyService { 7 int add(int a, int b); 8 int minus(int a,int b); 9 }
下一步,我们需要实现这些方法(在MyServiceImpl的实现类里实现),具体代码如下:
1 package com.piglethao; 2 3 import javax.jws.WebService; 4 5 @WebService(endpointInterface="com.piglethao.MyService") //此处的endpointInterface需要指定我们公布接口的全类名 6 public class MyServiceImpl implements MyService{ 7 @Override 8 public int add(int a, int b) { 9 System.out.println("" + a + " + " + b + " = " + (a + b)); 10 System.out.println(a + " + " + b + " = " + (a + b)); 11 return a + b; 12 } 13 14 @Override 15 public int minus(int a, int b) { 16 System.out.println(a + " - " + b + " = " + (a - b)); 17 return a - b; 18 } 19 20 }
接下来的一步,我们就开始写启动webservice的代码了,具体代码如下:
1 package com.piglethao; 2 3 import javax.xml.ws.Endpoint; 4 5 public class MyServer { 6 public static void main(String[] args) { 7 String address = "http://localhost:8888/ns"; //这里我们使用了本地的地址以及8888端口 后面的/ns 可以不加,个人喜好 8 Endpoint.publish(address, new MyServiceImpl());//这里我们绑定我们的webservice对应的服务地址以及对应服务端对客户端进行处理的类 9 System.out.println("webservice started"); 10 } 11 }
接下来就可以启动webservice服务端了,开启成功可以在eclipse控制台中看到以下字样:
服务端开启成功后,我们可以访问刚才我们在代码中写好的http://localhost:8888/ns 再加上 ?wsdl 这个地址来访问服务端对外公布的wsdl...
客户端
我们使用JDK自带的wsimport这个程序根据上述的wsdl的发布地址来生成我们的客户端的框架代码:
wsimport
WIN+R --> cmd --> Enter 开启命令行 --> C:\Users\wyrhero>wsimport -d E:\webservice -keep -verbose http://localhost:8888/ns?wsdl
其中-d后面需要添加的是生成客户端框架代码的路径
好了,回到我们的eclipse IDE,我们创建一个普通的java project,命名为: webservice_jax-ws_client 然后将上一步骤生成的代码,拷贝到src目录下
我们编写一个客户端,看能否调用到webservice服务端相应的接口(记得,服务端处于启动状态),创建一个MyClient2的客户端,进行如下的编码:
1 package com.piglethao.client; 2 3 import com.piglethao.MyService; 4 import com.piglethao.MyServiceImplService; 5 6 public class MyClient2 { 7 public static void main(String[] args) { 8 MyServiceImplService msis = new MyServiceImplService(); //这个是对应服务端的实现类吧,这里的作用我就只知道可以用来生成对应的MyService接口... 9 MyService ms = msis.getMyServiceImplPort(); //生成MyService接口,通过此接口可以远程调用我们webservice服务端的方法 10 System.out.println("1 + 2 = " + ms.add(1, 2)); 11 System.out.println("2222 - 2 = " + ms.minus(2222, 2)); 12 13 } 14 }
执行结果:
好了,简单的webservice入门就先到这里了,感谢您的阅读。
服务端代码:http://pan.baidu.com/s/1mgTf8yW
客户端代码:http://pan.baidu.com/s/1SJZLc