從BDF2-2.0.1開始,在BDF2-WEBSERVICE模塊當(dāng)中,我們提供了一個用于調(diào)用當(dāng)前Webservice所在應(yīng)用環(huán)境當(dāng)中某個特定的SpringBean方法的Webservice,利用這個現(xiàn)成的Webservice,可以完成一些入?yún)⒓俺鰠⑾鄬唵蔚哪繕?biāo)SpringBean的方法調(diào)用,該Webservice的WSDL的訪問地址如下:
http://<serverName><:port>/<contextPath>/dorado/webservice/SpringBeanRPC.wsdl
瀏覽這個WSDL文件,可以看到如下圖所示W(wǎng)SDL內(nèi)容:
從WSDL描述可以看出,這個用于調(diào)用當(dāng)前應(yīng)用當(dāng)中SpringBean的某個特定方法的Webservice的入?yún)⑹且粋€名為DataRequest的對象,它包含三個參數(shù),分別是:beanId,methodName以及一個集合類型的methodArgements,注意這里的methodArgements是個String組成集合類型,也就是說它可以是一個java.util.Collection也可以是一個String數(shù)組。
這個Webservice的出參相對簡單,只有successful以及returnValue兩個參數(shù),這里的successful是一個布爾類型,用于標(biāo)識當(dāng)前調(diào)用是否成功,returnValue是個字符串,用于返回調(diào)用結(jié)果,如果調(diào)用成功且調(diào)用目標(biāo)Spring Bean的方法有返回值,那么這里的returnValue就是返回值的toString()的值,如果沒有返回值,那么returnValue就是null,但如果調(diào)用失敗,這里的returnValue則是失敗異常的message。
在調(diào)用這個Webservice時,如果我們采用BDF2-WEBSERVICE-CLIENT實(shí)現(xiàn),那么對于需要的入?yún)⑴c出參對象,我們可以直接使用BDF2-WEBSERVICE中提供的DataRequest與DataResponse對象,下面是一個利用BDF2-WEBSERVICE-CLIENT對這個Webservice調(diào)用的代碼示例:
調(diào)用示例
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("調(diào)用成功:"+res.getReturnValue());
}
從上面的調(diào)用示例代碼當(dāng)中可以看出,這個Webservice在調(diào)用時需要進(jìn)行基于WS-Security的用戶名及密碼驗(yàn)證,這樣就可以防止被人隨意調(diào)用。
更多建議: