- 浏览: 45322 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
ljl961890233bear:
我也遇到这个问题了。。。
解决UNION速度慢 -
z-one:
楼主厉害 我刚好遇到类似问题,先试试看
解决UNION速度慢
final NSConnectionFactory factory = (NSConnectionFactory) context.get(NSConst.DATASOURCEFACTORY_KEY);
Object[] arguments = new Object[]{KDataAccess.ORACLE, factory.getConnection(jndi), getUser(), sessionId, NConst.CURRENT_SCHEMA};
Class[] argumentTypes = new Class[arguments.length];
argumentTypes[0] = Integer.class;
argumentTypes[1] = Connection.class;
argumentTypes[2] = User.class;
argumentTypes[3] = String.class;
argumentTypes[4] = String.class;
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(NDataAccess.class);
enhancer.setCallback(new NDataAccessProxy(titleDspId,getUser()));
NDataAccess proxy = (NDataAccess)enhancer.create(argumentTypes,arguments);
/**
* <pre>
* <strong>説明:</strong>
* DBアクセスローグ出力するためにDB代理用クラス.
* </pre>
*
* <pre>
* <strong>注意事項:</strong>
* </pre>
*
* <pre>
* <strong>使用例:</strong>
* </pre>
*
* @author $Author: 鄧 $
* @version $Revision: 1.1 $ $Date: 2010/10/18 07:08:52 $
*/
public final class NDataAccessProxy implements MethodInterceptor {
private String functionId;
private User user;
public NDataAccessProxy(String functionId, User user) {
this.functionId = functionId;
this.user = user;
}
/** ログ. */
protected static Logger log = Logger.getLogger(NDataAccessProxy.class);
public Object intercept(Object obj, Method method, Object[] param,
MethodProxy proxyMethod) throws Throwable {
boolean isFunction = false;
boolean isSqlFunction = false;
LoginUser loginUser ;
String dealer = "";
if (functionId.equals("TS018")) {
isFunction = true;
Pattern pattern = Pattern.compile("^(getRecord(s|Bfile)(Exe)?|getResultSetEx|executeUpdate(SameState)?Exe|prepareCallExe(RetStr)?)$");
Matcher m = pattern.matcher(method.getName());
if(m.find()) {
isSqlFunction = true;
loginUser = (LoginUser) user;
dealer = loginUser.getDealerResourceType() + "_"
+ loginUser.getDealerConnectionCode() + "_"
+ loginUser.getDealerConnectionType();
}
}
if (isFunction) {
if(isSqlFunction) {
log.info("[DB]\t[functionId:]" + functionId + "\t[dealer:]" + dealer
+ "\t[sql:]" + param[param.length-1] + "\t[begin]");
}
}
Object result = proxyMethod.invokeSuper(obj, param);
if (isFunction) {
if(isSqlFunction) {
log.info("[DB]\t[functionId:]" + functionId + "\t[dealer:]" + dealer
+ "\t[sql:]" + param[param.length-1] + "\t[end]");
}
}
return result;
}
}
Object[] arguments = new Object[]{KDataAccess.ORACLE, factory.getConnection(jndi), getUser(), sessionId, NConst.CURRENT_SCHEMA};
Class[] argumentTypes = new Class[arguments.length];
argumentTypes[0] = Integer.class;
argumentTypes[1] = Connection.class;
argumentTypes[2] = User.class;
argumentTypes[3] = String.class;
argumentTypes[4] = String.class;
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(NDataAccess.class);
enhancer.setCallback(new NDataAccessProxy(titleDspId,getUser()));
NDataAccess proxy = (NDataAccess)enhancer.create(argumentTypes,arguments);
/**
* <pre>
* <strong>説明:</strong>
* DBアクセスローグ出力するためにDB代理用クラス.
* </pre>
*
* <pre>
* <strong>注意事項:</strong>
* </pre>
*
* <pre>
* <strong>使用例:</strong>
* </pre>
*
* @author $Author: 鄧 $
* @version $Revision: 1.1 $ $Date: 2010/10/18 07:08:52 $
*/
public final class NDataAccessProxy implements MethodInterceptor {
private String functionId;
private User user;
public NDataAccessProxy(String functionId, User user) {
this.functionId = functionId;
this.user = user;
}
/** ログ. */
protected static Logger log = Logger.getLogger(NDataAccessProxy.class);
public Object intercept(Object obj, Method method, Object[] param,
MethodProxy proxyMethod) throws Throwable {
boolean isFunction = false;
boolean isSqlFunction = false;
LoginUser loginUser ;
String dealer = "";
if (functionId.equals("TS018")) {
isFunction = true;
Pattern pattern = Pattern.compile("^(getRecord(s|Bfile)(Exe)?|getResultSetEx|executeUpdate(SameState)?Exe|prepareCallExe(RetStr)?)$");
Matcher m = pattern.matcher(method.getName());
if(m.find()) {
isSqlFunction = true;
loginUser = (LoginUser) user;
dealer = loginUser.getDealerResourceType() + "_"
+ loginUser.getDealerConnectionCode() + "_"
+ loginUser.getDealerConnectionType();
}
}
if (isFunction) {
if(isSqlFunction) {
log.info("[DB]\t[functionId:]" + functionId + "\t[dealer:]" + dealer
+ "\t[sql:]" + param[param.length-1] + "\t[begin]");
}
}
Object result = proxyMethod.invokeSuper(obj, param);
if (isFunction) {
if(isSqlFunction) {
log.info("[DB]\t[functionId:]" + functionId + "\t[dealer:]" + dealer
+ "\t[sql:]" + param[param.length-1] + "\t[end]");
}
}
return result;
}
}
发表评论
-
java基础框架技巧
2012-07-14 16:43 01.使用泛型 -
ANT自动发布
2012-01-18 16:18 0<?xml version="1.0&q ... -
Property文件读取
2012-01-10 15:54 0public class Properties { ... -
eclipse 实用插件收藏
2011-12-07 11:30 738SVN插件 http://subclipse.tigris ... -
收藏 图片缩放处理
2011-11-04 15:55 0package graphicsTest; imp ... -
MS932转换SHIFT_JIS特殊字符处理
2011-11-03 15:56 0StringBuffer strBuf = new Strin ... -
SAX解析XML
2011-11-03 15:22 595// イニシャルコンテキスト取得 Context ... -
JAVA并发编程笔记
2011-08-29 09:12 01.多进程技术不是也 ... -
设计模式串烧
2011-08-15 15:45 01.简单工厂模式 a工厂模式分为简单工厂模式,工厂方法模式, ... -
再读JAVA编程思想笔记
2011-08-04 14:52 0http://caterpillar.onlyfun.net/ ... -
SWT BROWSER 爬虫代码
2011-05-20 16:05 0package com.pceggs.lucky.rob ... -
处理中文文件名下载问题
2011-05-18 10:06 583String filePath = super.rea ... -
国际化
2011-04-08 13:43 0package xfile.util; impor ... -
Robot自动踩人气(二)
2011-04-08 13:38 0com.pceggs.lucky.ui包 pa ... -
Robot自动踩人气(一)
2011-04-08 13:23 0com.pceggs.lucky.robot包 p ... -
工具类方法收集
2011-04-08 13:18 0/** * 获取该资源 ... -
弹出文件选择框
2011-03-29 14:19 689<input type="text" ... -
收藏 TOMCAT优化
2011-03-26 13:42 583在Tomcat和应用程序进行了压力测试后,如果您对应用程序的性 ... -
Java中用Robot类控制鼠标和键盘的方法
2011-03-24 13:03 0Java中用Robot类控制鼠标和键盘的方法 时间:2011- ... -
GET方式传参防止乱码
2011-03-15 16:58 772方案一 ================ [页面传参方式:] ...
相关推荐
使用CGLIB编写的Spring的拦截器 非常使用的哦
该资源里面有Jdk动态代理,cglib动态代理,反射和拦截器(链)示例,里面也有所需要的jar包,下载下来导入eclipse即可运行,有问题请问我
* 代理类需要实现 MethodInterceptor(方法拦截器) * * 1.创建被代理类、创建代理类、代理类内部聚合被代理类 * 2.创建返回代理类实例方法 Enhancer.create(object.getClass(), this); * (1.创建工具类,2....
Spring-AOP-利用java中的动态代理和Spring的拦截器做到AOP
XWork 拦截器体系 输入校验 国际化支持 Webwork2 in Spring Struts in Spring 数据持久层 事务管理 持久层封装 JDBC Hibernate in Spring ibatis in Spring Aspect Oriented Programming AOP 概念 ...
java.lang.Instrument包是在 JDK5引入的,程序员通过修改方法的字节码实现动态修改类代码 。... (1) 代理 (agent) 是在你的main方法前的一个拦截器 (interceptor),也是在main方法执行之前,执行agent的代码。 a
Spring mvc 配置: WEB/INF/springmvc-servlet.xml//编码过滤器//静态资源忽略//AOP代理方式设定//拦截器配置//cglib动态代理
201 <br>10.3.2 开发前置通知(Before advice)对象:FBI 201 <br>10.3.3 装配拦截器和Bean. 202 <br>10.3.4 测试和运行... 203 <br>10.3.5 AOP简介和相关概念... 204 <br>10.4 开发 Spring 2.0 AOP...
该课程是最新的Spring5版本包含:STS工具、IoC、DI思想、Spring测试框架、bean的实例化、作用域、初始化、生命周期、静态代理、字节码加载原理、JDK动态代理和原理、CGLIB动态代理和原理、拦截器思想、AOP思想和开发...
spring 3.2.0+hibernate 4.1.6+struts2整合需要的jar包 的目录 ...文件上传,拦截器,操作的数据库是Mysql, 如果操作的数据库是oracle或者是其他, 将mysql-connector-java-5.1.20-bin.jar 改为相应的驱动包即可。
特征API兼容的代理工厂提供者: JDK的标准代理CGLIB实施ProxyToys提供了充当工厂的玩具集合,用于创建“特殊”代理,例如: 装饰器-用于简单的类似于AOP的链接方法拦截委托-对于可能具有不同类型的委托对象上的方法...
10.3.3 装配拦截器和Bean 212 10.3.4 测试和运行 214 10.3.5 AOP简介和相关概念 214 10.3.6 关于java.lang.ClassCastException: $Proxy0错误的解决方法 216 10.4 开发 Spring 2.0 AOP 应用 219 10.4.1 使用aop 标签...
-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器--> <value>transactionInterceptor <!-- 此处可增加其他新的Interceptor --> <!--定义DAO Bean ,由于BeanNameAutoProxyCreator自动...
13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与视图解析 13.5.1. 视图解析器(ViewResolver) 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个视图 13.6. 本地化解析器 13.6.1. ...
13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与视图解析 13.5.1. 视图解析器(ViewResolver) 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个视图 13.6. 本地化解析器 13.6.1. ...
13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与视图解析 13.5.1. 视图解析器 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个视图 13.6. 本地化解析器 13.6.1. AcceptHeaderLocaleResolver 13.6.2....
13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与视图解析 13.5.1. 视图解析器 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个视图 13.6. 本地化解析器 13.6.1. AcceptHeaderLocaleResolver 13.6.2....
13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与视图解析 13.5.1. 视图解析器 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个视图 13.5.3.1. RedirectView 13.5.3.2. redirect:前缀 13.5.3.3. forward:...