首先建立ServiceTest.java
Java代碼
package sample.ws.service;
import sample.ws.pojo.Person;
public class ServiceTest {
public Person[] getPerson(Person[] person){
return person;
}
}
pojo Person.java 不變
Java代碼
public class Person{
private String name ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
services.xml 也保持不變;
Java代碼
<?xml version="1.0" encoding="UTF-8"?>
<service name="TestService" scope="application">
<description>TestService</description>
<messageReceivers>
<messageReceiver
mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
<messageReceiver
mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</messageReceivers>
<parameter name="ServiceClass">
sample.ws.service.ServiceTest
</parameter>
</service>
下面就是用戶端了:
1、 pojo Person.java 保持不變
Java代碼
public class Person{
private String name ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2、請求用戶端 Ws2pojoClient.java
Java代碼
package sample.ws.client;
import javax.xml.namespace.QName;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
import sample.ws.pojo.Person;
public class Ws2pojoClient {
public static void main(String args[]) throws java.lang.Exception {
RPCServiceClient client = new RPCServiceClient();
Options option = client.getOptions();
// 指定用戶端通路的webservice伺服器端位址
EndpointReference erf = new EndpointReference(
"http://localhost:9999/Ws2Pojo/services/TestService");
option.setTo(erf);
// 指定命名空間,指定要調用的方法
QName name = new QName("http://service.ws.sample", "getPerson");
// 建立Person對象
Person person1 = new Person();
person1.setAge("20");
person1.setName("張三");
Person person2 = new Person();
person2.setAge("30");
person2.setName("李四");
// 建立Person數組
Person[] person3 = new Person[2];
person3[0] = person1;
person3[1] = person2;
// 建立要傳送的object數組
Object[] object = new Object[] { person3 };
// 建立傳回的參數類型
Class[] returnTypes = new Class[] { Person[].class };
// 調用遠端服務,得到傳回的object數組
Object[] response = client.invokeBlocking(name, object, returnTypes);
// 強制轉換成Person[]對象
Person[] p = (Person[]) response[0];
// 周遊得到我們剛剛請求過去的值
for (int i = 0; i < p.length; i++) {
System.out.println(p[i].getAge());
System.out.println(p[i].getName());
}
}
}
得到結果:
20
張三
30
李四