JiveJdon Community Forums
在线139人 Home | 论坛 | 培训咨询 | 精华 | 查搜 | 注册 | 登陆 |
首页 » 论坛 » 项目工程开发经验谈
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表
???en_US.forumThreadNext.name??? 下一主题
这个主题共有 5 回复 / 1 页 [ ]  发表新帖子  回复该主题贴
gougou3250

发表文章: 98
注册时间: 2007年05月08日 16:48
给他发消息
proxool连接池 发表: 2007年05月18日 09:42 回复
配置文件的内容
<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
<proxool>
<alias>jms1</alias>
<driver-url>jdbc:mysql://localhost/activemq</driver-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver-properties>
<property name="user" value="root" />
<property name="password" value="root" />
</driver-properties>
<maximum-connection-count>10</maximum-connection-count>
<prototype-count>2</prototype-count>
<house-keeping-sleep-time>10000</house-keeping-sleep-time>
</proxool>
</something-else-entirely>

注册连接池,和取连接的类,由于没有用到web容器,所以只能自己在类中注册

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;

import org.apache.log4j.Logger;

import org.logicalcobwebs.proxool.configuration.JAXPConfigurator;
import org.logicalcobwebs.proxool.ProxoolException;
//import org.logicalcobwebs.proxool.ProxoolFacade;
//import org.logicalcobwebs.proxool.admin.SnapshotIF;

public class DB {

static Logger logger = Logger.getLogger(DB.class);

static {
try {
Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
JAXPConfigurator.configure("pool1.xml",false);
JAXPConfigurator.configure("pool2.xml",false);
}catch(ClassNotFoundException cfe) {
logger.error("ClassNotFoundException occur");
}catch(ProxoolException pe) {
logger.error("ProxoolException occur");
}
}

public static Connection getConnection() {
Connection conn = null;
try {
conn = DriverManager.getConnection("proxool.jms1");
}catch(SQLException pe1) {
logger.error("main_DB connection failed");
try {
conn = DriverManager.getConnection("proxool.jms2");
}catch(SQLException pe2) {
logger.error("backup_DB connection failed");
}
}
return conn;
}
}

请问下,我这样取连接有问题么?为什么感觉用了连接池,比没用连接池更慢啊
只有单个进程在取连接
gougou3250

发表文章: 98
注册时间: 2007年05月08日 16:48
给他发消息
re:proxool连接池 发表: 2007年05月18日 09:44 回复
另外问下log4j为什么
static Logger logger = Logger.getLogger(DB.class);

而不声明一个static getLogger的方法
这样别人程序里直接用Logger.getLogger(DB.class)不就行么?
请指点下迷津,万分感谢
gougou3250

发表文章: 98
注册时间: 2007年05月08日 16:48
给他发消息
re:proxool连接池 发表: 2007年05月25日 14:04 回复
自问自答
static Logger logger = Logger.getLogger(DB.class);
这种方式不好,如果类比较多,创建的static logger对象就比较多
最好自己写一个static的logger类,创建一个getLogger方法来return logger实例,在其他类中直接className.getLogger().debug(...)这样来用
如果使用Spring,则不需要声明为static,默认创建的bean就是singleton.
aop还在研究中,使用AOP,好象就不用在每个类里面写logger方法了
gougou3250

发表文章: 98
注册时间: 2007年05月08日 16:48
给他发消息
re:proxool连接池 发表: 2007年05月25日 16:02 回复
配了连接池速度是快点
给tomcat配的连接池,对一个表查询1k次.
直接用jdbc一般是20秒左右
用了连接池在2秒左右

应用程序
用ant运行
直接用jdbc一般是35秒左右
用连接池在7秒左右

直接用java class-name运行
jdbc是30多毫秒 - -
连接池得在命令行里+classpath,不然报错,classpath太长了就没测
gougou3250

发表文章: 98
注册时间: 2007年05月08日 16:48
给他发消息
re:proxool连接池 发表: 2007年06月06日 17:36 回复
关于static Logger logger = Logger.getLogger(DB.class);

今天调jms的时候看到static Context ictx = null;
跟log4j的调用一样,都是使用的static,觉得自己原来的想法有问题,查了下资料
The difference is that without the static modifier, you have a Logger reference for every object in your system. This is a waste of memory and runtime resources.

有哪位达人知道确切答案 指点下么
leoyu

发表文章: 51
注册时间: 2007年01月31日 22:11
给他发消息
回复:re:proxool连接池 发表: 2007年07月10日 11:38 回复
static Logger logger = Logger.getLogger(DB.class);
这种方式不好,如果类比较多,创建的static logger对象就比较多

没错,但这个logger是相当于你当前类的变量.而传入了DB.class 这个参数,这个参数会在LOG4J中%C输出这个类路径.如果你用getRootLogger().那你可以尝试一下整个应用全局定义一个logger.我认为传入DB.class这类参数是为了更准确的描述出你出错的位置
这个主题有 5 回复 / 1 页 [ ]
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表    返回页首  返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Spring Struts
查询本论坛内 回复超过的热门帖子
快速发表回复
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com

anti spam