proxool连接池

07-05-18 gougou3250
配置文件的内容

<?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;

}

}

请问下,我这样取连接有问题么?为什么感觉用了连接池,比没用连接池更慢啊

只有单个进程在取连接

    

1
gougou3250
2007-05-18 09:44
另外问下log4j为什么

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

而不声明一个static getLogger的方法

这样别人程序里直接用Logger.getLogger(DB.class)不就行么?

请指点下迷津,万分感谢

gougou3250
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
2007-05-25 16:02
配了连接池速度是快点

给tomcat配的连接池,对一个表查询1k次.

直接用jdbc一般是20秒左右

用了连接池在2秒左右

应用程序

用ant运行

直接用jdbc一般是35秒左右

用连接池在7秒左右

直接用java class-name运行

jdbc是30多毫秒 - -

连接池得在命令行里+classpath,不然报错,classpath太长了就没测

gougou3250
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.

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

猜你喜欢
2Go 1 2 下一页