最近在做项目的过程中,做过这样一个功能,通过soap协议跨平台获取外部系统文件柜的信息,并将所需要的字段解析出来传输至前台页面上展示成列表的形式。说实话,做了这么多的soap协议项目,做过编写PC服务端webservice服务并将服务提供给外部系统移动端APP调用、当然也给自己做的app调用。做过三方接口相互调用桥接的服务,中间穿插中间件总线服务,将网闸打通,实现内外网服务互通;做过客户端调用服务端接口实现数据传输的服务。诸如此类的项目都是基于webservice服务发布及调用。当然也做过http服务的发布,http服务的发布则涉及到struts配置文件将发布的服务映射到发布服务的地址上,通过外部系统调用的方式,把json数据传输给外部系统。现在这个项目中则与之前的大不一样,虽然看上去是接收服务作为客户端将数据解析。但这个对于数据的实时性要求比较高,且打通自己前台跟后台数据的传输,这其实也是一种http的服务。以下是代码部分:
package com.strongit.oa.filebox;
import java.net.MalformedURLException;
import java.net.URL;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import net.sf.json.JSONArray;
import org.apache.axis.Constants;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.struts2.config.ParentPackage;
import org.apache.struts2.config.Result;
import org.apache.struts2.config.Results;
import org.apache.struts2.dispatcher.ServletActionRedirectResult;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.springframework.beans.factory.annotation.Autowired;
import com.strongit.oa.common.user.IUserService;
import com.strongit.oa.common.user.model.Organization;
import com.strongmvc.webapp.action.BaseActionSupport;
/**
* @desc 获取取件箱信息action类
* @author lanyq
*
*/
@SuppressWarnings("unchecked")
@ParentPackage("default")
@Results( { @Result(name = BaseActionSupport.RELOAD, value = "filebox.action", type = ServletActionRedirectResult.class) })
public class FileBoxAction extends BaseActionSupport{
private IUserService userService;
@Autowired
public void setUserService(IUserService userService) {
this.userService = userService;
}
public IUserService getUserService() {
return userService;
}
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* @desc 获取待取件列表
*
*/
public String getToDoFileBoxList() throws Exception{
List<String> lst=new ArrayList<String>();
JSONArray json=new JSONArray();
//获取当前用户所在机构单位的名称
String curOrg="";
List<Organization> list=userService.getCurrentUserOrgAndDept();
if(list!=null&&list.size()>0){
curOrg