Axis2開發實例


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();
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM