`

java.lang.reflect.Proxy

阅读更多
	private java.sql.Connection connectLoadBalanced(String url, Properties info)
			throws SQLException
	{
		Properties parsedProps = parseURL(url, info);

		// People tend to drop this in, it doesn't make sense
		parsedProps.remove("roundRobinLoadBalance");

		if (parsedProps == null)
		{
			return null;
		}

		int numHosts = Integer.parseInt(parsedProps
				.getProperty(NUM_HOSTS_PROPERTY_KEY));

		List hostList = new ArrayList();

		for (int i = 0; i < numHosts; i++)
		{
			int index = i + 1;

			hostList.add(parsedProps.getProperty(HOST_PROPERTY_KEY + "."
					+ index)
					+ ":"
					+ parsedProps.getProperty(PORT_PROPERTY_KEY + "." + index));
		}

		LoadBalancingConnectionProxy proxyBal = new LoadBalancingConnectionProxy(
				hostList, parsedProps);

		return (java.sql.Connection) java.lang.reflect.Proxy.newProxyInstance(
				this.getClass().getClassLoader(), new Class[]
				{ com.mysql.jdbc.Connection.class }, proxyBal);
	}


	protected java.sql.Connection connectReplicationConnection(String url,
			Properties info) throws SQLException
	{
		Properties parsedProps = parseURL(url, info);

		if (parsedProps == null)
		{
			return null;
		}

		Properties masterProps = (Properties) parsedProps.clone();
		Properties slavesProps = (Properties) parsedProps.clone();

		// Marker used for further testing later on, also when
		// debugging
		slavesProps.setProperty("com.mysql.jdbc.ReplicationConnection.isSlave",
				"true");

		int numHosts = Integer.parseInt(parsedProps
				.getProperty(NUM_HOSTS_PROPERTY_KEY));

		if (numHosts < 2)
		{
			throw SQLError
					.createSQLException(
							"Must specify at least one slave host to connect to for master/slave replication load-balancing functionality",
							SQLError.SQL_STATE_INVALID_CONNECTION_ATTRIBUTE,
							null);
		}

		for (int i = 1; i < numHosts; i++)
		{
			int index = i + 1;

			masterProps.remove(HOST_PROPERTY_KEY + "." + index);
			masterProps.remove(PORT_PROPERTY_KEY + "." + index);

			slavesProps.setProperty(HOST_PROPERTY_KEY + "." + i, parsedProps
					.getProperty(HOST_PROPERTY_KEY + "." + index));
			slavesProps.setProperty(PORT_PROPERTY_KEY + "." + i, parsedProps
					.getProperty(PORT_PROPERTY_KEY + "." + index));
		}

		masterProps.setProperty(NUM_HOSTS_PROPERTY_KEY, "1");
		slavesProps.remove(HOST_PROPERTY_KEY + "." + numHosts);
		slavesProps.remove(PORT_PROPERTY_KEY + "." + numHosts);
		slavesProps.setProperty(NUM_HOSTS_PROPERTY_KEY, String
				.valueOf(numHosts - 1));
		slavesProps.setProperty(HOST_PROPERTY_KEY, slavesProps
				.getProperty(HOST_PROPERTY_KEY + ".1"));
		slavesProps.setProperty(PORT_PROPERTY_KEY, slavesProps
				.getProperty(PORT_PROPERTY_KEY + ".1"));

		return new ReplicationConnection(masterProps, slavesProps);
	}
分享到:
评论

相关推荐

    java.lang.reflect.Proxy 学习资料 讲解 例子 源码

    java.lang.reflect.Proxy 学习资料 讲解 例子 源码 java.lang.reflect.Proxy 学习资料 讲解 例子 源码 java.lang.reflect.Proxy 学习资料 讲解 例子 源码

    Java.lang.reflect 包下常用的类及方法简介

    在Java编程语言中,`java.lang.reflect`包是核心库的一部分,它提供了运行时访问类、接口、字段和方法的能力。这个包对于理解和操作对象的动态特性至关重要,尤其是在实现反射机制时。反射允许我们在程序运行期间...

    java 请求的方法不存在(NoSuchMethodException)

    3. **Java动态代理**:基于`java.lang.reflect.Proxy`和`java.lang.reflect.InvocationHandler`,实现对目标对象的代理,用于拦截方法调用。 综上所述,`NoSuchMethodException`是Java编程中需要关注的一个重要异常...

    java reflect and dynamic proxy .Java反射和动态代理

    主要由java.lang.reflect.Proxy和java.lang.reflect.InvocationHandler接口组成。 1. **Proxy类**:Proxy类的newProxyInstance()方法用于创建动态代理对象,它需要一个ClassLoader、一个接口数组和一个...

    java反射(reflect)

    1. 动态代理:使用`java.lang.reflect.Proxy`和`java.lang.reflect.InvocationHandler`可以创建动态代理对象,实现AOP(面向切面编程)。 2. 数据库操作框架:如MyBatis,通过反射动态生成SQL语句并执行。 3. XML...

    java的类反射

    4. 动态代理:Java的`java.lang.reflect.Proxy`类可以创建动态代理,用于在方法调用前后添加自定义逻辑,比如AOP(面向切面编程)。 5. 框架开发:Spring框架的依赖注入、Hibernate的数据持久化等都大量使用反射技术...

    Java动态代理自建注解

    return (T) Proxy.newProxyInstance( target.getClass().getClassLoader(), target.getClass().getInterfaces(), new CheckParamsInvocationHandler(target) ); } } ``` 现在,我们可以在任何实现了接口的类...

    proxy.rar java三种代理模式源码

    在Java中,我们可以使用`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口来实现。`Proxy`类用于创建代理对象,`InvocationHandler`接口定义了代理对象方法调用的处理逻辑。在"DynamicProxy...

    【Java基础笔记】反射.docx

    - 生成动态代理:通过`java.lang.reflect.Proxy`类,可以创建动态代理,实现代理模式。 3. **相关包和类** - `java.lang.Class`:表示运行时的类信息,通过类名获取`Class`对象的方法有`forName()`、`getClass()`...

    Java1.6API中文版

    14. **JNI本地接口**:`java.lang.reflect`包中的`java.lang.reflect.InvocationHandler`和`java.lang.reflect.Proxy`,允许Java代码调用本地(C/C++)代码。 通过阅读Java 1.6 API中文版的CHM文件,开发者可以深入...

    深入理解Java Proxy机制.doc

    在Java中,`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口是实现这一功能的核心。 2. **Proxy类**: - `Proxy`类是Java的内置类,它提供了一种创建代理对象的方法。代理对象不仅实现了...

    Java语言的动态属性总结[参考].pdf

    7. **Java.lang.reflect.Proxy**: 支持动态代理,使得我们可以创建一个类的代理对象,该代理对象可以在调用方法时执行额外的操作。这在AOP(面向切面编程)中非常有用。 8. **Java.lang.reflect.InvocationHandler**:...

    Spring3 整合MyBatis3 配置多数据源动态选择SqlSessionFactory详细教程

    import static java.lang.reflect.Proxy.newProxyInstance; import static org.apache.ibatis.reflection.ExceptionUtil.unwrapThrowable; import static org.mybatis.spring.SqlSessionUtils.closeSqlSession; ...

    java反射机制的应用

    4. **动态代理**:Java的动态代理机制(`java.lang.reflect.Proxy`)允许在运行时创建代理类来拦截方法调用。 5. **测试工具**:如JUnit,通过反射调用私有方法进行测试。 6. **日志和监控**:分析和记录程序运行...

    Java动态代理[动态类Proxy的使用]

    本文将深入探讨Java中的动态代理,特别是基于`java.lang.reflect.Proxy`类的使用。 首先,`java.lang.reflect.Proxy`是Java标准库中用于生成动态代理类的关键类。它允许我们创建一个新的接口实现类,而无需手动编写...

    JAVA的反射机制与动态代理.pdf

    我们需要提供一个实现了`java.lang.reflect.InvocationHandler`接口的类,然后使用`Proxy.newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h)`方法创建代理对象。代理对象在调用方法时...

    Java 动态代理.md

    JDK 动态代理主要依赖于 `java.lang.reflect.Proxy` 类和 `java.lang.reflect.InvocationHandler` 接口。使用 JDK 动态代理时,需要实现 `InvocationHandler` 接口,并通过 `Proxy.newProxyInstance()` 方法创建代理...

    java学习资料-反射机制深入理解剖析

    5. 创建动态代理,通过`java.lang.reflect.Proxy`类,可以在运行时生成代理对象来实现特定接口。 在实际开发中,反射机制常用于: - 框架设计:Spring框架中的依赖注入、AOP切面编程等都大量使用了反射。 - 动态...

    java使用动态代理来实现AOP(日志记录)的实例代码共6

    Java中的动态代理主要通过`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口来实现。Proxy类用于创建一个实现了特定接口的代理对象,而InvocationHandler接口则定义了代理对象处理方法调用的...

Global site tag (gtag.js) - Google Analytics