我们还是用上一小节中的那个项目
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接口。
教程源码下载:
转载请标明出处http://blog.csdn.net/shimiso
欢迎有识之士加入我们的技术交流群:361579846