Futuremonitor = threads.submit(new Callable () { @Override public String[] call() throws Exception { Call call = getMonitorCall(); String result[] = (String[]) call.invoke(new Object[]{});//返回结果 log.info("DG983盾构主监控返回数据:"+result); return result; } }); try { ShieldData shieldData = new ShieldData(); String[] Data1 = monitor.get(60, TimeUnit.SECONDS); String dataDG983 = org.apache.commons.lang3.StringUtils.join(Data1, ","); shieldData.setType(active); //等待数据接收完成 shieldData.setMonitorDG983(dataDG983); log.info("DG983对象数据"+shieldData.toString()); //发送智慧工地服务器 String Vo = OKHttpUtil.postMap(addShieldProUrlNew15, null, shieldData); log.info("DG983数据已发送成功!且返回数据:"+Vo); log.info("DG983程序调用完成"); }catch (Exception e){ log.info("DG983链接错误:"+e); log.info("DG983错误消息:"+e.getMessage()); }
调用:
private Call getMonitorCall(){
if(monitorCall == null){
try {
//使用AXIS远程调用WebService服务; webservice路径 这里后面加不加 "?wsdl" 效果都一样的
String endpoint = "http://192.168.110.24/OPC_Read_Write_Svr/Service.asmx";//链接地址 DG983
Service service = new Service();//新建服务
URL url = new URL(endpoint);//新建URL
monitorCall = (Call) service.createCall();//服务链接
monitorCall.setTargetEndpointAddress(url);//设置url
monitorCall.setOperationName(new QName("getData"));//设置调用接口名
// 设置返回值类型
// 对于返回是字符串数组的返回类型只有这两种可行
monitorCall.setReturnClass(java.lang.String[].class);
monitorCall.setUseSOAPAction(true);
monitorCall.setSOAPActionURI("http://www.crcc.cn/getData");
// call.setReturnType(XMLType.SOAP_ARRAY);
// call.setUseSOAPAction(true);
// call.setSOAPActionURI("http://www.crcc.cn/getData");
}catch (Exception e){
log.error("[e]getMonitorCall exception!",e);
}
}
return monitorCall;
}


