codecamp

8.5.调用SpringBean中特定方法的Webservice

从BDF2-2.0.1开始,在BDF2-WEBSERVICE模块当中,我们提供了一个用于调用当前Webservice所在应用环境当中某个特定的SpringBean方法的Webservice,利用这个现成的Webservice,可以完成一些入参及出参相对简单的目标SpringBean的方法调用,该Webservice的WSDL的访问地址如下:
http://<serverName><:port>/<contextPath>/dorado/webservice/SpringBeanRPC.wsdl

浏览这个WSDL文件,可以看到如下图所示WSDL内容:

从WSDL描述可以看出,这个用于调用当前应用当中SpringBean的某个特定方法的Webservice的入参是一个名为DataRequest的对象,它包含三个参数,分别是:beanId,methodName以及一个集合类型的methodArgements,注意这里的methodArgements是个String组成集合类型,也就是说它可以是一个java.util.Collection也可以是一个String数组。

这个Webservice的出参相对简单,只有successful以及returnValue两个参数,这里的successful是一个布尔类型,用于标识当前调用是否成功,returnValue是个字符串,用于返回调用结果,如果调用成功且调用目标Spring Bean的方法有返回值,那么这里的returnValue就是返回值的toString()的值,如果没有返回值,那么returnValue就是null,但如果调用失败,这里的returnValue则是失败异常的message。

在调用这个Webservice时,如果我们采用BDF2-WEBSERVICE-CLIENT实现,那么对于需要的入参与出参对象,我们可以直接使用BDF2-WEBSERVICE中提供的DataRequest与DataResponse对象,下面是一个利用BDF2-WEBSERVICE-CLIENT对这个Webservice调用的代码示例:
调用示例
DataRequest req=new DataRequest();
req.setBeanId("testBean");
req.setMethodName("testMethod");
WebServiceClient client=new
WebServiceClient("http://localhost:8081/bdf2-test/dorado/webservice/SpringBeanRPC");
client.setUsernameToken(username, password, true);
client.setMarshallerClasses(new Class<?>[]{DataRequest.class,DataResponse.class});
DataResponse res=(DataResponse)client.sendAndReceive(req);
if(!res.isSuccessful()){
 System.out.println("失败消息:"+res.getReturnValue());
}else{
 System.out.println("调用成功:"+res.getReturnValue()); 
}
从上面的调用示例代码当中可以看出,这个Webservice在调用时需要进行基于WS-Security的用户名及密码验证,这样就可以防止被人随意调用。

8.4.编写Webservice时的注意事项
8.6.权限缓存同步刷新
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }