package com.easyooo.framework.sharding.transaction; import java.sql.Connection; import java.sql.SQLException; /** * * 所有从数据源获取的连接对象,都不能直接关闭,由事务管理器统一关闭 * * @author Killer */ public class CloseDelegatingConnection extends DelegatingConnection{ public CloseDelegatingConnection(Connection delegate) { super(delegate); } /** * 如果启用了多数据源事务管理,则不关闭资源,由事务管理器统一关闭 * @see #forceClose() */ @Override public void close() throws SQLException { if(!RoutingSynchronizationManager.isSynchronizationActive()){ super.close(); } } /** * 该方法只会被事务资源回收才会被调用 * @throws SQLException */ protected void forceClose() throws SQLException { super.close(); } }