由于项目对接的问题,这周都在和webService打交道,写篇文章总结一下这周的任务吧!!
一、webService的应用场景
1、可重复使用的应用程序组件
对于一些重复性比较高的功能,没必要各自开发,可以大家都用最棒的一个版本。比如说天气预报,没必要为了获取天气而研究卫星、发射卫星、获取数据。。。这种功能完全可以大家都用同一个。
2、连接现有的软件
现有两套系统,他们各自实现了自己的功能,但是需要互通数据。
二、webService是什么
了解了应用场景,那么webService就很好理解了:WebService是一种跨编程语言和跨操作系统平台的远程调用技术。他是基于HTTP协议,应用XML作为传输介质的平台。
三、webService平台的元素
- soap(简易对象访问协议)用于应用程序见得通讯,是一种基于XML用于消息发送的格式
- wsdl(web service描述语言)基于 XML 的用于描述 Web Services 以及如何访问 Web Services 的语言
- uddi(通用表述、发现及整合)是一种目录服务,通过它,企业可注册并搜索 Web services。
四、webService接口形式
服务端提供webService接口的wsdl文件,客户端通过服务端提供的地址,根据wsdl文件里的定义,调用接口。这样说起来好像比较模糊,下面我给出一个自己demo。
五、webService实例Demo
1、创建服务端
创建一个项目,我选的是dynamic web project,命名为WSServiceDemo。
在src下建一个package,命名为demo。并在包内建一个类,命名为serviceDemo,类里的方法叫service。
package demo;
public class serviceDemo {
public String service(String name){
return"Hello,"+name;
}
}
接着我们需要通过Eclipse来帮我们创建一个wsdl文件。右键刚才写好的serviceDemo类,new一个web service,一路next就好了
在浏览器内打开地址http://localhost:8080/WSServiceDemo/services,这时候应该会看见下图,说明已经构建成功了。
项目结构中,可以发现,webContent下多了一个wsdl文件夹,下面还有一个serviceDemo.wsdl。
这时候在浏览器点开serviceDemo,就可以看家serviceDemo.wsdl文件了。
2、创建客户端
创建一个项目,我选的还是dynamic web project,命名为WSClientDemo。在src下建一个package,命名为demo。
右键新建的package,new一个web service client,在Browse里选择刚才服务端里的serviceDemo.wsdl文件,一路next。
再看项目结构,发现在demo文件夹下多了一些类。
接下来写一个客户端测试类。在demo下新建一个类,命名为clientDemo。
package demo;
import java.net.MalformedURLException;
import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Service;
import org.apache.axis.client.Call;
public class clientDemo {
public static void main(String[] args) throws ServiceException, MalformedURLException, RemoteException {
//这个地址就是浏览器内的请求地址
String endpoint ="http://localhost:8080/WSServiceDemo/services/serviceDemo?wsdl";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL (endpoint));
//服务端调用方法名
call.setOperationName("service");
String res=(String)call.invoke(new Object[]{"client"});
System.out.print(res);
}
}
3、运行启动
先启动服务端,确定可以访问http://localhost:8080/WSServiceDemo/services/serviceDemo?wsdl。然后右键运行客户端的clientDemo类。
这时候可以看见控制台输出service say:Hello,client
这样整个webService的demo就完成了。
4、补充
如果是别人直接提供了wsdl文件,可以先将wsdl文件放到项目内,然后运用Eclipse直接反向生成服务端,步奏和创建服务端类似,区别是在选择web service type的时候应该选“top down java bean web service”,然后在browse选项目内别人提供的wsdl文件。
完成以后也会生成6个文件,其中有一个impl文件是实现类,可以在里面写功能。不过我的做法是在里面写获取客户端请求信息并输出,方便调试查看数据。
ps:大神如果发现表达错误,还望多多指正!!