三个类:web
SaleTrackThread 线程类json
private void excute(TrackServiceBean trackBean){
String method = "doSaveTrack"; // 方法名
Service service = new Service();
String RequestXML="";
try {
RequestXML = TrackUtil.GenXML(trackBean);
try {
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(webserviceAddress); //调用该接口
call.setOperationName(method); //调用该方法
call.setReturnClass(String.class);
call.addParameter("xmlStr", XMLType.XSD_STRING, ParameterMode.IN);
try {
String data = (String) call.invoke(new Object[] {RequestXML});
logger.info("销售轨迹平台返回报文:"+ data );
} catch (RemoteException e) {
logger.error("销售轨迹平台链接不通",e);
e.printStackTrace();
} catch (Exception e) {
logger.error("销售轨迹平台调用失败",e);
e.printStackTrace();
}
} catch (ServiceException e) {
logger.error("销售轨迹平台调用失败",e);
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
logger.debug("写入销售轨迹失败,数据为:" + RequestXML);
}
}
public void run() {
try{
if(trackBean==null){
logger.info("销售轨迹平台调用报文为空,不调用销售轨迹接口");
}else{
excute(trackBean);
}
}catch (Exception e) {
logger.error("销售轨迹平台调用失败",e);
}
}ide
工具类:TrackUtil函数
public static void excuteOnlineTrack(String OrderId,String ProcessType, Object RequestObject){
if(OrderId==null){
OrderId="";
}
if(ProcessType==null){
ProcessType="";
}
if(RequestObject==null){
RequestObject="";
}
logger.debug("excuteOnlineTrack02写入销售轨迹。");
JsonConfig jsonConfig = new JsonConfig();
DoubleJsonValueProcessor doubleJsonValueProcessor = new DoubleJsonValueProcessor(2);
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
jsonConfig.registerJsonValueProcessor(Double.class, doubleJsonValueProcessor);
JsonDateProcessor jd = new ECSJsonUtils.JsonDateProcessor("yyyy-MM-dd");
jsonConfig.registerJsonValueProcessor(Date.class, jd);
TrackServiceBean trackBean = new TrackServiceBean();
try{ //两个try catch确保不会影响主线程,有问题只会生成一句日志。
logger.error("用RequestObject生成销售轨迹TrackServiceBean开始。");
String tempOrderId = OrderId;
String tempProcessType = ProcessType;
String tempRequestXml = ECSJsonUtils.convertObject(RequestObject,jsonConfig);
trackBean.setClientID("EB");
trackBean.setOrderId(tempOrderId);
trackBean.setPolicyId("");
trackBean.setProcessType(tempProcessType);
if(StringUtils.isNotBlank(tempRequestXml) && StringUtils.isNotEmpty(tempRequestXml)){
trackBean.setRequestXml(tempRequestXml);
}else{
trackBean.setRequestXml("excuteOnlineTrack写入销售轨迹:RequestXml为空");
}
trackBean.setResponseXml("");
trackBean.setRemark("");
logger.error("用RequestObject生成销售轨迹TrackServiceBean成功。");
}catch(Exception ex){
logger.error("用RequestObject生成销售轨迹TrackServiceBean时发生异常,不会写入销售轨迹!",ex);
return;
}
try{ //trackBean 生成实体类bean
logger.debug("excuteOnlineTrack写入销售轨迹,数据为trackBean:"+trackBean.toString());
SaleTrackThread tSaleTrackThread =new SaleTrackThread(trackBean);
Thread t1=new Thread(tSaleTrackThread); //调用线程,对主线程无影响
t1.start();
}catch(Exception ex){
logger.error("生成销售轨迹接口xml文档时发生异常!",ex);
return;
}
}工具
public static void excuteOnlineTrack(String OrderId,String ProcessType,String RequestXml){spa
重载函数。。。。线程
}debug
实体类:TrackServiceBean日志
public class TrackServiceBean implements Serializable {xml
private static final long serialVersionUID = 5574793367633922241L;
private String ClientID;
private String ProcessType;
private String OrderId;
private String PolicyId;
private String requestXml;
private String responseXml;
private String Remark;
。。。。
@Override
public String toString() {
return "TrackServiceBean [ClientID=" + ClientID + ", EncryptString="
+ ", ProcessType=" + ProcessType + ", OrderId="
+ OrderId + ", PolicyId=" + PolicyId + ", requestXml="
+ requestXml + ", responseXml=" + responseXml + ", Remark="
+ Remark + "]";
}
}