1、整个流程拉通方案流程拉通方案 文档变更记录序号变更(+/-)说明作者版本号日期批准1流程拉通方案方浩1.02016.8.232 1. 引言1.1 编写目的和范围宇信emp集成dubbo,把各个业务做成接口通过dubbo对外提供服务。对于开发人员此文档作为开发规范,在了解整个流程的情况下,在指定的路径包下进行编码开发。对于业务人员帮助熟悉理解整个流程,更好的完成业务接口对接。2. 整体设计2.1 Web容器加载dubbo启动类Tomcat启动时读取配置文件web.xml,web.xml所在目录:/cmismd/WebContent/WEB-INF/web.xml;在web里增加servlet P
2、roviderInit com.yucheng.cmis.dubbo.start.Provider 6 类Provider init()方类启动dubbo2.2 Dubbo生产接口生产接口流程图:Dubbo启动时加载参数配制:applicationContextService.xml所在目录:/cmismd/src/main/config/applicationContextService.xml参数解析:dubbo:application:提供方应用信息,用于计算依赖关系dubbo:registry:使用注册中心暴露服务地址dubbo:protocol:用dubbo协议在端口暴露服务dubb
3、o:service:声明需要暴露的服务接口bean:接口实现类每开发一个接口需要在配制文件applicationContextService.xml把接口注册到zookeeper示例如下:Demo:生产接口开发目录结构:Demo:服务接口类:目录:/cmismd/src/main/java/com/yucheng/cmis/dubbo/service定义接口示例:ApplyNextTimeDubboServicepackage com.yucheng.cmis.dubbo.service;import com.yucheng.cmis.dubbo.ob.ApplyNextTimeReqMsgB
4、O;import com.yucheng.cmis.dubbo.ob.ApplyNextTimeRespMsgBO; /* * 申请授信时间接口: * author yusys * moduleId com.yucheng.cmis.dubbo.service * createDate 2016-8-23 10:09:59 */public interface ApplyNextTimeDubboService /* * 再次申请授信时间 */ public ApplyNextTimeRespMsgBO queryApplyNextTime(ApplyNextTimeReqMsgBO appl
5、yNextTimeReqMsgBO) throws Exception;服务接口实现类:目录:/cmismd/src/main/java/com/yucheng/cmis/dubbo/service/impl接口实现类示例:ApplyNextTimeDubboServiceImplpackage com.yucheng.cmis.dubbo.service.impl; import java.sql.Connection; import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;impor
6、t java.util.Map;import javax.sql.DataSource;import mons.lang.time.DateUtils;import mon.utils.StringUtils;import ponent.factory.ComponentFactory;import ponent.factory.EMPFlowComponentFactory;import com.ecc.emp.core.Context;import com.ecc.emp.jdbc.ConnectionManager;import com.yucheng.cmis.dao.SqlClien
7、t;import com.yucheng.cmis.dubbo.ob.ApplyNextTimeReqMsgBO;import com.yucheng.cmis.dubbo.ob.ApplyNextTimeRespMsgBO;import com.yucheng.cmis.dubbo.service.ApplyNextTimeDubboService;import com.yucheng.cmis.retailloan.businessflow.lcapplLimit.domain.LcApplLimit;/* * 申请授信时间接口实现: * author yusys * moduleId c
8、om.yucheng.cmis.dubbo.service * createDate 2016-8-23 10:09:59 */public class ApplyNextTimeDubboServiceImpl implements ApplyNextTimeDubboService private Connection conn; private DataSource dataSource;/* * 再次申请授信时间实现方法 */ SuppressWarnings( unchecked, rawtypes ) public ApplyNextTimeRespMsgBO queryApply
9、NextTime(ApplyNextTimeReqMsgBO applyNextTimeReqMsgBO) throws Exception ApplyNextTimeRespMsgBO response= new ApplyNextTimeRespMsgBO(); if(applyNextTimeReqMsgBO !=null) String idNo = applyNextTimeReqMsgBO.getIdNo();/证件号码 String idType = applyNextTimeReqMsgBO.getIdType();/证件类型 String loanType = applyNe
10、xtTimeReqMsgBO.getLoanType();/额度品种 /判断参数是否为空(默认为空) if(StringUtils.isBlank(idNo) | StringUtils.isBlank(idType) | StringUtils.isBlank(loanType) /查询条件其中为空的情况 response.setNextTime(0L); throw new Exception(参数不为空); else Context context = null; try context = (EMPFlowComponentFactory) ComponentFactory.getCo
11、mponentFactory(CMISBiz).getContext(null,rootCtx); / 初始化数据库连接 dataSource = (DataSource) context.getService(dataSource); this.conn = ConnectionManager.getConnection(dataSource); Map map =new HashMap(); map.put(idNo, idNo); map.put(idType, idType); map.put(loanType, loanType); /查询数据库 LcApplLimit limit=
12、(LcApplLimit)SqlClient.queryFirst(queryLcApplLimitForSeq, map, conn); SimpleDateFormat format = new SimpleDateFormat( yyyy-MM-dd HH:mm:ss); /判断是否存在该数据 if(limit !=null) String lastTime = limit.getLastChgDt();/获取最后修改时间 Date date = DateUtils.addDays(format.parse(lastTime), 100); response.setNextTime(da
13、te.getTime(); String d = format.format(date.getTime(); System.out.println(Format To String(Date):+d); /返回的是最后修改的时间+阀值(p_limit_typ 这表中的某个字段) else /不存在改数据时,返回当前时间 Date date = new Date(); response.setNextTime(date.getTime(); String d = format.format(date.getTime(); System.out.println(Format To String(D
14、ate):+d); catch (Exception e) e.printStackTrace(); finally if(this.conn= null ) this.conn.close(); /关闭连接 return response; 服务接口javabeen:目录:/cmismd/src/main/java/com/yucheng/cmis/dubbo/objavabeen示例:ApplyNextTimeReqMsgBOpackage com.yucheng.cmis.dubbo.ob;import java.io.Serializable;/* * 申请授信时间接口javabeen
15、: * author yusys * moduleId com.yucheng.cmis.dubbo.service * createDate 2016-8-23 10:09:59 */public class ApplyNextTimeReqMsgBO implements Serializable private static final long serialVersionUID = 1L; private String idType; /证件类型 private String idNo; /证件号码 private String loanType; /额度类型 public Strin
16、g getIdType() return idType; public void setIdType(String idType) this.idType = idType; public String getIdNo() return idNo; public void setIdNo(String idNo) this.idNo = idNo; public String getLoanType() return loanType; public void setLoanType(String loanType) this.loanType = loanType; public stati
17、c long getSerialversionuid() return serialVersionUID; 2.3 Dubbo消费接口消费接口流程图:消费方调用接口时加载配制文件:applicationContextConsumer.xml所在目录:/cmismd/src/main/config/applicationContextConsumer.xml参数解析:dubbo:application:消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样dubbo:registry:使用注册中心暴露发现服务地址dubbo:reference:生成远程服务代理,可以像使用本地bean一样
18、使用demoService每调用一个接口需要在配制文件applicationContextConsumer.xml进行配制:Demo:消费接口开发目录结构:Demo:消费共用接口类:目录:/cmismd/src/main/java/com/yucheng/cmis/dubbo/service定义接口示例:ApplyNextTimeDubboServicepackage com.yucheng.cmis.dubbo.service;import com.yucheng.cmis.dubbo.ob.ApplyNextTimeReqMsgBO;import com.yucheng.cmis.dubb
19、o.ob.ApplyNextTimeRespMsgBO; /* * 申请授信时间接口: * author yusys * moduleId com.yucheng.cmis.dubbo.service * createDate 2016-8-23 10:09:59 */public interface ApplyNextTimeDubboService /* * 再次申请授信时间 */ public ApplyNextTimeRespMsgBO queryApplyNextTime(ApplyNextTimeReqMsgBO applyNextTimeReqMsgBO) throws Exce
20、ption;消费接口调用类:目录:/cmismd/src/main/java/com/yucheng/cmis/dubbo/connect消费接口调用示例:ApplyNextTimeDubboConsumerpackage com.yucheng.cmis.dubbo.connect;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.yucheng.cmis.dubbo.service.ApplyNextTimeDubboService;import com.yucheng.
21、cmis.dubbo.util.DubboSpringUtil;/* * dubbo接口调用测试类: * author yusys * moduleId com.yucheng.cmis.dubbo.service * createDate 2016-8-23 10:09:59 */public class ApplyNextTimeDubboConsumer public static void main(String args) throws Exception ClassPathXmlApplicationContext context = new ClassPathXmlApplica
22、tionContext( new String ); context.start(); ApplyNextTimeDubboService service = (ApplyNextTimeDubboService)DubboSpringUtil.getInstance().getBean(applyNextTimeDubboService); /具体调用方法 消旨接口共用javabeen:目录:/cmismd/src/main/java/com/yucheng/cmis/dubbo/objavabeen示例:ApplyNextTimeReqMsgBOpackage com.yucheng.cm
23、is.dubbo.ob;import java.io.Serializable;/* * 申请授信时间接口javabeen: * author yusys * moduleId com.yucheng.cmis.dubbo.service * createDate 2016-8-23 10:09:59 */public class ApplyNextTimeReqMsgBO implements Serializable private static final long serialVersionUID = 1L; private String idType; /证件类型 private S
24、tring idNo; /证件号码 private String loanType; /额度类型 public String getIdType() return idType; public void setIdType(String idType) this.idType = idType; public String getIdNo() return idNo; public void setIdNo(String idNo) this.idNo = idNo; public String getLoanType() return loanType; public void setLoanType(String loanType) this.loanType = loanType; public static long getSerialversionuid() return serialVersionUID; 3. 其它项目调用接口服务其它项目调用接口,开发时直接共用的接口包和javabeen,然后如消费接口一样在配制调用接口。具体开发过程和2.3Dubbo消费接口一致。上线时把共用接口和共用javabeen打成jar包形式使用。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1