配置环境:Tomcat5.5、MySQL4.1、mysql-connector-java-5.0.0-beta、commons-dbcp-1.2.1、JDK1.5以上的“东东”在网上都能够下到的。
然后在D:\Tomcat5.5\webapps\新建目录DBtest文件夹,DBtest下建这样几个目录:WEB-INF、META-INF,在WEB-INF下创建两个文件夹和两个文件分别为classes、lib、web.xml、Test.jsp,在META-INF下创建context.xml(为什么要创建这个文件我也不太清楚,哪位高手知道还请多指教)
接下来就要把JDBC驱动程序mysql-connector-java-5.0.0-beta和commons-dbcp-1.2.1解压,分别将解压后的.jar文件分别复制到D:\Tomcat5.5\common\lib下,以上工作做完就可以进行连接池的配置了。
1、配置D:\Tomcat 5.5\conf\server.xml在server.xml中的中添加如下配置信息:
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
password="yang"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://localhost:3306/math"
maxActive="4"/>
注:name是连接池的名字可任取,type,是数据源的类型,driverClassName是驱动程序的类名好像得这么写,url是数据库的路径math为数据库名。
2、配置D:\Tomcat 5.5\webapps\DBtest\WEB-INF\web.xml在中加入如入信息
DB Connection
Test
javax.sql.DataSource
Container
注:其中的res-ref-name必须和前面的连接池名相同。
3、配置D:\Tomcat 5.5\webapps\DBtest\META-INF\context.xml全部内容如下
debug="5"
reloadable="true"
crossContext="true">
注:path是工作区的路径,ResourceLink name和global好像都得和前面的连接池的名字相同,这里的global有什么用我也不太清楚啦,不好意思,嘻嘻!!
java 代码
packageapp;
importjava.sql.*;
importjavax.naming.*;
importjavax.sql.DataSource;
/*
public class dbManager
{
public static synchronized Connection getConnection() throws Exception
{
try
{
Context initctx = new javax.naming.InitialContext();
Context envctx = (Context)initctx.lookup("java:comp/env");
DataSource ds = (DataSource)envctx.lookup("jdbc/Test");
return ds.getConnection();
}
catch (Exception ex)
{
throw ex;
}
}
}
*/
importjavax.naming.Context;
importjavax.naming.InitialContext;
importjavax.sql.DataSource;
publicclassdbManager
{
finalstaticprivatebooleanVERBOSE =true;//打印控制台控制
//static Logger logger = Logger.getLogger(dbManager.class.getName());
privateContext initCtx =null;
privateContext ctx =null;
privateDataSource ds =null;
privatelongtimeout =5000;
publicdbManager()
{
try
{
initCtx =newInitialContext();
//init context,read config web.xml
if(initCtx ==null)
{
thrownewException("Initial Failed!");
}
ctx = (Context) initCtx.lookup("java:comp/env");
//find "jdbc/SqlServerDB" object this configruation in the SERVER.XML of Tomcat
if(ctx !=null)
{
ds = (DataSource) ctx.lookup("jdbc/Test");
}
if(ds ==null)
{
thrownewException("Look up DataSource Failed!");
}
}
catch(Exception e)
{
log(e,"Can’t get the Context!");
}
}
publicsynchronizedConnection getConnection() {
//get connection and set to delay time
longstartTime =newjava.util.Date().getTime();
Connection con =null;
while(con ==null) {
con = newConnection();
if(con !=null) {
//log("Create New Connection!");
break;
}
try{
log("连接超时,重新连接,等待"+ timeout +"ms");
wait(timeout);
}
catch(InterruptedException e) {
log(e,"连接超时!");
}
if( (newjava.util.Date().getTime() - startTime) >= timeout) {
log("Connection timeout!");
break;
}
}
returncon;
}
privateConnection newConnection() {
Connection con =null;
try{
con = ds.getConnection();
if(con ==null) {
thrownewException("Create Connection Failed!");
}
}
catch(Exception e) {
log("Create Connection Failed!");
System.out.println(e.getMessage());
}
returncon;
}
publicsynchronizedvoidfreeConnection(Connection conn,
Statement stmt,
PreparedStatement pstmt) {
try{
//close Statement
if(stmt !=null) {
stmt.close();
stmt =null;
//log("Close Statement......");
}
//close PreparedStatement
if(pstmt !=null) {
pstmt.close();
pstmt =null;
//log("Close PreparedStatement......");
}
}
catch(Exception e) {
System.out.println(e.getMessage());
}
try{
//close Connection
if(conn !=null) {
conn.close();
conn =null;
//log("Close Connection......");
}
}
catch(SQLException e) {
log(e,"释放资源出错!");
}
}
/************************************
* write log file.
* @param s String
************************************/
privatevoidlog(String s)
{
if(VERBOSE)
{
System.out.println(newjava.util.Date() +":"+ s);
//logger.info(new java.util.Date()+s);
}
}
privatevoidlog(Throwable e, String msg)
{
System.out.println(newjava.util.Date() +": "+ msg);
}
}
triman.rar (1007.4 KB)
描述: eclipse+mysql+tomcat配置JNDI实现例子
下载次数: 130
分享到:
2007-06-10 11:12
浏览 5059
评论
2 楼
like1988
2012-01-05
谢谢分享!!!
1 楼
linxuewei
2007-06-20
正需要