1.下载①axis2-1.7.4-bin.zip、②axis2-1.7.4-war.zip、③axis2-eclipse-service-plugin-1.7.4.zip、④axis2-eclipse-codegen-plugin-1.7.4.zip(下载地址:http://axis.apache.org/axis2/java/core/download.cgi);

2.将②axis2-1.7.4-war.zip解压后得到的axis2.war文件放到Tomcat下的webapps目录下,重启Tomcat访问http://localhost:8080/axis2/可看到内容;

3.将③axis2-eclipse-service-plugin-1.7.4.zip、④axis2-eclipse-codegen-plugin-1.7.4.zip解压后得到的插件放到Myeclipse的dropins目录下,重启Myeclipse生效;

4.新建web project,名为Axis2Service,新建student类:

package cn.lxc.bean;

import java.io.Serializable;

public class Student implements Serializable{
private static final long serialVersionUID = 4634408543522196927L; private int id;
private int number;
private String name;
private String tel;
private String address; public Student() { }
public Student(int id, int number, String name, String tel, String address) {
this.id = id;
this.number = number;
this.name = name;
this.tel = tel;
this.address = address;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}

创建MyService类,用于发布webservice服务:

package cn.lxc.service;

import java.util.Arrays;

import cn.lxc.bean.Student;

public class MyService {

    public String getGreeting(String name){
return "您好,"+name+"!";
} public String addStudent(Student stu){
if(null != stu)
return "您好,"+stu.getName()+"!";
else
return "student is null!";
} public Student queryStudent(){
Student stu = new Student(111111, 20170302, "刘新成", "18810464513", "北京");
return stu;
} public String addStudents(Student[] students){
if(null != students)
return Arrays.toString(students);
else
return "students is null";
} public Student[] queryStudents(){
Student[] stuArr = new Student[2];
Student st1 = new Student(222222, 20170301, "刘德华", "13893260374", "香港");
Student st2 = new Student(111111, 20170302, "刘新成", "18810464513", "北京");
stuArr[0] = st1;
stuArr[1] = st2;
return stuArr;
}
}

5.发布webservice:

(1)右击项目名,Axis2Service——>New——>Other——>Axis2 Service Archiver

(2)Class File Location路径:项目WEB-INF下的classes目录(例如:E:\Workspaces\Axis2Service\web\WEB-INF\classes);

(3)勾选Skip WSDL,点击下一步;

(4)Add any external libraries忽略,下一步;

(5)勾选Generator the service xml automatically,下一步;

(6)Service name:填写要发布的service名称,Class name:要发布的类的全称(例如:cn.lxc.service.MyService),下一步;

(7)Output file location:指定要发布的service到tomcat的axis2项目容器中(例如:C:\apache-tomcat-7.0.69\webapps\axis2\WEB-INF\services);点击finish即可;

(8)启动tomcat,访问http://localhost:8080/axis2/services/listServices,即可看到新发布的service:MyService,点击MyService链接,得到wsdl文件。

6.使用客户端调用webservice:

(1)新建web project,命名为Axis2Client,将①axis2-1.7.4-bin.zip解压后的包下的lib目录下的jar包添加到项目web/WEB-INF/lib目录下;

(2)使用myeclipse的axis2插件Axis2 Code Generator生成客户端;

(3)右击项目Axis2Service,New——>Other——>Axis2 Code Generator,点击下一步;

(4)选择Generator Java source code from a WSDL file,点击下一步;

(5)WSDL file location:路径指向点击MyService链接得到的wsdl文件(例如:C:\Users\liuxincheng\Desktop\MyService.xml),点击下一步;

(6)Codegen option:默认default,选择custom(定制),其他默认,点击下一步;

(7)选择Browse and select a project on current eclipse workspaceOutput Path:选择Axis2Client的路径,例如(E:\Workspaces\Axis2Client),点击finish即可;

(8)创建Test类测试:

package cn.lxc.test;

import cn.lxc.bean.xsd.Student;
import cn.lxc.service.AddStudent;
import cn.lxc.service.AddStudentResponse;
import cn.lxc.service.AddStudents;
import cn.lxc.service.AddStudentsResponse;
import cn.lxc.service.GetGreeting;
import cn.lxc.service.GetGreetingResponse;
import cn.lxc.service.MyServiceStub;
import cn.lxc.service.QueryStudent;
import cn.lxc.service.QueryStudentResponse;
import cn.lxc.service.QueryStudents;
import cn.lxc.service.QueryStudentsResponse; public class Test {
public static void main(String[] args){
// 设置远程服务调用地址
String target = "http://127.0.0.1:8080/axis2/services/MyService";
try{
// 根据地址构造用户存根
MyServiceStub stub = new MyServiceStub(target);
// 1. 调用getGreeting方法,设置入参对象及属性,入参,回参为基本类型String
GetGreeting getGreeting = new GetGreeting();
getGreeting.setName("Axis");//设置方法参数
GetGreetingResponse ggr = stub.getGreeting(getGreeting);
// 接收方法返回值
String getResult = ggr.get_return();
System.out.println(getResult);
// 2. 调用AddStudent方法,设置入参对象及属性,入参为bean
AddStudent addStudent = new AddStudent();
Student student = new Student();
student.setAddress("shanghai");
student.setId(123456);
student.setName("张三");
student.setNumber(12321312);
student.setTel("13678956529");
addStudent.setStu(student);
AddStudentResponse asr = stub.addStudent(addStudent);
// 接收方法返回值
String addResult = asr.get_return();
System.out.println(addResult);
// 3. 调用queryStudent方法,设置入参对象及属性,回参为bean
QueryStudent queryStudent = new QueryStudent();
QueryStudentResponse qsr = stub.queryStudent(queryStudent);
// 接收方法返回值
Student qsResult = qsr.get_return();
System.out.println("地址:" + qsResult.getAddress() + ", ID:"
+ qsResult.getId() + ", 姓名:" + qsResult.getName() + ", 号码:"
+ qsResult.getNumber() + ", 电话:" + qsResult.getTel());
System.out.println("<------------------------------------------------------>");
// 4. 调用queryStudents方法,设置入参对象及属性,返回bean数组
QueryStudents queryStudents = new QueryStudents();
QueryStudentsResponse qssr = stub.queryStudents(queryStudents);
// 接收方法返回值
Student[] qssResult = qssr.get_return();
for (int i = 0; i < qssResult.length; i++){
System.out.println("地址:" + qssResult[i].getAddress() + ", ID:"
+ qssResult[i].getId() + ", 姓名:"
+ qssResult[i].getName() + ", 号码:"
+ qssResult[i].getNumber() + ", 电话:"
+ qssResult[i].getTel());
}
// 5. 调用AddStudents方法,设置入参对象及属性,入参为bean数组
AddStudents addStudents = new AddStudents();
Student st = new Student();
st.setAddress("shanghai");
st.setId(123456);
st.setName("servyou");
st.setNumber(12321312);
st.setTel("13678956529");
Student st2 = new Student();
st2.setAddress("shanghai");
st2.setId(123456);
st2.setName("servyou");
st2.setNumber(12321312);
st2.setTel("13678956529");
addStudents.addStudents(st);
addStudents.addStudents(st2);
AddStudentsResponse assr = stub.addStudents(addStudents);
// 接收方法返回值
String addstsResult = assr.get_return();
System.out.println(addstsResult);
} catch (Exception e){
e.printStackTrace();
}
}
}

Axis2开发实例的更多相关文章

  1. axis2开发实例(二)建立独自的新工程

    第一部分 环境搭建 1.  环境搭建 (1)    下载Axis2服务包:axis2-1.6.2-bin.zip,axis2-1.6.2-war.zip,分别解压到D:\webservice_axis ...

  2. axis2开发实例(一)

    主要参考<axis2之webservice新手超详细教程http://wenku.baidu.com/view/6eae036d011ca300a6c390a4.html> <axi ...

  3. ecshop二次开发 给商品添加自定义字段【包含我自己进一步的开发实例详解】

    本文包含商品自定义添加教程及进一步的开发实例: 教程: 说起自定义字段,我想很多的朋友像我一样会想起一些开源的CMS(比如Dedecms.Phpcms.帝国)等,他们是可以在后台直接添加自定义字段的. ...

  4. RDIFramework.NET -.NET快速信息化系统开发整合框架 【开发实例 EasyUI】之产品管理(WebForm版)

    RDIFramework.NET—.NET快速开发整合框架 [开发实例]之产品管理(WebForm版) 接上篇:RDIFramework.NET (.NET快速信息化系统开发整合框架) [开发实例]之 ...

  5. RDIFramework.NET-.NET快速信息化系统开发整合框架 【开发实例 EasyUI】之产品管理(MVC版)

    RDIFramework.NET—.NET快速开发整合框架 [开发实例]之产品管理(MVC版) 接上篇:RDIFramework.NET (.NET快速信息化系统开发整合框架) [开发实例]之产品管理 ...

  6. Cocos2d-x 3.X手游开发实例详解

    Cocos2d-x 3.X手游开发实例详解(最新最简Cocos2d-x手机游戏开发学习方法,以热门游戏2048.卡牌为例,完整再现手游的开发过程,实例丰富,代码完备,Cocos2d-x作者之一林顺和泰 ...

  7. 免费的HTML5连载来了《HTML5网页开发实例详解》连载(二)

    最近新浪.百度.腾讯.京东.大众点评.淘宝等流行的网站都加大了招聘HTML5的力度,HTML5开发人员成了抢手货,本次连载的是由大众点评前端工程师和一淘网前端工程师基情奉献的<HTML5网页开发 ...

  8. RDIFramework.NET开发实例━表约束条件权限的使用-Web

    RDIFramework.NET开发实例━表约束条件权限的使用-Web 在上一篇文章“RDIFramework.NET开发实例━表约束条件权限的使用-WinForm”我们讲解了在WinForm下表约束 ...

  9. RDIFramework.NET开发实例━表约束条件权限的使用-WinForm

    RDIFramework.NET开发实例━表约束条件权限的使用-WinForm 在实际的应用中,客户常有这样的需求,指定用户或角色可以看指定条件下的数据,这里的“指定条件”在RDIFramework. ...

随机推荐

  1. Android—— Intent参数this问题

    Android Intent参数this问题 (2013-04-02 11:19:48) 转载▼ 标签: android intent 分类: Android 转自:http://blog.csdn. ...

  2. iscsi线缆

  3. Zookeeper和分布式环境中的假死脑裂问题(转)

    Zookeeper和分布式环境中的假死脑裂问题 最近和同事聊天无意间发现他们的系统也存在脑裂的问题.想想当初在我们的系统中为了解决脑裂花了非常大的功夫,现在和大家一起讨论下脑裂,假死等等这些问题和解决 ...

  4. select文本框架(change事件)改变另外一个select的值

    $('select[name=adults]').bind('change', function() { var $value = $(this).val(); if ($value >= 1) ...

  5. 事件总线demo

    经过几天的努力拜读大牛高手文章,终于对事件总线有所了解,特此记录下来,以免忘记 1.定义相关的接口: A  事件接口 public interface IDomainEvent { DateTime ...

  6. 關於 WebClient wc = new WebClient() 下載第三方數據不能進安安信任異常

    報錯異常:The underlying connection was closed: Could not establish trust relationship for SSL/TLS secure ...

  7. Jquery实现仿腾讯微薄的广播发表

    前言: 由于这几天在学习Jquery的一些知识,比以前的感觉就是Jquery太强大了,很多很简单的功能以前在JavaScript要写几十行的代码而在Jquery中只用几行代码就搞定了,所以我决定好好学 ...

  8. php 添加数据库的几种方法

    最简单的 <?php $con = mysql_connect("localhost","root","root"); if (!$c ...

  9. Mastering the game of Go with deep neural networks and tree search浅析

    Silver, David, et al. "Mastering the game of Go with deep neural networks and tree search." ...

  10. am335x mux配置

    /**************************************************************** * am335x mux配置 * * am335x的引脚复寄存器是C ...