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