ESB 客户端调用 处理类
esb
package com.isoftstone.synchronize.entrance;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import org.apache.log4j.Logger;
import org.jdom.Document;
import com.isoftstone.core.common.tools.DWTransformTool;
import com.isoftstone.core.common.tools.XmlTool;
import com.isoftstone.core.dto.RequestBody;
import com.isoftstone.core.dto.RequestBusinessObject;
import com.isoftstone.core.dto.RequestHead;
import com.isoftstone.core.dto.ResponseBusinessObject;
import com.isoftstone.fwk.vo.BusinessVo;
import com.isoftstone.httpclient.ESBClient;
import com.isoftstone.iaeap.datawindow.metadata.DataWindowMetaDataMgr;
import com.isoftstone.synchronize.dao.TempBrmTaxpaymentCodeDAO;
import com.isoftstone.synchronize.dao.TempBrmUwClaimDAO;
import com.isoftstone.synchronize.domain.TempBrmTaxpaymentCode;
import com.isoftstone.synchronize.domain.TempBrmUwClaim;
import com.isoftstone.synchronize.domain.request.SynchronizeRequestBase;
import com.isoftstone.synchronize.domain.response.SynchronizeResponseBase;
import com.isoftstone.synchronize.domain.response.SynchronizeResponseClaim;
import com.isoftstone.synchronize.domain.response.SynchronizeResponseTaxpaymentCode;
import com.isoftstone.synchronize.tool.SpringBeanTool;
import com.isoftstone.synchronize.tool.TableOperation;
public class SynchronizeEntrance {
Logger logger = Logger.getLogger(SynchronizeEntrance.class);
public void synchronizeTableTaxpaymentCodeWithCore(Date startDate) throws Exception{//与核心 同步 Taxpayment表
ResponseBusinessObject responseObject = connectToCore( "3", "0", /*start_tm*/startDate) ;//约定该表固定传"3"
TempBrmTaxpaymentCodeDAO tempBrmTaxpaymentCodeDAO= (TempBrmTaxpaymentCodeDAO) SpringBeanTool.getBean("TempBrmTaxpaymentCodeDAO");
// ResponseBusinessObject responseObject = generateTestResponse("D:\\application\\eclipse64ee\\workspace\\ilogSynchronized\\src\\syncTaxpaymentCode.txt") ;
// log.info("同步处理业务数据-开始initSynchronizeResult");
Map<String, Object> returnBatchesMap = transferResponseBusinessObject2ReturnMap(responseObject);
List<TempBrmTaxpaymentCode> tempTaxpaymentCodeList = (List<TempBrmTaxpaymentCode>) returnBatchesMap.get("tempTaxpaymentCodeList");
TableOperation.deleteTable(TableOperation.TRUNCATE_TEMP_T_BRM_TAXPAYMENT_CODE);//删除临时表
tempBrmTaxpaymentCodeDAO.addTempBrmTaxpaymentCodes(tempTaxpaymentCodeList); //插入临时表
StringBuilder sb = new StringBuilder();
TableOperation.deleteTable(TableOperation.DELETE_T_BRM_TAXPAYMENT_CODE_WITH_TEMP);//根据临时表的主键删除真实表中的行
int effectCount = TableOperation.insertTable(TableOperation.INSERT_INTO_T_BRM_TAXPAYMENT_CODE);//把临时表中数据插入到真实表中
TableOperation.deleteTable(TableOperation.TRUNCATE_TEMP_T_BRM_TAXPAYMENT_CODE);//删除临时表
logger.info("更新T_BRM_TAXPAYMENT_CODE表总行数: "+ effectCount+"\n");
}
/**
* 1 第一次取<核心数据>,得到需要传输的次数
* 2 删除临时表
* 3 循环次数,再取<核心数据>,插入到所有数据到临时表
* 4 根据临时表的主键删除真实表中的行
* 5 把临时表中数据插入到真实表中
* 6 删除临时表
* @throws Exception
*/
public void synchronizeTableClaimWithCore(Date startTime) throws Exception{//与核心 同步 Claim表
ResponseBusinessObject responseObject = connectToCore( "1", " 0", /*start_tm*/ startTime ) ;
// ResponseBusinessObject responseObject = generateTestResponse("D:\\application\\eclipse64ee\\workspace\\ilogSynchronized\\src\\syncClaim.txt") ;
// log.info("同步处理业务数据-开始initSynchronizeResult");
Map<String, Object> returnBatchesMap = transferResponseBusinessObject2ReturnMap(responseObject);
SynchronizeResponseBase synchronizeResponseBase = (SynchronizeResponseBase) returnBatchesMap.get("synchronizeResponseBase");
List<TempBrmUwClaim> tempClaimList = (List<TempBrmUwClaim>) returnBatchesMap.get("tempClaimList");
TableOperation.deleteTable(TableOperation.TRUNCATE_TEMP_T_BRM_UW_CLAIM);//删除临时表
StringBuilder sb = new StringBuilder();
TempBrmUwClaimDAO tempBrmUwClaimDAO= (TempBrmUwClaimDAO) SpringBeanTool.getBean("TempBrmUwClaimDAO");
if(synchronizeResponseBase != null && synchronizeResponseBase.getBatches() != null ){
int i = Integer.parseInt(synchronizeResponseBase.getBatches());//总批次号
if(i >= 1){
for(int j = 1 ; j <= i ; j++){
ResponseBusinessObject responseBatchesObject = connectToCore("2", ""+j, /*start_tm*/ startTime ) ;
// ResponseBusinessObject responseBatchesObject = generateTestResponse("D:\\application\\eclipse64ee\\workspace\\ilogSynchronized\\src\\syncClaim.txt") ; // connectToCore("2", ""+j, /*start_tm*/DateUtil.stringToDate(("2012-12-29 12:00:00" == null ? "" :"2012-12-29 12:00:00"), DateUtil.FORMAT_0)) ;
Map<String, Object> claimsMap = transferResponseBusinessObject2ReturnMap(responseBatchesObject);
tempClaimList = (List<TempBrmUwClaim>) claimsMap.get("tempClaimList");
sb.append(String.format("第 %d 次传输 %d 行 ------ \n",j,tempClaimList.size()));
boolean flag = tempBrmUwClaimDAO.addTempBrmUwClaims(tempClaimList);
if( flag == false){
ResponseBusinessObject responseBatchesObjectAgain = // generateTestResponse("D:\\application\\eclipse64ee\\workspace\\ilogSynchronized\\src\\syncClaim.txt") ;
connectToCore("2", ""+j, /*start_tm*/ startTime/*,DateUtil.stringToDate(("2012-12-29 12:00:00" == null ? "" :"2012-12-29 12:00:00"), DateUtil.FORMAT_0)*/ ) ;
Map<String, Object> claimsMapAgain = transferResponseBusinessObject2ReturnMap(responseBatchesObject);
tempClaimList = (List<TempBrmUwClaim>) claimsMapAgain.get("tempClaimList");
sb.append(String.format("第 %d 次保存数据失败, 重新传输 , 传输 %d 行\n",j,tempClaimList.size()));
flag = tempBrmUwClaimDAO.addTempBrmUwClaims(tempClaimList);
if(flag == false) {
sb.append(String.format("第 %d 次保存数据失败, 不再重新传输了,直接退出\n",j));
break;
}
}
}
}
}
logger.info(sb.toString());
TableOperation.deleteTable(TableOperation.DELETE_T_BRM_UW_CLAIM_WITH_TEMP);//根据临时表的主键删除真实表中的行
int effectCount = TableOperation.insertTable(TableOperation.INSERT_INTO_T_BRM_UW_CLAIM);//把临时表中数据插入到真实表中
TableOperation.deleteTable(TableOperation.TRUNCATE_TEMP_T_BRM_UW_CLAIM);//删除临时表
logger.info("更新T_BRM_UW_CLAIM表总行数: "+ effectCount+"\n");
}
/**接收响应对象以转换Map
* @param responseBusinessObject 响应对象
* @return
* @throws Exception
*/
public Map<String, Object> transferResponseBusinessObject2ReturnMap(ResponseBusinessObject responseBusinessObject) throws Exception{
Map<String, Object> returnMap = new HashMap<String, Object>();
HashMap<String, BusinessVo> map = new HashMap<String, BusinessVo>();
List<SynchronizeResponseBase> baseList = new ArrayList<SynchronizeResponseBase>();
List<SynchronizeResponseClaim> claimList = new ArrayList<SynchronizeResponseClaim>();//刚取到的Claim列表
List<SynchronizeResponseTaxpaymentCode> taxpaymentCodeList = new ArrayList<SynchronizeResponseTaxpaymentCode>();//刚取到的TaxpaymentCode列表
List<TempBrmUwClaim> tempClaimList = new ArrayList<TempBrmUwClaim>();//转换完成后的用于临时表的Claim
List<TempBrmTaxpaymentCode> tempTaxpaymentCodeList = new ArrayList<TempBrmTaxpaymentCode>();//转换完成后的用于临时表的TaxpaymentCode
// DataWindowMetaDataMgr.getInstance().init(this.getClass().getResource("/").toString().split("WEB-INF")[0]+"template/");//不依整于容器 设置web-inf路径
DataWindowMetaDataMgr.getInstance().init(this.getClass().getClassLoader().getResource("/").getPath().split("WEB-INF")[0]+"template/");//设置web-inf路径
// logger.info("------------------------------"+this.getClass().getClassLoader().getResource("/").getPath());
// logger.info("______________________________"+SynchronizeEntrance.class.getResource("/").toString());
// DataWindowMetaDataMgr.getInstance().init(this.getClass().getClassLoader().getResource("/").getPath() + "core/conf/datawindow/");//取固定路径
// DataWindowMetaDataMgr.getInstance().init("WebContent/template/");//取固定路径
if(responseBusinessObject != null){//机构部门同步
if(responseBusinessObject.getResponseHead().getErrorCode().equals("0000")){
map = DWTransformTool.getBusinessVoMap(responseBusinessObject);
baseList.addAll(DWTransformTool.getDataObjListWithBusinessVo("synchronize.response.BASE", new SynchronizeResponseBase(), map));
claimList.addAll(DWTransformTool.getDataObjListWithBusinessVo("synchronize.response.CLAIM", new SynchronizeResponseClaim(), map));
taxpaymentCodeList.addAll(DWTransformTool.getDataObjListWithBusinessVo("synchronize.response.TAXPAYMENTCODE", new SynchronizeResponseTaxpaymentCode(), map));
Date createDate = new Date();
for(int i = 0;i < baseList.size(); i++){
Object objTemp = baseList.get(i);
if (objTemp instanceof SynchronizeResponseBase){
returnMap.put("synchronizeResponseBase",(SynchronizeResponseBase)objTemp);
}
}
for(int i = 0;i < claimList.size(); i++){
Object objTemp = claimList.get(i);
if (objTemp instanceof SynchronizeResponseClaim){
SynchronizeResponseClaim syncResponseClaim = (SynchronizeResponseClaim)objTemp;//刚取到的Claim
syncResponseClaim.setRecCreateDate(createDate);
syncResponseClaim.setDptCode(syncResponseClaim.getDptCode().substring(0, 2));
TempBrmUwClaim tempBrmUwClaim = new TempBrmUwClaim(syncResponseClaim);//转换完成后的用于临时表的Claim
tempClaimList.add(tempBrmUwClaim);
}
}
for(int i = 0;i < taxpaymentCodeList.size(); i++){
Object objTemp = taxpaymentCodeList.get(i);
if (objTemp instanceof SynchronizeResponseTaxpaymentCode){
SynchronizeResponseTaxpaymentCode syncResponseTaxpaymentCode = (SynchronizeResponseTaxpaymentCode)objTemp;//刚取到的TaxpaymentCode
syncResponseTaxpaymentCode.setCrtTm(createDate);
TempBrmTaxpaymentCode tempBrmUwClaim = new TempBrmTaxpaymentCode(syncResponseTaxpaymentCode);//转换完成后的用于临时表的TaxpaymentCode
tempTaxpaymentCodeList.add(tempBrmUwClaim);
}
}
returnMap.put("tempClaimList",tempClaimList);
returnMap.put("tempTaxpaymentCodeList",tempTaxpaymentCodeList);
}
}
return returnMap;
}
/**从核心提取当前批次的信息
* @param updateType 更新方式,1、获取总批次数据,2、分批更新
* @param batches 批次号
* @param startTime 起时
* @return
* @throws Exception
*/
public ResponseBusinessObject connectToCore(String updateType, String batches,Date startTime ) throws Exception{
// log.info("同步初始业务数据-开始initSynchronizePara");
RequestBusinessObject requestObject = new RequestBusinessObject();
RequestHead head = new RequestHead();
head.setRequestType("0000-36");
head.setSysName("ILOG");//外围系统名
head.setSysCode("04");//外围系统代码
head.setUserCde("100009999");//操作用户代码 核心用到,识别用户
head.setDptCde("00");//
head.setServiceNo("0101030205");//
head.setServiceName("synchronized");//request response文件夹上一层目录名
head.setUserId("50000005"); //esb 分配的用户ID,仅限于esb用来区分不同的接入系统
requestObject.setRequestHead(head);
HashMap<String, BusinessVo> map = new HashMap<String, BusinessVo>();
DataWindowMetaDataMgr.getInstance().init(this.getClass().getClassLoader().getResource("/").getPath().split("WEB-INF")[0]+"template/");
// DataWindowMetaDataMgr.getInstance().init("WebContent/template/");//取固定路径
// DataWindowMetaDataMgr.getInstance().init(this.getClass().getClassLoader().getResource("/").getPath() + "core/conf/datawindow/");
RequestBody body = new RequestBody();
SynchronizeRequestBase baseVo = new SynchronizeRequestBase();
baseVo.setUpdate_type(updateType);//更新方式,1、获取总批次数据,2、分批更新
baseVo.setBatches(batches);
baseVo.setStart_tm(startTime);
// baseVo.setStart_tm(DateUtil.stringToDate(("2012-12-29 12:00:00" == null ? "" :"2012-12-29 12:00:00"), DateUtil.FORMAT_0));//传固定值uwclaim
// baseVo.setStart_tm(DateUtil.stringToDate(("2013-09-18 00:00:00" == null ? "" :"2013-09-18 00:00:00"), DateUtil.FORMAT_0));//传固定值taxpayment
DWTransformTool.addToMap(map, "synchronize.request.BASE", baseVo);
DWTransformTool.addToBusinessVoMap(map, body);
requestObject.setRequestBody(body);
ESBClient client = new ESBClient(100000,100000,100000);
// String xml1 = XmlTool.convertToXml(requestObject);
ResponseBusinessObject responseObject = client.invoke(requestObject);//该方法会致使程序执行完后不关闭
// String xml2 = XmlTool.convertToXml(responseObject);
return responseObject;
}
public ResponseBusinessObject generateTestResponse(String fileNameInSrc) throws Exception{
// log.info("同步初始业务数据-开始initSynchronizePara");
RequestBusinessObject requestObject = new RequestBusinessObject();
RequestHead head = new RequestHead();
head.setRequestType("0000-36");
head.setSysName("ILOG");//外围系统名
head.setSysCode("04");//外围系统代码
head.setUserCde("100009999");//操作用户代码 核心用到,识别用户
head.setDptCde("00");//
head.setServiceNo("0101030205");//
head.setServiceName("synchronized");//request response文件夹上一层目录名
head.setUserId("50000005"); //esb 分配的用户ID,仅限于esb用来区分不同的接入系统
requestObject.setRequestHead(head);
File file = new File(fileNameInSrc);
// File file = new File("src/"+fileNameInSrc);
logger.info(file.getAbsolutePath());
Scanner s = new Scanner(file);
StringBuilder sb = new StringBuilder();
while(s.hasNext()){
sb.append(s.nextLine());
}
Document document = XmlTool.getDocument(sb.toString(), "GBK");
ResponseBusinessObject response = XmlTool.getFromResponseXml(document, requestObject);
return response;
}
}
ESB 客户端调用 处理类的更多相关文章
- CXF发布webService服务以及客户端调用
这篇随笔内容是CXF发布webService服务以及客户端调用的方法 CXF是什么? 开发工作之前需要下载CXF和安装 下载地址:http://cxf.apache.org 安装过程: <1&g ...
- webservice发布服务:AXIS2及客户端调用
1.Axis2: 到官网下载axis2的压缩包. 解压后: 1.将lib文件下的jar包复制到项目中 2.在web-inf下创建services->META-INF->services.x ...
- WCF初探-10:WCF客户端调用服务
创建WCF 服务客户端应用程序需要执行下列步骤: 获取服务终结点的服务协定.绑定以及地址信息 使用该信息创建 WCF 客户端 调用操作 关闭该 WCF 客户端对象 WCF客户端调用服务存在以下特点: ...
- HTTP请求中的Body构建——.NET客户端调用JAVA服务进行文件上传
PS:今日的第二篇,当日事还要当日毕:) http的POST请求发送的内容在Body中,因此有时候会有我们自己构建body的情况. JAVA使用http—post上传file时,spring框架中 ...
- Java与WCF交互(一):Java客户端调用WCF服务
最近开始了解WCF,写了个最简单的Helloworld,想通过java客户端实现通信.没想到以我的基础,居然花了整整两天(当然是工作以外的时间,呵呵),整个过程大费周折,特写下此文,以供有需要的朋友参 ...
- jdk的wsimport方法实现webservice客户端调用服务
1.配置好jdk环境,打开命令行,输入wsimport回车能看到很多该命令的参数, -s:要生成客户端代码的存储路径 -p:对生成的代码从新打包 这两个最常用. 在打开的命令行中输入:wsimport ...
- Silverlight客户端调用WCF服务难题解疑
一:解决办法 Silverlight客户端调用WCF服务在实际使用中经常会出现的问题就是无法直接应用类文件和配置文件.微软针对这一情况已经给出了解决办法.WCF开发框架可以帮助我们实现可靠性较高的跨平 ...
- motan源码分析四:客户端调用服务
在第一章中,我们分析了服务的发布与注册,本章中将简单的分析一下客户端调用服务的代码及流程,本文将以spring加载的方式进行分析. 1.在DemoRpcClient类的main()方法中加载类: Ap ...
- 【ASP.NET Web API教程】3.2 通过.NET客户端调用Web API(C#)
原文:[ASP.NET Web API教程]3.2 通过.NET客户端调用Web API(C#) 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的 ...
随机推荐
- AWS 之Load Balance篇
public class CreateELB { /// <summary> /// 连接AWS服务器 /// </summary> /// <param name=&q ...
- CodeSmith datagridview属性
private void button1_Click(object sender, EventArgs e) //将数据库里的数据直接显示在datagridview1里面 { SqlConnectio ...
- Caused by: 元素类型为 "package" 的内容必须匹配 "(result-types?,interceptors?,default-interceptor-ref?,default-action-ref?,default-class-ref?,global-results?,global-exception-mappings?,action*)"
Caused by: 元素类型为 "package" 的内容必须匹配 "(result-types?,interceptors?,default-interceptor- ...
- 指针数组vs数组指针 指针函数vs函数指针
在分辨这些重要的概念时,我们先回顾一下前面所讲的C之三值合一,由于三个值所求出的地址是相同的,所以经常有传言说他们都是首元素的地址.这种说法是不正确的.为什么说它是不正确的呢? 首先定义一个指针,将三 ...
- POJ 2395 Out of Hay 草荒 (MST,Kruscal,最小瓶颈树)
题意:Bessie要从牧场1到达各大牧场去,他从不关心他要走多远,他只关心他的水袋够不够水,他可以在任意牧场补给水,问他走完各大牧场,最多的一次需要多少带多少单位的水? 思路:其实就是要让所带的水尽量 ...
- erl0009 - erlang 读取时间瓶颈解决办法
读取时间erlang提供有两种方式: 1.erlang:now(); 2.os:timestamp(); 以上两种方式由于erlang系统需要保证读取精度,当并发读取的时候会引起加锁.系统频繁读取时间 ...
- ecshop 调用指定分类的推荐,热卖,新品
未测试 1.includes/lib_goods.php文件.把SQL语句改一下,与category表关联即可 将 $sql = 'SELECT g.goods_id,g.goods_name, g. ...
- RMAN duplicate from active遇到ora-17167,ora-12154
最近在从活动数据库进行异机克隆时碰到了ORA-17629,ORA-17627,ORA-12154的错误,起初以为是一个Bug呢.Oracle Bug着实太多了,已经成了习惯性思维了.汗!错误提示是无法 ...
- 安装完eclipse,dbwear后,需要在他们解压文件.ini下加上你liux的jdk的安装路径,才能正常使用
-vm/usr/java/jdk/jdk1.6.0_45/bin/java
- 【Unity3D】模仿制作“神庙逃亡”吃金币后金币飞出屏幕效果
[前言] 玩过“神庙逃亡”的应该都知道,这款游戏不论从游戏流畅度.人物动画.场景的管理都很棒. 自己也做了一款简单的跑酷游戏,实现了简单的吃金币效果,但是发现不好看,于是就想模仿“神庙逃亡”中的这个效 ...