天天看點

webservice 傳回對象數組

首先建立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

李四