如何在jax-ws中调用带有holder作为参数的web服务

时间:2015-09-18 15:02:59

标签: java web-services jax-ws

我是jax-ws开发的新手,我使用wsimport从wsdl生成了java源文件。 我需要从其中一个源文件中调用一个函数到我的UI程序中。

我需要调用的函数如下:

@WebMethod(operationName = "GetX")
@RequestWrapper(localName = "GetX", targetNamespace = "urn:Control", className = "jaxws.control.GetX")
@ResponseWrapper(localName = "GetXResponse", targetNamespace = "urn:Control", className = "jaxws.control.GetXResponse")
public void myHostGetX(
    @WebParam(name = "isActive", targetNamespace = "", mode = WebParam.Mode.OUT)
    Holder<Boolean> Active);

让我们说这个功能是一个名为Class A的类的一部分。

但是,如果我尝试通过做类似的事情来调用它,

boolean foo;
ResponseFromWS response = myHostGetX(foo); 

我收到错误,

The method myHostGetX(Holder<Boolean>) in the type Class A is not applicable for the arguments (boolean)

如何调用此Holder<Boolean>

1 个答案:

答案 0 :(得分:1)

您需要设置持有人的。 所以:

myHostGetX(new Holder(Boolean.TRUE)); //note plain boolean should work in the constructor.

OR

myHostGetX(new Holder()); 

OR

Holder holder = new Holder();
holder.value = Boolean.TRUE;
myHostGetX(holder)

任何一个都应该有用。 值得一提的是,由于这是一个OUTPUT参数,因此值的设置应该在该方法的实现中进行。