繁体   English   中英

动态Web服务客户端和Java反射

[英]Dynamic webservice client and java reflection

Web服务包含:

ResultObj resultObj = getDocCountAction(RequestObj requestObj);

哪里:

ResultObj and RequestObj contain "Long count" attribute.

因此,webservis方法获取输入计数,并返回输出计数(我知道-这是胡说八道:)

我想要“ client.invoke(” getDocCountAction“,requestObj);” 将值返回给responseObj。 默认情况下,它返回Object []。

// webservice client from remote wsdl
String wsdlURL = "http://localhost:8080/test/test.wsdl"
ClassLoader loader = Thread.currentThread().getContextClassLoader();
DynamicClientFactory factory = DynamicClientFactory.newInstance();
Client client = factory.createClient(wsdlURL, loader);

// accessing request object and setter method for count attribute and setting 666 value
Object requestObj = Thread.currentThread().getContextClassLoader().loadClass("pl.kago.stuff.RequestObj").newInstance();
Method setCount = requestObj.getClass().getMethod("setCount", Long.class);
setCount.invoke(requestObj, 666);

现在我有问题。 我知道我必须调用webservice方法并定义并访问responseObj。 如何“绑定” web方法的结果与responseObj?

// accessing response object and getter method for count attribute
Object responseObj = Thread.currentThread().getContextClassLoader() .loadClass("pl.kago.stuff.ResponseObj").newInstance();
Method getCount = responseObj.getClass().getMethod("getCount", Long.class);
client.invoke("getCount", responseObj);

下面访问webmethod

Object[] result = client.invoke("getCountAction", requestObj);

嘿:)

对于其他有这种问题的人:

// webservice client from remote wsdl
String wsdlURL = "http://localhost:8080/test/test.wsdl"
ClassLoader loader = Thread.currentThread().getContextClassLoader();
DynamicClientFactory factory = DynamicClientFactory.newInstance();
Client client = factory.createClient(wsdlURL, loader);

// accessing request object and setter method for count attribute and setting 666 value
Object requestObj = Thread.currentThread().getContextClassLoader().loadClass("pl.kago.stuff.RequestObj").newInstance();
Method setCount = requestObj.getClass().getMethod("setCount", Long.class);
setCount.invoke(requestObj, 666);

// "binding" new result object to webmethod result
Object responseObj = Thread.currentThread().getContextClassLoader() .loadClass("pl.kago.stuff.ResponseObj").newInstance();
responseObj = client.invoke("getCountAction", requestObj);

// getting count value
Method getCount = responseObj .getClass().getMethod("getCount");
Object count = getCount.invoke(responseObj);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM