Algorithm
Review
Configuring Spring and JTA without full Java EE
这篇文章主要介绍了Spring框架在非Java EE环境下对JTA支持的配置。
Spring框架中对事务的丰富支持,可以与所有类型的JTA无缝协作。对于Java EE服务器(weblogic、OC4J或者websphere)配置比较简单,对应的文档也比较齐全。
在开发环境中,我们通常会选择像Apache Tomcat这样的轻量级容器,相对来说配置JTA比较麻烦一些,需要引入第三方工具包。不过,幸运的是,Spring在嵌入式配置中支持了现有的各种应用程序服务器,文章中提供了使用可嵌入事务管理器的完整示例代码。
Tip
【技巧】
使用ThreadLocal管理多数据源切换
设计思路:
通过ThreadLocal保存每个数据源所应对的标识(该标识以枚举类的形式提供),在通过动态查找(Lookup)获取对应数据源的键值时,直接从ThreadLocal获取当前线程所持有的数据源标识,根据应用程序的需求来决定采用哪个数据源。
我们可以在程序或者某个线程启动之后进行设置,也可以在某个AOP的拦截器中,根据条件判断来进行设定以实现数据源的切换。
【踩坑】
解决Transaction is already completed - do not call commit or rollback more than once per transaction问题
Share
文章最大的贡献是提供了三张逻辑清晰的总结性图形。包括netty内存池的层级结构关系图,在PoolArena中申请内存的流程图、在PoolChunkList里申请内存的流程图。