Как установить значение для javax.xml.ws.Holder? - PullRequest
3 голосов
/ 24 августа 2010

в настоящее время у нас есть проблемы с реализацией JAX-WS, особенно в получении значения, возвращаемого службой, которое в нашем случае всегда равно null, хотя мы присваиваем ему значение.

Некоторый код перед болееобъяснения нашей проблемы:

Вот подпись нашей операции:

@WebMethod(action = "urn:genererEdition")
public void genererEdition(
    @WebParam(name = "requeteEdition", targetNamespace = "http://creditcgi.com/serviceeditique", partName = "requete")
    RequeteEdition requete,
    @WebParam(name = "reponseEdition", targetNamespace = "http://creditcgi.com/serviceeditique", mode = WebParam.Mode.OUT, partName = "reponse")
    Holder<ReponseEdition> reponse,
    @WebParam(name = "documentProduit", targetNamespace = "", mode = WebParam.Mode.OUT, partName = "documentProduit")
    Holder<byte[]> documentProduit);

Вот наш тестовый пример веб-сервиса:

@Test
public void testCallGenererEdition() {
    RequeteEdition requete = new RequeteEdition();

    Holder<ReponseEdition> reponseHolder = new Holder<ReponseEdition>(new ReponseEdition());
    Holder<byte[]> documentHolder = new Holder<byte[]>(new byte[512]);

    editique.genererEdition(requete, reponseHolder, documentHolder);

    Assert.assertNotNull(reponseHolder.value);
    Assert.assertNotNull(reponseHolder.value.getCodeRetour());
}

И, наконец, наш WSреализация:

@Override
public void genererEdition(RequeteEdition requete,
        Holder<ReponseEdition> reponse, Holder<byte[]> documentProduit) {

    // if we do no instanciate ReponseEdition, we got a Null Pointer Exception
    reponse.value = new ReponseEdition();

    reponse.value.setCodeRetour("OK");
}

Как видно из теста, мы всегда получаем нулевое значение.Что мы делаем неправильно, если в держателе ответа всегда возвращается нулевой объект?

Заранее спасибо.

1 Ответ

6 голосов
/ 01 октября 2011

Это решит вашу проблему получения значений NULL в ответ.

....genererEdition(....){ ReponseEdition re = new ReponseEdition(); reponse.value = re; }

...