使用Axis2实现WebService的发布和调用
一、Axis2的下载和安装
1.可从http://ws.apache.org/axis2/ 下载Axis2的最新版本:
可以下载如下三个zip包:
axis2-1.7.3-bin.zip(用来将编写的服务代码打包成aar文件)
axis2-1.7.3-war.zip(用于将WebService发布到Web容器中)
axis2-eclipse-service-plugin-1.7.3.zip(Eclipse插件)
axis2-eclipse-codegen-plugin-1.7.3.zip(Eclipse插件)
前两个是eclipse的插件包,解压放到eclipse安装目录的dropins即可
重启eclipse可以看到
axis2-1.7.1-war.zip文件用于将WebService发布到Web容器中。解压下后将axis2.war放至tomcat安装目录下的webapps文件夹下,然后启动tomcat后,在webapps目录下会生成axis2文件夹。 访问http://localhost:8080/axis2/能看到以下页面表示axis2运行成功。
2 在Eclipse下新建Dtnamic Web Project,工程名:WebServiceServer(服务端)。新建包cn.test.webservice(包名小写,以免生成的java文件报错,后面的axis2自动生成的java文件包名都是小写,大写的包名生成java文件的包名都会变小写),在cn.test.webservice下新建IWebService
2:使用Axis2 代码生成器,完成WebService程序开发 (服务器端)根据接口生成 wsdl文件 (WebService 核心描述文件 )
选择项目,new other,选择axis2 的代码生成器,如图:
先用service接口生成wsdl文件,所以选择“从java代码生成wsdl文件”,点击【下一步】
填写类的名称,点击AddFolder 选择工作空间,项目下的bulid—>classes的目录,点击【测试类路径】显示成功!点击【下一步】
选择默认配置即可:
选择wsdl的输出路径,可以先放置到桌面
3:基于wsdl生成服务器代码。
选择项目,new other,选择axis2 的代码生成器,如图:
先用service接口生成wsdl文件,所以选择“从wsdl文件生成java代码”,点击【下一步】
选择wsdl文件的位置:如图:
选择代码选项为custom(自定义),并选择生成服务端代码和生成一个默认的services.xml文件,点击【下一步】。
选择输出路径,为项目的根路径,点击【结束】,刷新项目,即生成服务端代码。
服务端代码如图:
导入响应的jar包
把tomcat安装目录下的webapps/axis2/WEB-INF下的modules、service和conf文件拷至WebService下的WEB-INF目录下。同时把lib下jar包也拷到项目的lib包下(测试方便全部拷贝,实际开发有jar包冲突)。
拷贝webapps/axis2/WEB-INF/web.xml的servlet内容,放置到项目WebService的web.xml下 web.xml去掉出错的部分
- <servlet>
- <servlet-name>AxisServlet</servlet-name>
- <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
- <!--<init-param>-->
- <!--<param-name>axis2.xml.path</param-name>-->
- <!--<param-value>/WEB-INF/conf/axis2.xml</param-value>-->
- <!--<param-name>axis2.xml.url</param-name>-->
- <!--<param-value>http://localhost/myrepo/axis2.xml</param-value>-->
- <!--<param-name>axis2.repository.path</param-name>-->
- <!--<param-value>/WEB-INF</param-value>-->
- <!--<param-name>axis2.repository.url</param-name>-->
- <!--<param-value>http://localhost/myrepo</param-
- <!--</init-param>-->
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet>
- <servlet-name>AxisAdminServlet</servlet-name>
- <servlet-class>
- org.apache.axis2.webapp.AxisAdminServlet</servlet-class>
- </servlet>
- <!-- servlet>
- <servlet-name>SOAPMonitorService</servlet-name>
- <display-name>SOAPMonitorService</display-name>
- <servlet-class>org.apache.axis2.soapmonitor.servlet.SOAPMonitorService</servlet-class>
- <init-param>
- <param-name>SOAPMonitorPort</param-name>
- <param-value>5001</param-value>
- </init-param>
- <init-param>
- <param-name>SOAPMonitorHostName</param-name>
- <param-value>localhost</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet -->
- <servlet-mapping>
- <servlet-name>AxisServlet</servlet-name>
- <url-pattern>/servlet/AxisServlet</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>AxisServlet</servlet-name>
- <url-pattern>*.jws</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>AxisServlet</servlet-name>
- <url-pattern>/services/*</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>AxisAdminServlet</servlet-name>
- <url-pattern>/axis2-admin/*</url-pattern>
- </servlet-mapping>
将tomcat生成的axis2文件夹中的axis2-web文件放置到项目的WebContent的文件夹下。
4:服务端代码分析:
(1)ExtensionMapper:将实体类数据映射为XML文件
(2)GetScoreById:接口方法getScoreById的参数对象
(3) GetScoreByIdResponse:接口方法getScoreById的返回值对象
(4)IWebServiceMessageReceiverInOut 这个类,负责远程数据发送和接收
(5)IWebServiceSkeleton:服务器接口实现类,负责实现IWebService的接口IWebServiceSkeleton类,所有可以在该类上定义发布的方法,代码如下
5:WEB-INF/services下新建 test(可以是任何文件夹都可以)/META-INF路径,将生成的resources下的2个文件拷贝到 test/META-INF的文件夹下。例如:
5:启动tomcat后访问:
http://localhost:8080/WebService/services/IWebService.wsdl能看到服务信息了。 到此Axis2的WebService服务已成功发布。
其中IWebService是IWebService.wsdl中定义的<service name="IWebService">service的名称
注意:看懂webservice的使用说明书,记住要从下向上看。
Axis2客户端调用:
下面看看利用axis2客户端调用实例
第一步:客户端程序需要的jar包(为了测试方便全部拷贝axis2 lib下jar包也拷到项目的lib包下)
第二步:生成客户端代码
选择axis2的代码生成器,点击【下一步】
选择从wsdl文件生成java代码
选择桌面的services.wsdl文件
选择默认default,即生成客户端代码
选择客户端的程序目录,点击【完成】
选择项目,刷新,会生成客户端代码
jar包
客户端没有Skeleton类 (业务接口实现) ,多了 IWebSystemDDLServiceStub 客户端测试类
客户端程序,使用 IWebServiceStub.java来编写
在客户端的测试程序中使用:代码如下
- </pre><pre name="code" class="html">package Test;
- import java.rmi.RemoteException;
- import cn.test.domain.xsd.Score;
- import cn.test.webservice.GetScoreById;
- import cn.test.webservice.GetScoreByIdResponse;
- import cn.test.webservice.IWebServiceStub;
- public class Test {
- public static void main(String[] args) throws RemoteException {
- /***调用网络服务axis调用webservice**/
- IWebServiceStub iWebServiceStub = new IWebServiceStub("http://192.168.1.104:8080/WebService/services/IWebService");
- //传递参数
- GetScoreById getScoreById = new GetScoreById();
- getScoreById.setArgs0(1);
- ////传递参数返回结果
- GetScoreByIdResponse getScoreByIdResponse = iWebServiceStub.getScoreById(getScoreById);
- Score[] get_return = getScoreByIdResponse.get_return();
- for (int i = 0; i < get_return.length; i++) {
- System.out.println("id:" +get_return[i].getId()+" score:"+get_return[i].getScore());
- }
- }
- }
代码下载:http://download.csdn.net/detail/u014695188/9460217
使用Axis2实现WebService的发布和调用的更多相关文章
- axis2 WebService的发布与调用
1:准备: JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk6downloads-1902814.html e ...
- Axis2 webservice入门--Webservice的发布与调用
一.Webservice发布 参考 http://www.cnblogs.com/demingblog/p/3263576.html 二.webservice 调用 部分参考:http://www.c ...
- WebService 的发布和调用
WebService 四种发布方式总结 :https://blog.csdn.net/zl834205311/article/details/51612207 调用webService的几种方式 ht ...
- 使用axis2进行webservice发布与调用
一.介绍下cxf.axis.axis2区别 新一代的Web Services 框架如Axis2.CXF 都是由现有的项目中逐渐演化而来的,Axis2 是由大家熟悉的Axis 1.x 系列演化过来,而A ...
- Axis2创建WebService服务端接口+SoupUI以及Client端demo测试调用
第一步:引入axis2相关jar包,如果是pom项目,直接在pom文件中引入依赖就好 <dependency> <groupId>org.apache.axis2</gr ...
- CXF发布webService服务以及客户端调用
这篇随笔内容是CXF发布webService服务以及客户端调用的方法 CXF是什么? 开发工作之前需要下载CXF和安装 下载地址:http://cxf.apache.org 安装过程: <1&g ...
- WebService的发布及客户端的调用
一.目录 1.JAX-WS发布WebService 1.1 创建一个简单的WS 1.2 打包部署和发布 2.CXF+Spring发布WebService 3.客户端的调用方式 二.正文 1. JAX- ...
- python发布及调用基于SOAP的webservice
现如今面向服务(SOA)的架构设计已经成为主流,把公用的服务打包成一个个webservice供各方调用是一种非常常用的做法,而应用最广泛的则是基于SOAP协议和wsdl的webservice.本文讲解 ...
- C# WebService创建、发布、调用的简单例子
Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布式的互操作的应用程序. Web ...
随机推荐
- PBR实现
我们的目标:UnityStandard 我一直作Unity开发,所以环境也就选择了Unity.目标也就是尽可能接近UnityStandard的效果,不过主要为了学习PBR,所以就只实现基本的PBR和法 ...
- (PHP)程序中如何判断当前用户终端是手机等移动终端
推荐: Mobile-Detect:https://github.com/serbanghita/Mobile-Detect/blob/master/Mobile_Detect.php Detect ...
- Java内存区域
1.运行时数据区域 java虚拟机在执行java程序的过程中会将它管理的内存区域分为若干个不同的数据区域.这些区域有各自的服务对象,创建以及销毁时间,有的内存区域随着虚拟机的启动和关闭而创建和销毁,有 ...
- SOAP(简单对象访问协议)
ylbtech-Miscellaneos:SOAP(简单对象访问协议) A,返回顶部 1, 简单对象访问协议是交换数据的一种协议规范,是一种轻量的.简单的.基于XML(标准通用标记语言下的一个子集)的 ...
- Scala的几个小tips
1. Main方法只能写在object而不是class里 2. Unit test只能针对class或者trait,不能给object做,解决方法,把object里面要测的方法拿出来放到trait里, ...
- 实体写到redis写不进去--误把类当成实体类
之前一直都把实体写入redis都没有问题,今天再次这样干,结果却是怎么写都写不进去,redis里的值老是为空 最后才发现把类当成了实体类,当然写不进去了. 把类: /// <summary> ...
- web页面设计基本原则
1.对齐. 不对齐看起来糟糕极了.简直一片混乱,会给人一种很不专业的印象.对齐让页面更漂亮一些,更重要的是便于更好的传达信息. 2.去掉糟糕的边框.边框会产生一种分离感. 3.亲密性. 元素相互靠近看 ...
- python 核心编程课后练习(chapter 2)
2-4 #2-4(a) print "enter a string" inputstring = raw_input() print"the string is: &qu ...
- SQL Server 2008数据库日志收缩
GO ALTER DATABASE MCS SET RECOVERY SIMPLE--设置简单恢复模式 GO DBCC SHRINKFILE (MCS_Log, 1) GO ALTER DATABAS ...
- 开发android App干坏事(二)-wifi控制
本来今天打算换个话题的,鉴于昨天android篇反响还不错,最近也是在做这方面的东西,今天聊聊一个新的android的发现-wifi的控制(好吧,其实也不能说是坏事,只是觉得wifi安全还是要引起警示 ...