我们还是用 webservice 笔记(小结) <一>中的那个项目
1、在服务器端建立一个Person类,内容如下:
package sample.service; //一定要实现java.io.Serializable接口 public class Person implements java.io.Serializable{ private String name ; private String age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
在 ServiceServer类中增加如下方法
package sample.service; public class ServiceServerImpl implements ServiceServer { //定义sayHello 方法 public String sayHello(String name); //定义getperson 方法 public Person getPerson(Person person); }
在相应的实现类中增加内容如下:
package sample.service; public class ServiceServerImpl implements ServiceServer { //定义sayHello 方法 public String sayHello(String name) { return "hello"+name; } //定义getperson 方法,传递Person对象 public Person getPerson(Person person) { return person; } }
在services.xml中增加
<operation name="getPerson"> <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> </operation>
2、通过wsdl的方式自动生成客户端:
3、ServiceClient客户端中建立ServiceClientPerson类,内容如下:
package sample.service; public class ServiceClientPerson { /** * @param args */ public static void main(String[] args) throws java.lang.Exception { HelloWorldStub stub = new HelloWorldStub(); // 创建Person对象 HelloWorldStub.Person person = new HelloWorldStub.Person(); person.setAge("23"); person.setName("张三"); // 设置要调用的方法的值 HelloWorldStub.GetPerson getPerson = new HelloWorldStub.GetPerson(); getPerson.setPerson(person); // 调用getPerson并得到相应的返回值 HelloWorldStub.GetPersonResponse response = stub.getPerson(getPerson); System.out.println("age="+ response.get_return().getAge()); System.out.println("name="+ response.get_return().getName()); } }
4、运行后在console中打印出
age=23
name=张三
说明调用成功
一定要注意的是,建立的Person一定要实现java.io.Serializable接口。
如果有问题可以加群 : 84242283(webservice交流学习)