WebServices学习笔记(一)用POJO实现0配置的WebService
2015-11-17 14:01
344 查看
转自:http://m.blog.csdn.net/blog/jiqiujia/37061809#
一、用POJO实现0配置的WebService
首先从http://axis.apache.org/axis2/java/core/download.cgi下载最新版的axis2——axis2-1.6.2-bin.zip和axis2-1.6.2-war.zip
前者包含了Axis2的所有jar文件,后者则是用于将WebServices发布到Web容器中
将axis2-1.6.2-war.zip目录中的axis2.war文件放到<Tomcat安装目录>\webapps目录中(我使用的Tomcat的版本是7.x),并启动Tomcat。
在浏览器中输入http://localhost:8080/axis2/,看到以下页面表明安装成功
接下来可以开始编写一个简单的例子,需要注意的是这个POJO类不能包含在任何package中
其中所有的public方法都将被发布成WebService方法
编写完成以后编译成.class文件(javac SimpleService.java),将.class文件放在<Tomcat安装目录>\webapps\axis2\WEB-INF\pojo目录中,一般pojo目录需要自己创建。
之后在浏览器中输入以下url:
http://localhost:8080/axis2/services/listServices
这个页面将显示当前所有在Axis2上发布的WebServices,如下图所示:
可以看到SimpleService里面有两个可以调用的方法:getNum和getGreeting
点击SimpleService可以看到生成的WSDL(Web Services Description Language)文件,直接url是:http://localhost:8080/axis2/services/SimpleService?wsdl
对webservice方法的调用都需要参考这个生成的WSDL
我们先来看一下WSDL中对于getGreeting方法的描述
注意到其中的name="args0",AXIS2默认生成的wsdl文件中所有的方法参数是args0,args1...等等
要使wsdl文件中的方法参数显示为webservice接口中的实际的参数名称,需要对webservice接口中的方法参数用@WebPara(name="参数名称")进行注解,即
在浏览器地址栏中输入如下的两个URL来分别测试getGreeting和getPrice方法:
http://localhost:8080/axis2/services/SimpleService/getGreeting?name=jiqiujia(如果没有使用注解,就要用args0=***)
http://localhost:8080/axis2/services/SimpleService/getNum
可以得到如下图结果
Axis2在默认情况下可以热发布WebService,也就是说,将WebService的.class文件复制到pojo目录中时,Tomcat不需要重新启动就可以自动发布WebService。如果想取消Axis2的热发布功能,可以打开<Tomcat安装目录>\webapps\axis2\WEB-INF\conf\axis2.xml,找到如下的配置代码:
要注意的是,Axis2在默认情况下虽然是热发布,但并不是热更新,也就是说,一旦成功发布了WebService,再想更新该WebService,就必须重启Tomcat。这对于开发人员调试WebService非常不方便,因此,在开发WebService时,可以将Axis2设为热更新。在axis2.xml文件中找到
将false改为true即可。
此外,发布WebService的目录也可以在axis2.xml中修改,找到
把directory属性改成你想要的目录即可
一、用POJO实现0配置的WebService
首先从http://axis.apache.org/axis2/java/core/download.cgi下载最新版的axis2——axis2-1.6.2-bin.zip和axis2-1.6.2-war.zip
前者包含了Axis2的所有jar文件,后者则是用于将WebServices发布到Web容器中
将axis2-1.6.2-war.zip目录中的axis2.war文件放到<Tomcat安装目录>\webapps目录中(我使用的Tomcat的版本是7.x),并启动Tomcat。
在浏览器中输入http://localhost:8080/axis2/,看到以下页面表明安装成功
接下来可以开始编写一个简单的例子,需要注意的是这个POJO类不能包含在任何package中
import java.util.Random; public class SimpleService { public String getGreeting(String name){ return "Hello " + name; } public int getNum(){ return new Random().nextInt(1000); } }
其中所有的public方法都将被发布成WebService方法
编写完成以后编译成.class文件(javac SimpleService.java),将.class文件放在<Tomcat安装目录>\webapps\axis2\WEB-INF\pojo目录中,一般pojo目录需要自己创建。
之后在浏览器中输入以下url:
http://localhost:8080/axis2/services/listServices
这个页面将显示当前所有在Axis2上发布的WebServices,如下图所示:
可以看到SimpleService里面有两个可以调用的方法:getNum和getGreeting
点击SimpleService可以看到生成的WSDL(Web Services Description Language)文件,直接url是:http://localhost:8080/axis2/services/SimpleService?wsdl
对webservice方法的调用都需要参考这个生成的WSDL
我们先来看一下WSDL中对于getGreeting方法的描述
<xs:element name="getGreeting"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="args0" nillable="true" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
注意到其中的name="args0",AXIS2默认生成的wsdl文件中所有的方法参数是args0,args1...等等
要使wsdl文件中的方法参数显示为webservice接口中的实际的参数名称,需要对webservice接口中的方法参数用@WebPara(name="参数名称")进行注解,即
public String getGreeting(@WebParam(name="name")String name){ return "Hello " + name; }这样子生成的WSDL中就是name="name"了
在浏览器地址栏中输入如下的两个URL来分别测试getGreeting和getPrice方法:
http://localhost:8080/axis2/services/SimpleService/getGreeting?name=jiqiujia(如果没有使用注解,就要用args0=***)
http://localhost:8080/axis2/services/SimpleService/getNum
可以得到如下图结果
Axis2在默认情况下可以热发布WebService,也就是说,将WebService的.class文件复制到pojo目录中时,Tomcat不需要重新启动就可以自动发布WebService。如果想取消Axis2的热发布功能,可以打开<Tomcat安装目录>\webapps\axis2\WEB-INF\conf\axis2.xml,找到如下的配置代码:
<parameter name="hotdeployment">true</parameter>然后把true改成false即可(当然,不建议修改)
要注意的是,Axis2在默认情况下虽然是热发布,但并不是热更新,也就是说,一旦成功发布了WebService,再想更新该WebService,就必须重启Tomcat。这对于开发人员调试WebService非常不方便,因此,在开发WebService时,可以将Axis2设为热更新。在axis2.xml文件中找到
<parameter name="hotupdate">false</parameter>
将false改为true即可。
此外,发布WebService的目录也可以在axis2.xml中修改,找到
<deployer extension=".class" directory="pojo" class="org.apache.axis2.deployment.POJODeployer"/>
把directory属性改成你想要的目录即可
相关文章推荐
- ListView设置headerview和footerview
- sgdisk常用操作
- 很有用的网站--陆续更新
- 折线图(三)绘制x轴单位值,以及标识物
- ASPxGridView自定义分页,点击标题排序
- 如何计算一个算法的时间复杂度
- Android string.xml如何输入空格、换行等符号——转义字符
- WindowManager.addView添加浮框
- xcode 小技巧1
- ios 通知Notification和代理delete的区别
- C# 用Attribute实现AOP事务
- try ... catch ...
- python py、pyc、pyo、pyd文件区别
- SQL Cursor 基本用法[用两次FETCH NEXT FROM INTO语句?]
- 复习在ROS机器人系统中打开摄像头,显示图像
- C++Template
- 怎样实现MindMapper中边框的插入
- vs2005 以ADO方式连接mysql
- WIN7 64位系统 VS2012 安装openssl
- 尝试编写的rabbitmq+spring 框架