Массивы пользовательских объектов, Java SOAP - PullRequest
0 голосов
/ 06 февраля 2019

Могу ли я иметь каждый пользовательский объект Java "Person" из массива "Person []" внутри SOAP / XML-элемента "Person" в ответе SOAP?Прямо сейчас у меня есть элемент "item".

У меня есть 3 источника Java-интерфейса веб-службы (WS), реализация WS и класс Person.Я бы сказал, что мне не хватает какой-то аннотации или чего-то подобного ... Все еще не могу понять это.Вот мой код:

Интерфейс WS:

@WebService(
  name="GetPersonsForShop",
  targetNamespace="http://example.org")
public interface GetPersonsForShop {

  @WebMethod(    action="",
    operationName="GetPersonsForShopService")
  @WebResult(name="result")  
  public my.project.structs.Person[] getPersonsForShopService(@WebParam(name="string") java.lang.String string)
    ;
 }

Реализация WS:

@WebService(serviceName = "GetPersonsForShop", targetNamespace = "http://example.org", endpointInterface = "my.project.webservices.GetPersonsForShop")
public class GetPersonsForShopImpl implements GetPersonsForShop {
//object from business API to get info from DB
    GetPersonsForShopBusiness _GetPersonsForShopBusiness = new GetPersonsForShopBusiness();

    public my.project.structs.Person[] getPersonsForShopService(java.lang.String shop){

        try {
                java.util.Collection tempCollection = _GetPersonsForShopBusiness.business(shop);
                if (tempCollection == null) {
                    return null;
                }
                java.util.Hashtable[] hashtableArray = (java.util.Hashtable[]) tempCollection
                        .toArray(new java.util.Hashtable[0]);
                Person[] result = new Person[hashtableArray.length];
                for (int i = 0; i < result.length; i++) {
                    //business code to populate the array
                }
                return result
            }catch (Exception ex) {
                logger.error("Some error msg", ex);
                return null;
            }
    }
}

Класс Person:

public class Person implements java.io.Serializable {

    private java.lang.String name;
    private java.lang.String idCode;

    public java.lang.String getName() {
        return this.name;
    }

    public void setName(java.lang.String name) {
        this.name = name;
    }
    public java.lang.String getIdCode() {
        return this.idCode;
    }

    public void setIdCode(java.lang.String idCode) {
        this.idCode = idCode;
    }


}

Результат в SOAPОтвет:

<result>
    <item>
        <name>Scott</name>
        <idCode>ABC</idCode>
    </item>
    <item>
        <name>Tiger</name>
        <idCode>DEF</idCode>
    </item>
</result>

Я ищу:

<result>
    <Person >
        <name>Scott</name>
        <idCode>ABC</idCode>
    </Person >
    <Person >
        <name>Tiger</name>
        <idCode>DEF</idCode>
    </Person >
</result>
...