`
yunchow
  • 浏览: 324392 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

动态代理Connection

    博客分类:
  • DBI
阅读更多
package com.yunchow.util;

import java.sql.*;
import java.lang.reflect.*;

/** 
 * connection处理器
 * @author yunchow
 * @version 1.2  09/8/6
 */
class MyConnection implements InvocationHandler {
	/** 目标对象 */
	private Connection targetConnection;
	/** 代理对象 */
	private Connection proxyConnection;
	
	MyConnection(Connection conn) {
		targetConnection = conn;
	}
	/**
	 * 释放一个连接资源
	 */
	void release() {
		try {
			if(targetConnection != null)
				targetConnection.close();
			//System.out.println("清除成功\t"  + targetConnection.createStatement());
		} catch(Exception ex) {
			ex.printStackTrace();
		}
	}
	
	Connection getProxy() {
		proxyConnection = (Connection)Proxy.newProxyInstance(this.getClass().getClassLoader(),
							new Class[]{Connection.class, DBSourceRelease.class},this);
		return proxyConnection;
	}
	public Object invoke(Object proxy,Method method,Object[] args)
							throws Throwable {
		if("close".equals(method.getName())){ // 截获close方法
			MyDataSource.rebackConnection(proxyConnection);
			return null;
		} else if("release".equals(method.getName())) {
			release();
			return null;
		}
		return method.invoke(targetConnection, args);
	}							
}
分享到:
评论

相关推荐

    java装饰模式及动态代理模式示例源码

    装饰模式和动态代理模式是Java编程中两种非常重要的设计模式,它们都在代码的扩展性和灵活性方面发挥着关键作用。下面将分别对这两种模式进行详细解释,并结合手写的数据库连接池和动态代理模式的使用进行深入探讨。...

    java动态代理实现数据库连接池

    - 在`ConnectionFactory`中,需要实现一个`getProxyConnection`方法,该方法返回一个实现了`java.sql.Connection`接口的动态代理对象。这个代理对象将拦截所有对`Connection`接口方法的调用,并通过`...

    使用JAVA中的动态代理实现数据库连接池

    总结来说,通过Java的动态代理机制,我们可以创建一个透明的数据库连接代理,接管`Connection.close()`方法,以实现更灵活、低耦合的数据库连接池管理。这种方法不仅简化了用户接口,还增强了系统的可维护性和扩展性...

    java动态代理实现自定义连接池

    Java动态代理机制是一种强大的工具,它允许我们在运行时创建具有特定接口的新对象,这些对象的行为在编译时未被明确指定。动态代理通常用于实现AOP(面向切面编程)和拦截器模式,使得我们可以在不修改源代码的情况...

    在Lotus Connection2.01上配置在线感知功能

    - `SametimeProxySettings`: 如果Sametime服务器需要通过代理访问,这里设置代理信息。 #### 三.4 启动WAS 完成参数修改后,重启WebSphere Application Server,让新的配置生效。启动过程应确保没有错误发生,否则...

    代理模式详解

    - **定义**:动态代理是在运行时动态创建而无需编写代理类的代码,它通常利用JDK自带的API或者第三方库如CGLIB来实现。 - **应用场景**:AOP(面向切面编程)就是一个典型的使用场景,通过动态代理可以在不修改...

    使用Java动态代理实现一个简单的网络请求拦截器.txt

    ### 使用Java动态代理实现一个简单的网络请求拦截器 #### 一、引言 在软件开发过程中,为了增强程序的功能或方便进行调试与监控,我们常常需要在不改变原有业务逻辑的基础上,添加一些额外的行为(如日志记录、...

    JavaProx多项目多工程代理HttpUrlConnection

    5. **代理的切换与选择**:在多项目多工程中,可能需要根据不同的需求动态切换或选择代理。这可以通过维护一个代理池,并在每次请求前检查请求的上下文信息,选择合适的代理。 6. **图片比较**:`代理版百度搜索....

    MySQL远程连接丢失问题解决方法(Lost connection to MySQL server)

    代码如下:Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0 很明显这是连接初始化阶段就丢失了连接的错误。 google半天大多是说的注释掉配置文件中 bind-address = ...

    Internet connection proxy setup

    下面我们将详细介绍如何设置Internet Explorer (IE)浏览器的网络代理,以符合"Internet connection proxy setup"的主题。 首先,打开Internet Explorer浏览器。这是Windows操作系统中常见的默认浏览器,用户可以...

    dotnet 6 为什么网络请求不跟随系统网络代理变化而动态切换代理.rar

    在.NET 6中,开发人员可能会遇到一个情况,即网络请求不会随着系统网络代理设置的改变而自动切换代理。...无论是手动配置,还是利用系统API动态获取,确保正确处理代理设置是保证应用程序网络功能正常的关键。

    使用JAVA中态代理实现数据库连接池.doc

    由于 java.sql.Connection 本身是一个接口,因此我们可以使用动态代理机制来拦截 Connection 对象上的所有方法调用,包括 close 方法。 通过使用 JAVA 中的动态代理机制,我们可以实现一个高效、灵活的数据库连接池...

    android使用signalr代理模式和非代理模式

    - **事件处理**:SignalR提供了`Connection.Start()`方法来启动连接,同时需要监听`Connected`、`Disconnected`、`Error`等事件,以便在连接状态变化时作出相应处理。 - **发送和接收数据**:在代理模式下,通过代理...

    Cognos8.3 Connection 用户指南(中文版本)

    - **代理属性**: 设置代理任务的细节,如代理执行条件等。 - **页面属性**: 自定义页面布局和样式等。 - **规则属性**: 定义触发规则的条件及相应动作。 **组织条目** - 可以通过创建文件夹等方式整理条目,使界面...

    通过url网址下载图片,可以选择有代理下载,也可以选择无代理下载

    本篇文章将详细探讨如何使用Java通过URL下载图片,以及如何在需要时利用代理进行下载。 首先,让我们了解基本的URL下载图片流程。在Java中,我们可以使用`java.net.URL`类来创建一个表示URL的对象,然后使用`java...

    代理模式之静态代理---数据库连接池对象实现原理

    在Java中,代理模式主要分为静态代理和动态代理两种。 在本主题“代理模式之静态代理---数据库连接池对象实现原理”中,我们将探讨如何使用静态代理来实现数据库连接池。数据库连接池是现代应用中常用的优化手段,...

    易语言代理IP设置源码.zip

    此外,熟悉源码也有助于自定义网络行为,如动态更换代理IP、实现多线程并发请求等。 在实际应用中,我们可以结合易语言的其他功能,如文件操作、数据库访问等,构建更复杂的系统。例如,配合爬虫库,我们可以开发一...

    Java中使用IE Proxy代理的方法

    另外,如果你的应用程序需要处理多个不同的代理设置,或者需要动态切换代理,你可以使用`java.net.Proxy`类和`java.net.ProxySelector`类。`Proxy`类表示一个网络协议代理,而`ProxySelector`类允许你自定义选择代理...

Global site tag (gtag.js) - Google Analytics