一个项目需要用到另一个项目的方法时,可以考虑使这两个项目互相收发数据:
1.在请求数据的项目中新建一个action,写如下代码:
//获取数据库的字段,在数据库中写好发送数据的项目地址(如果测试的话在执行方法中把地址写死也可以)
Map<String, String> webServiceMap = new HashMap<String, String>();
public void getWebServiceMap(){
webServiceMap = new HashMap<String, String>();
for(SysConfig config:sysConfigService.getFTP_cfgtype("??????")){ //调用SQL语句查询数据库相关字段
webServiceMap.put(config.getCfgkey(), config.getCfgvalue());
}
}
//执行方法
public String dataDownLoadTask(){
getWebServiceMap();
pageContent();
WebServiceClientGetData wscgd=new WebServiceClientGetData();
dataTypeList=wscgd.getDataTypeNewList(webServiceMap.get("项目地址"), webServiceMap.get("命名空间"));
page=wscgd.dataDownLoadTask(webServiceMap.get("项目地址"), webServiceMap.get("命名空间"), page, userString, dataTypeId, isDownLoad, isgetAndZip, taskTimeBegin, taskTimeEnd,dataTypeIdS);
return "dataDownLoadTaskList";
}
//别忘记加get和set方法
2.WebServiceClientGetData 中的getDataTypeNewList方法为:
@SuppressWarnings("rawtypes")
public int/*需要传递的参数,实体类或者其他类型*/[] getDataTypeNewList(String webServiceUrl,String webServiceTargetNamespace){
try {
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
// 指定调用WebService的URL
EndpointReference targetEPR = new EndpointReference(webServiceUrl);
options.setTo(targetEPR);
// 指定sayHelloToPerson方法的参数值
Object[] opAddEntryArgs = new Object[] {};
// 指定sayHelloToPerson方法返回值的数据类型的Class对象
Class[] classes = new Class[] { int/*需要传递的参数,实体类或者其他类型*/[].class };
// 指定要调用的sayHelloToPerson方法及WSDL文件的命名空间
QName opAddEntry = new QName(webServiceTargetNamespace,"getDataTypeNewList"/*发送数据的项目的方法名称*/);
// 调用sayHelloToPerson方法并输出该方法的返回值
Object[] response = serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes);
int/*需要传递的参数,实体类或者其他类型*/[] dataTypeList=(int/*需要传递的参数,实体类或者其他类型*/[]) response[0];
return dataTypeList;
} catch (AxisFault e) {
e.printStackTrace();
}
return null;
}
如果不需要参数传递而只是执行一条命令,那么调用这个方法:
serviceClient.invokeRobust(opAddEntry,opAddEntryArgs);
取代
serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes);
3.而发送数据的项目中需要有与第二步中
QName opAddEntry = new QName(webServiceTargetNamespace,"getDataTypeNewList"/*发送数据的项目的方法名称*/);
相同的方法名。
例如:
public int/*需要传递的参数,实体类或者其他类型*/[] getDataTypeNewList(){/*查询需要的数据,例如实体类,注意这里不能跨项目传递列表,只能传递数组*/}