2010-08-24 90 views
2

我们目前在使用JAX-WS实现方面存在问题,特别是获取服务返回的值,尽管我们给它一个值,但在我们的例子中总是为null。如何将值设置为javax.xml.ws.Holder?

之前,我们的问题更多的解释某些代码:

这是我们操作的签名:

@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); 

这里是我们的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()); 
} 

最后,我们的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"); 
} 

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

预先感谢您。

+1

事实上,这个问题是由于我们使用WSDL和输出由在mulitpart:<皂:身体部位= “效应初探” 使用= “字面”/ > ...我们决定改变WSDL来避免这个问题,但是我们还没有得到答案... – ipingu 2011-10-26 13:26:30

回答

5

它会解决你的问题,获得NULL值作为回应。

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