开发工具:eclipse
webservice工具:axis2
中间件:tomcat
准备工作:
(1)将下载到的axis2中的axis2.war文件复制到tomcat的webapps目录下,启动tomcat后访问http://localhost:8080/axis2,若能正常访问则表示成功。
(2)安装eclipse的axis2插件。将axis2的插件放在eclipse的plugin目录下
1、新建一个web工程,名为WebserviceDemo,在src下面新建一个包,名为com.service,在包中新建一个类,命名为HelloService,
package com.service;
public class HelloService {
public void sayHello(String name){
System.out.println("Hello,"+name+",It's really not easy to see you");
}
}
sayHello将是我们要发布的方法
2、发布webservice
(1)在eclipse中选择File-->New-->Other-->Axis2 Service Archiver,点next,出现下图:
这里是选择.class的目录,默认都是在build\classes下面。在下面有个步骤会出问题,原因可能就是在这里没选对地方,等下会说到。
(2)选择之后点击next,选择skip wsdl后next,再next,勾选Generate.....,应该是自动创建server.xml文件的意思,next,出现下图:
这里如果Class name没有自动填写,我们则手动输入,然后点击load,如果没出现目标类中的方法,则有可能是(1)中的路径没有选对,可修改成如下路径:
在项目上右键-->Properties-->Build path,选择Source,将Class File Location改成如下路径:
方法出来后,点击next,选择文件的输出路径,点击finish,然后会生成一个.aar的文件,将该文件复制到tomcat目录下的webapps/axis2/WEB-INF/services,启动tomcat,访问http://localhost:8080/axis2/services/HelloService?wsdl,若能成功访问,则代表HelloService中的sayHello()发布成功!
下面引用一段对web service的解释
Web Services是建立在通用协议的基础之上,如HTTP、SOAP、UDDI、WSDL等,这些协议在操作系统、编程语言和对象模型的选择上没有任何倾向,因此有着很强的生命力。
Web Services的优势在于提供了不同应用程序平台之间的互操作,它使得基于组件的开发和Web相结合的效果达到最佳。它是基于HTTP协议的,调用请求和回应消息都可以穿过防火墙,不需要更改防火墙的设置,这样就避免了使用特殊端口进行通信时无法穿越防火墙的问题。
简单的理解:通常我们所说的WebService都是远程的某个服务器对外公开了某种服务,或者理解为对外公开了某个功能或者方法,而我们可以通过编程来调用该服务以获得我们需要的信息。例如:www.webxml.com.cn对外公开了手机号码归属地查询服务,我们只需要在调用该服务时传入一个手机号段(号码),就能立即获取该号段的归属地信息。
更通俗的理解:通过使用WebService,我们能够像调用本地方法一样去调用远程服务器上的方法。我们并不需要关心远程的那个方法是Java写的,还是PHP或C#写的;我们并不需要关心远程的方法是基于Unix平台,还是Windows平台,也就是说WebService与平台和语言无关。
SOAP(Simple Object Access Protocol,简单对象访问协议)是一种轻量级的、简单的、基于XML的协议,被设计用于在分布式环境中交换格式化和固化信息的简单协议。也就是说,要进行通信,进行数据访问传输,就必须依赖于一定的协议,而SOAP正是WebService通信中所依赖的一种协议。目前经常使用的SOAP协议有两个版本:SOAP 1.1 和 SOAP 1.2。
WSDL(Web Services Description Language,即Web服务描述语言)是一种用来描述Web服务的XML语言,它描述了Web服务的功能、接口、参数、返回值等,便于用户绑定和调用服务。它以一种和具体语言无关的方式定义了给定Web服务调用和应答的相关操作和消息。
WSDL是我们能够实实在在看到的东西,它是一份xml文档,用于描述某个WebSerivce的方方面面。例如,上面曾提到www.webxml.com.cn网站提供了手机号码归属地查询的WebSerivce,我们怎么来使用这个WebSerivce呢?它是基于哪个版本的SOAP协议?调用它需要传入什么参数?它会返回什么值?是一个字符串还是xml文档?这一系列的问题都能在WSDL中找到答案。
参考资料:
http://blog.sina.com.cn/s/blog_a0e7e34c0101959p.html
http://blog.youkuaiyun.com/lyq8479/article/details/6420398