axis2 WebService的发布与调用
1:准备:
JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk6downloads-1902814.html
eclipse:http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/juno/SR2/eclipse-jee-juno-SR2-win32.zip
axis2:http://axis.apache.org/axis2/java/core/download.cgi
eclipse的官方提供的axis插件工具,可以打包aar文件和生成客户端调用代码:http://axis.apache.org/axis2/java/core/tools/index.html
其中的Service Archive Wizard - Eclipse Plug-in和Code Generator Wizard - Eclipse Plug-in
下载完成的软件如图1.1
图1.12:配置环境:
2.1:配置java环境变量(不赘述)。
2.1:eclipse中axis2环境配置:Window->Perferences->Web Services->Axis2 perferences->Axis2 Runtime->Axis2 Runtime location,Browse选择解压axis2-1.6.2-bin.zip得到的axis2-1.6.2文件目录。如图2.1。
图2.1
2.2:安装插件:解压axis2-eclipse-codegen-plugin-1.6.2.zip和axis2-eclipse-service-plugin-1.6.2.zip,把得到的两个jar包放入eclipse目录下的\plugins\中,重启eclipse。
2.3:配置tomcat:解压apache-tomcat-6.0.36-windows-x64.zip(不赘述)。
2.4:eclipse中tomcat配置:Window->Perferences->Server->Runtime Environments添加。
3:发布axis2:
3.1:解压axis2-1.6.2-war.zip获得axis2.war并把它放到tomcat解压目录的webapps文件夹下,启动tomcat,浏览器中输入http://localhost:8080/axis2/,出现图3.1,说明配置成功。
图3.1
3.2:用eclipse的axis2插件发布web服务。
3.2.1 在eclipse中new一个Dynamic Web Project,取名webserviceService。编写一个简单的webService服务器代码
2
3 public class HelloWorldService {
4 public String sayHello(String name){
5 return "Hello," + name;
6 }
7 }
8
3.2.2 在eclipse的空白workspace处,右键new->Other,在弹出的对话框中,找到Axis2 Service Archiver,双击->选择HelloWorldService所在项目的class路径,如图3.2
图3.2
next->选中skip WSDL,Next->什么都不填NEXT->选中Generate the service xml automatically,NEXT->
图3.3
如如图3.3填写HelloWorldService类的全路径,点击load,在下面的Method表中出现sayHello说明load成功,点击NEXT->
图3.4
填写Output file location,点击Finish,如图3.4。
3.2.2 右键点击webServiceService项目,刷新。出现my_service.aar文件,如图3.5。
图3.5
把此aar文件放到%tomcat_home%\webapps\axis2\WEB-INF\services下。浏览器中输入http://localhost:8080/axis2/services/HelloWorldService?wsdl,出现图3.6,说明发布成功。
图3.6
4:用eclipse的Web Service Client生成客户端调用代码。
4.1:在eclipse的空白workspace处右键new->Other->Web services->Web Service Client,选中,点击NEXT->出现图4.1
图4.1
service definition填发布好的wsdl路径http://localhost:8080/axis2/services/HelloWorldService?wsdl,Client type默认,下面的下滑快拉到最上面,点击Server runtime:Tomcat v6.0 Server出现图4.2:
图4.2
在Server runtime中选择默认,Web service runtime选择Apache Axis2,点击Ok,返回图4.1,点击Client project:webServiceClient,出现图4.3
图4.3
在Client project的下拉列表中选择客户端代码存放的项目,本例选择webServiceClient。点击OK,返回图4.1,点击NEXT,进入下一个环节,然后点击Finish。
,
图4.4
如图4.4,在src的source folder下出现org.web.service包,下面有HelloWorldServiceCallBackHandler.java和HelloWorldServiceStub.java文件,Web App Libraries也有更新,在WebContent目录下也出现axis2-web文件夹,以及WEB-INF等的更新。
4.2:写webService调用代码。
在webServiceClient项目中新建一个客户端测试文件如下:
2
3 import java.rmi.RemoteException;
4
5 import org.web.service.HelloWorldServiceStub;
6 import org.web.service.HelloWorldServiceStub.SayHelloResponse;
7
8 public class HelloWorldClient {
9
10 /**
11 * @param args
12 * @throws RemoteException
13 */
14 public static void main(String[] args) throws RemoteException {
15 String target = "http://localhost:8080/axis2/services/HelloWorldService";
16 HelloWorldServiceStub stub = new HelloWorldServiceStub(target);
17 // sayHello 为webService提供参数
18 HelloWorldServiceStub.SayHello sayHello = new HelloWorldServiceStub.SayHello();
19 sayHello.setName("jackii");
20 SayHelloResponse eur = stub.sayHello(sayHello);
21 String returnVal = eur.get_return();
22 System.out.println(returnVal);
23 }
24
25 }
运行上面代码Run As->Java Application,输出:
说明调用成功。
5:参考文档http://wenku.baidu.com/view/12501ed7195f312b3169a54b.html
6:服务端接收的参数为javaBean,返回list样例:
6.1:创建服务。新建User.java
2
3 public class User {
4 private String id;
5 private String name;
6 public String getId() {
7 return id;
8 }
9 public void setId(String id) {
10 this.id = id;
11 }
12 public String getName() {
13 return name;
14 }
15 public void setName(String name) {
16 this.name = name;
17 }
18 }
19
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 public class ListService {
7 public List<User> getUserList(User user){
8 List<User> returnList = new ArrayList<User>();
9 returnList.add(user);
10 for(int i=0;i<3;i++){
11 User user1 = new User();
12 user1.setId("00"+i);
13 user1.setName("jack00"+i);
14 returnList.add(user1);
15 }
16 return returnList;
17 }
18 }
文件目录如图6.1:
图6.1
按照3.2说明重新发布服务(图3.4Output File Name重新起个名字)
6.2:创建客户端调用代码,步奏同4。得到图6.2所示两个文件ListServiceStub.java和ListServiceCallbackHandler.java
图6.2
创建ListServiceClient.java
2
3 import java.rmi.RemoteException;
4
5 import org.web.service.ListServiceStub;
6 import org.web.service.ListServiceStub.GetUserListResponse;
7 import org.web.service.ListServiceStub.User;
8
9 public class ListServiceClient {
10
11 /**
12 * @param args
13 * @throws RemoteException
14 */
15 public static void main(String[] args) throws RemoteException {
16 String target = "http://localhost:8080/axis2/services/ListService";
17 ListServiceStub stub = new ListServiceStub(target);
18 ListServiceStub.GetUserList getUserList0 = new ListServiceStub.GetUserList();
19 User user = new User();
20 user.setId("clientTest");
21 user.setName("ClientName");
22 getUserList0.setUser(user);
23 GetUserListResponse eur = stub.getUserList(getUserList0);
24 User[] userArray = eur.get_return();
25 for(int i=0;i<userArray.length;i++){
26 System.out.println("id:"+userArray[i].getId()+"name:"+userArray[i].getName()+"\n");
27 }
28 }
29 }
以java application方式运行,输出:
2
3 id:000name:jack000
4
5 id:001name:jack001
6
7 id:002name:jack002
说明调用成功。
axis2 WebService的发布与调用的更多相关文章
- Axis2 webservice 之使用java调用webservice
在上一篇中写了一个简单了webservice,实现了一个sayHello功能.那么webservice写好之后我们如何使用Java程序来调用webservice呢? 一.java调用的webservi ...
- 使用Axis2实现WebService的发布和调用
一.Axis2的下载和安装 1.可从http://ws.apache.org/axis2/ 下载Axis2的最新版本: 可以下载如下三个zip包: axis2-1.7.3-bin.zip(用 ...
- 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 ...
- 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.本文讲解 ...
- Axis2 WebService客户端Axis2调用
第一RPC方式,不生成客户端代码 第二,document方式,不生成客户端代码 第三,用wsdl2java工具,生成客户端方式调用 package samples.quickstart.client; ...
随机推荐
- 洛谷OJ P1196 银河英雄传说(带权并查集)
题目描述 公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦 创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰山 ...
- Mybatis resultMap空值映射问题解决
Mybatis在使用resultMap来映射查询结果中的列,如果查询结果中包含空值的列(不是null),则Mybatis在映射的时候,不会映射这个字段,例如 查询 name,sex,age,数据库中的 ...
- virtualenv -- python虚拟沙盒
有人说:virtualenv.fabric 和 pip 是 pythoneer 的三大神器. 不管认不认同,至少要先认识一下,pip现在倒是经常用到,virtualenv第一次听说,不过,总得尝试一下 ...
- Rails--bundle exec rake db:migrate
--新建表: def up create_table :[TABLE_NAME] do |t| t.column :[NUM], :integer t.column :[NAME], :string ...
- IMP-00009: 导出文件异常结束
今天准备从生产库向测试库进行数据导入,结果在imp导入的时候遇到" IMP-00009: 导出文件异常结束" 错误,google一下,发现可能有如下原因导致 imp的数据太大,没有 ...
- notepad++ gvim editplus 三款选择试用
notepad++开源 试用还不错 但默认不会识别语法高亮 要自己设置 比较烦 gvim 在XP下竟然无法返回命令行 百般折腾无奈放弃 editplus 自带资源栏 选择器 文件查找功能 ...
- log4j常用配置以及日志文件保存位置
log4j.rootLogger=INFO,CONSOLE log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender ...
- 浅谈 举家搬迁静态文件到CDN
由于七牛CDN最近做活动,对于标准用户可以免费使用如下优惠 10 GB 存储空间 10 G/月 下载流量 10 万次/月 PUT/DELETE 请求 100 万次/月 GET 请求 以上这些指标直接就 ...
- 实例讲述PHP面向对象的特性;;;php中const与define的使用区别
php中const与define的使用区别 1.const:类成员变量定义,一旦定义且不能改变其值. define:定义全局常量,在任何地方都可以访问.2.define:不能在类中定义,而const可 ...
- VC 中 UpdateData() 函数的使用
UpdateData(FALSE)与UpdateData(TRUE)是相反的过程 UpdateData(FALSE)是把程序中改变的值更新到控件中去 UpdateData(TRUE)是把在控件中输入的 ...