刚接触连接池,在网上找了下资料,发现大家都是把连接池的信息配在Tomcat的server.xml文件里面的,可不可以把配置连接池的信息配在项目里的一个.xml文件呢?由于本人对这部分了解不够,请大家举出一个简单的完整例子....谢谢!用的WEB服务器是Tomcat 5.0....
解决方案 »
- 超级小白问题,Servlet有没有调试工具?
- ExtJs的TextArea展示出来的数据显示不完整
- 请教Servlet中如何传参数呢?
- 用java打war包的程序
- 学习jsp对于servlet和javabean的理解?
- 关于checkboxlist或checkbox的变种使用
- java 对word 文件的读写问题,在线等待
- 我用一个error.jsp来显示错误信息,我想错误信息只显示exception.getMessage()的内容,但怎么总是显示一堆?
- JSP页面的一个div里插入一部分可以切换的jsp页面
- 帮忙看下这是哪里错了 那三条mysal都试过了还是报错 连接数据库试过了可以连接
- 新手请教,如何在获取radio的状态?
- 請幫我看看我這段代碼的空指針是什么原因
1.$CATALINA_HOME/conf/catalina/localhost目录下找到需要数据库连接池的程序的配置文档,此处是shopping.xml。在<Context> </Context>之间添加如下信息,声明一个数据库连接池:
<Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/mysql">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>password</name>
<value>123</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/shopdb?useUnicode=true&characterEncoding=gb2312</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>username</name>
<value>shopadm</value>
</parameter>
</ResourceParams>
这里的参数和上一种方法中添加到server.xml里的信息几乎是完全一样的。
2.在对应程序的WEB-INF下建立一个web.xml文档,添加如下信息:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
请回答阿其它兄弟也帮忙看看阿。。
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class DbConnPoolManager {
/**
* xml configuration
*/ static Log log = LogFactory.getLog( DbConnPoolManager.class );
private Configuration m_appConf = null;
//private Configuration m_appConf = null;
/**
*
*/
private BasicDataSource m_dataSource = null; private final static DbConnPoolManager m_singleton = new DbConnPoolManager(); private DbConnPoolManager() { log.info("--------初始化数据库连接池-------------"); m_appConf = ConfigManager.getInstance().getConfiguration(); Properties properties = new Properties();
try {
m_dataSource = (BasicDataSource) BasicDataSourceFactory
.createDataSource(properties);
String user = m_appConf
.getString("DBResource.DBResourceParams.user"); log.info("DBResource.DBResourceParams.user:" + user); m_dataSource.setUsername(user);
String password = m_appConf
.getString("DBResource.DBResourceParams.password");
m_dataSource.setPassword(password);
String driverClassName = m_appConf
.getString("DBResource.DBResourceParams.driverClassName");
m_dataSource.setDriverClassName(driverClassName);
String driverUrl = m_appConf
.getString("DBResource.DBResourceParams.driverUrl");
m_dataSource.setUrl(driverUrl);
String maxActive = m_appConf
.getString("DBResource.DBResourceParams.maxActive");
m_dataSource.setMaxActive(Integer.parseInt(maxActive));
String initSize = m_appConf
.getString("DBResource.DBResourceParams.initSize");
m_dataSource.setInitialSize(Integer.parseInt(initSize));
String maxIdle = m_appConf
.getString("DBResource.DBResourceParams.maxIdle");
m_dataSource.setMaxIdle(Integer.parseInt(maxIdle));
String maxWait = m_appConf
.getString("DBResource.DBResourceParams.maxWait");
m_dataSource.setMaxWait(Integer.parseInt(maxWait)); m_dataSource.getConnection(); log.info("---------获取连接-----------");
} catch (Exception e) {
//m_log.error("Exception occur, inside FilterManager()");
log.error("数据库连接池初始化异常:" + e.toString()); } } public static DbConnPoolManager getInstance() {
return m_singleton;
} /**
* 返回数据源
* @return
*/
public BasicDataSource getDataSource() {
return m_dataSource;
} public void shutDown() throws SQLException {
m_dataSource.close();
}
}
以上m_appConf 是解析xml文件类。这里用的是apache的Configuration来解析xml.(解析过程这里就不具体说明了,可根据情况自己选择)
本例中的xml配置如下:(我用的是sql server,其他数据库也类似)<?xml version="1.0"?>
<!-- XMLConfiguration for Alarm dispatchd -->
<AppConfig>
<!-- Section for database -->
<DBResource>
<dblink>jdbc/sqlserver</dblink>
<type>javax.sql.DataSource</type>
<!-- Section for Database Params -->
<DBResourceParams>
<user>sa</user>
<password>123</password>
<driverClassName>com.microsoft.jdbc.sqlserver.SQLServerDriver</driverClassName>
<driverUrl>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb</driverUrl>
<!-- Connection pool -->
<maxActive>20</maxActive>
<initSize>5</initSize>
<maxIdle>5</maxIdle>
<maxWait>60000</maxWait>
</DBResourceParams>
</DBResource>
</AppConfig>
--------------------------------------------
以上代码仅供参考,有不妥之处还望各位兄弟指点^-^
在图形界面下可以配置。会自动生成文件。
帐号admin,然后新建一个数据库连接迟,至于你在工程中培植的话,
在Tomcat 5.0\conf\Catalina\localhost新建对应的工程文件,如jndi.xml
打开并修改内容:
<?xml version='1.0' encoding='utf-8'?>
<Context displayName="jndi" docBase="jndi" path="/jndi" workDir="work\Catalina\localhost\jndi">
<Resource description="myjndi" name="jdbc/myjndi" type="javax.sql.DataSource"/>
<ResourceParams name="UserDatabase">
<parameter>
<name>factory</name>
<value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
</parameter>
<parameter>
<name>pathname</name>
<value>conf/tomcat-users.xml</value>
</parameter>
</ResourceParams>
<ResourceParams name="jdbc/myjndi">
<parameter>
<name>url</name>
<value>jdbc:odbc:webTest</value>
</parameter>
<parameter>
<name>password</name>
<value>000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>sun.jdbc.odbc.JdbcOdbcDriver</value>
</parameter>
<parameter>
<name>username</name>
<value>test</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
</ResourceParams>
</Context>