如何设置javax.xml.ws.Holder的值?

Eri*_*iot 3 java web-services jax-ws

我们目前遇到了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);
Run Code Online (Sandbox Code Playgroud)

这是我们的Web服务测试用例:

@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());
}
Run Code Online (Sandbox Code Playgroud)

最后,我们的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");
}
Run Code Online (Sandbox Code Playgroud)

正如您在测试中看到的那样,我们总是变为空.在reponse Holder中总是返回一个null对象,我们做错了什么?

先感谢您.

小智 6

它将解决您在响应中获取NULL值的问题.

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