码迷,mamicode.com
首页 > 其他好文 > 详细

PE框架源码分析(6):mca数据源

时间:2018-07-30 13:20:41      阅读:401      评论:0      收藏:0      [点我收藏+]

标签:cse   osgi   mybatis   eth   ati   文件   引入   color   源码   

mca是包含了后端的所有业务逻辑,因为网银这类外围项目需要大量的与银行核心系统、客户系统或是其它外围系统通信,mca负责整合这些需求,称为“整合平台”。

 

数据库配置

采用了OSGI模块化,MCA端的数据库配置在com.csii.mca.db模块中。 
该模块主要包括以下文件:

/META-INF/config/svc_db.xml //数据源相关bean
/META-INF/config/dynamicservice.xml //数据源动态服务导出
/META-INF/peconfig/dmconfig.xml//配置信息

 

dynamicservice.xml以及dmconfig.xml都可以算作基于“约定不可配置”的思想,模块的重要文件几乎没有文档说明,无论是文件本身的命名和所在路径,还是里面配置信息的格式及内容。

 

svc_db.xml文件

<config>
<bean id="eappdbDataSource" class="org.apache.tomcat.jdbc.pool.DataSource" init-method="createPool" destroy-method="close" >
<param name="driverClassName">${eappdbDataSource.driverClassName}</param>
<param name="url">${eappdbDataSource.url}</param>
<param name="username">${eappdbDataSource.username}</param>
<param name="password">${eappdbDataSource.password}</param>
...
</bean>
<sqlExecutor id="eappdbSqlExecutor">
<param name="showSql">false</param>
<ref name="dataSource">eappdbDataSource</ref>
</sqlExecutor>
<transactionManager id="eappdbTxManager">
<ref name="dataSource">eappdbDataSource</ref>
</transactionManager>
<transactionTemplate id="eappdbTxTemplate">
<ref name="transactionManager">eappdbTxManager</ref>
...
</transactionTemplate>
</config>

 

配置了数据源,SQL执行器(与Mybatis的SqlSession类似,用于执行CURD),事务管理器,事务模板。数据源采用的是tomcat jdbc pool连接池。问题在于其采用的是pe-config.dtd,因此后续三个“bean”根本不知道其实现类或接口,更何况其属性。虽然后续我们可猜测是ibatis的SqlExecutor,Spring的TransactionManager,TransactionTemplate。

pe-config.dtd是封装在OSGI基础平台的spring-beans-fix.jar。正如在mvc篇所讲,封装实现类型并自定义dtd来减少这些配置没有多个意义,反而让人困惑。

 

dynamicservice.xml

<osgi:service id="eappdbDataSourceService" ref="eappdbDataSource" >
<osgi:interfaces>
<value>javax.sql.DataSource</value>
</osgi:interfaces>
</osgi:service>
<osgi:service id="eappdbSqlExecutorService" ref="eappdbSqlExecutor" interface="com.csii.pe.service.jdbc.SqlExecutor" />
<osgi:service id="eappdbTxTemplateService" ref="eappdbTxTemplate" >
<osgi:interfaces>
<value>org.springframework.transaction.support.TransactionOperations</value>
</osgi:interfaces>
</osgi:service>

 

PE平台的OSGI动态服务引入和导出配置文件。这里对数据源,SQL执行器,事务模板都以OSGI服务的方式导出,以便其它模块使用。从这里我们才能得知这后面2个bean它们所代表的接口。

 

服务使用

上述三个服务在特定服务实现模块中被引入和使用。

 

dynamicservice.xml

首先以OSGI服务的方式引入特定模块中:

<osgi:reference id="eappdbDataSource" bean-name="eappdbDataSource" interface="javax.sql.DataSource" />
<osgi:reference id="eappdbSqlExecutor" bean-name="eappdbSqlExecutor" interface="com.csii.pe.service.jdbc.SqlExecutor" />
<osgi:reference id="eappdbTransactionOperations" bean-name="eappdbTxTemplate" interface="org.springframework.transaction.support.TransactionOperations" />

 

数据源eappdbDataSource作为ibatis的Spring模板的数据源使用:

<bean id="eappdbSqlMapExecutor" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
<property name="dataSource" ref="eappdbDataSource" />
<property name="sqlMapClient">
<bean class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="osgibundle:/META-INF/config/sql-mapping/eappdbSqlMapConfig.xml" />
</bean>
</property>
</bean>

 

事务模板eappdbTxTemplate作为Spring的委托事务模板的实际执行对象:

<bean id="eappdbTxTemplate" class="com.csii.pe.config.support.DelegateTrsTemplate">
<property name="transactionOperations" ref="eappdbTransactionOperations" />
</bean>

 

 

service.xml

service.xml包含了模块的OSGI Service实现的声明,引入的服务将注入到这里的bean中使用。上述得到的SqlMapClientTemplate和DelegateTrsTemplate就可以注入到ServiceImpl中用于普通的SQL执行以及事务处理。

PE框架源码分析(6):mca数据源

标签:cse   osgi   mybatis   eth   ati   文件   引入   color   源码   

原文地址:https://www.cnblogs.com/liwanxing/p/9389838.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!