|
这个主题共有 5 回复 / 1 页 [
]
|
|
|
|
|
|
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; } }
请问下,我这样取连接有问题么?为什么感觉用了连接池,比没用连接池更慢啊 只有单个进程在取连接
|
|
|
|
|
|
re:proxool连接池
|
发表: 2007年05月18日 09:44
|
回复
|
|
另外问下log4j为什么 static Logger logger = Logger.getLogger(DB.class);
而不声明一个static getLogger的方法 这样别人程序里直接用Logger.getLogger(DB.class)不就行么? 请指点下迷津,万分感谢
|
|
|
|
|
|
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方法了
|
|
|
|
|
|
re:proxool连接池
|
发表: 2007年05月25日 16:02
|
回复
|
|
配了连接池速度是快点 给tomcat配的连接池,对一个表查询1k次. 直接用jdbc一般是20秒左右 用了连接池在2秒左右
应用程序 用ant运行 直接用jdbc一般是35秒左右 用连接池在7秒左右
直接用java class-name运行 jdbc是30多毫秒 - - 连接池得在命令行里+classpath,不然报错,classpath太长了就没测
|
|
|
|
|
|
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.
有哪位达人知道确切答案 指点下么
|
|
|
|
|
|
回复: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这类参数是为了更准确的描述出你出错的位置
|
|
|
|