# dsb-template **Repository Path**: v5uncode_admin/dsb-template ## Basic Information - **Project Name**: dsb-template - **Description**: DSB (Dynamic Service Bean) 框架是基于JAVA反射 (Reflection) 、动态代理 (Proxy) 、Socket、RMI等技术实现的系统框架 (Framework), 基于DSB框架开发的功能扩展模块称为动态服务 (Dynamic Service), 在DSB内核的支撑下,遵循DSB规范的动态服务模块可以被动态加载、远程热部署、远程调用等。 基于DSB框架的软件系统具有良好的扩展性和伸缩性,系统模块耦合性很低、接口界限分明,实现系统各个模块的可插即可用(PnP)特性。基于DSB框架的系统无论在开发阶段还是在系统上线运行、系统维护、升级开发阶段都具有良好的扩展性和可维护性。并且支持集中式与分布式的部署方式,分布式部署时,系统任何一个模块(包含该模块所依赖的其他模块)可以很方便地分离出整个系统而独立部署,从而分散集中式部署时整个系统的运行负荷。 dsb-template是基于DSB框架构建的基本模板程序,以此模块程序为基础可以快速构建Java服务端应用。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2017-12-28 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 1.how to build this common project? ant -f build-common.xml 1) DSB (Dynamic Service Beab) is a framework to manage it's dynamic service a dynamic service must have an interface to expose all it's functionalities, which can be called remotely or locally by other services. Dynamic service started or initialized by DSB framework, this means the lifecyle of all dynamic service is controlled by DSB framework 2) Dynamic services must have one ore more deployment descriptors, each service must have one bean desriptor ( refer to BeanDescriptor.xsd), bean deployment descriptor is a collection of bean descriptor (refer to BeanDeployment.xsd), which contains one ore more bean desriptor. 3) Dynamic service can have one or more i18n resource files(local i18n resource), services deployed into one bean descriptor(refer to BeanDeployment.xsd) can share the same i18n resource(global i18n resource). those i18n resource can be retived by call: ServiceContext.getString(String key) 4) Dynamic service can have one or more configuration files, those config files must place into folder config/service/{serviceName}, and can be retrived by call ServiceContext.getConfigFile(String fileName) 5) Dynamic service also can have one or more resource files, those resource files must pace into folder resource/service/{serviceName}, and can be retrived by call ServiceContext.getResourceFile(String fileName) 6) DSB (3.0) is only applicable for jre1.6 or higher version, while DSB (1.0) is only applicable for jre1.5 or lower version 7) compare to version 2.0, this version enable call forwarding as per service name or method name or method parameter value. 8) 改进了lookup机制(针对整个service的转发机制, 为了提高效率,不能根据方法名以及参数来转发) 9) 改进了service启动机制(dsb-conf.xml新增startupservices, 因为有些service必须优先启动, 系统启动时会忽略service的startup属性而强制启动) 10) 改进了service启动机制(dsb-conf.xml新增disabledservices,因为有些service只是作为调用引入的包而无需启动, 系统启动时会忽略service的startup属性而不启动) 11) 新增了查看service启动状态/启动(start)/关闭(close)/刷新(refresh)接口 3.2 新功能 (2014-12-7) 12) HA 特性: 在ServiceFactory新增方法: T lookup_ha(String serviceName, String haName) ServiceProxy lookup_ha(String haName) throws Exception; 实现方法调用的高可用性high availability (HA) 在调用上述方法前,需要在system properties中设置HA name,例如System.setProperty("dsb_ha_1", "localhost:20000,localhost:10000"); IP地址和端口之间通过分号":"连接,多个配置项目用逗号","分割,此项配置支持1~n个配置项,这意味着HA集群中可支持n个DSB服务热备,实际情况下,2个热备足够使用 13) 3.2版本中新增HA特性后, service forward功能暂不可用,因为forward有递归实现方式,存在一定风险 14) 3.5版本中除去了service forward功能 --最后更新时间为 2015-05-01 --jdk version: 1.6.0_45 15) 增加fastjson功能包 deploy/libs/fastjson-1.2.29.jar --最后更新时间为 2017-03-26 --jdk version: 1.6.0_45 16) 增加HBaseService组件,提供对多个HBase cluster连接池功能. 其核心接口方法是getHtable(String clusterName, String tableName) 获取Table对象后,进行数据库表的查询、增加、删除、更新等操作,操作完成后一定要关闭Table。 17) 本次增加的HBaseService组件属于HBase client API功能的封装,因此会用到HBase的一些依赖包,具体如下: deploy/libs/commons-configuration-1.6.jar deploy/libs/guava-12.0.1.jar deploy/libs/hadoop-auth-2.5.1.jar deploy/libs/hadoop-common-2.5.1.jar deploy/libs/hbase-client-1.2.5.jar deploy/libs/hbase-common-1.2.5.jar deploy/libs/hbase-protocol-1.2.5.jar deploy/libs/htrace-core-3.1.0-incubating.jar deploy/libs/metrics-core-2.2.0.jar deploy/libs/netty-all-4.0.23.Final.jar deploy/libs/protobuf-java-2.5.0.jar deploy/libs/rocksaw-1.0.1.jar deploy/libs/vserv-tcpip-0.9.2.jar deploy/libs/zookeeper-3.4.10.jar --最后更新时间为 2017-04-19 --java version "1.7.0_51" 18) 增加ActivitiService组件,提供基于activiti-5.22.0的流程引擎功能,添加了一系列activiti核心jar文件 把activiti包中database/create和database/drop目录下和mysql数据库相关的三个sql 文件添加到resource\ActivitiService\mysql目录下,形成数据库table的初始化和逆初始化过程文件 核心表包括如下: act_evt_log act_ge_bytearray act_ge_property act_hi_actinst act_hi_attachment act_hi_comment act_hi_detail act_hi_identitylink act_hi_procinst act_hi_taskinst act_hi_varinst act_id_group act_id_info act_id_membership act_id_user act_procdef_info act_re_deployment act_re_model act_re_procdef act_ru_event_subscr act_ru_execution act_ru_identitylink act_ru_job act_ru_task act_ru_variable 19) 本次增加的ActivitiService组件属于Activiti engine 功能的封装,因此会用到Activiti Engine的一些依赖包,具体如下: deploy/libs/activiti-bpmn-converter-5.22.0.jar deploy/libs/activiti-bpmn-layout-5.22.0.jar deploy/libs/activiti-bpmn-model-5.22.0.jar deploy/libs/activiti-common-rest-5.22.0.jar deploy/libs/activiti-crystalball-5.22.0.jar deploy/libs/activiti-diagram-rest-5.22.0.jar deploy/libs/activiti-engine-5.22.0.jar deploy/libs/activiti-explorer-5.22.0.jar deploy/libs/activiti-image-generator-5.22.0.jar deploy/libs/activiti-json-converter-5.22.0.jar deploy/libs/activiti-modeler-5.22.0.jar deploy/libs/activiti-process-validation-5.22.0.jar deploy/libs/activiti-simple-workflow-5.22.0.jar deploy/libs/activiti-spring-5.22.0.jar deploy/libs/jackson-annotations-2.2.3.jar deploy/libs/jackson-core-2.2.3.jar deploy/libs/jackson-databind-2.2.3.jar deploy/libs/joda-time-2.6.jar ActivitiService组件的核心方法是:ProcessEngine getProcessEngine() throws Exception; --最后更新时间为 2017-05-07 --java version "1.7.0_51" 20) 本次修改HBaseService,增加接口方法: boolean isAvailable(String clusterName) throws Exception; 用来检测HBase集群的可用性 修改MessageQueueService,增加接口方法: void stop(String pool_name, String queue) throws Exception; 用来关闭消息接收通道 修改hbase-clusters.xml以及对应的xml schema,增加配置参数: 1 --最后更新时间为 2017-05-29 --java version "1.7.0_51"