配置环境: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 代码
- package app;
- import java.sql.*;
- import javax.naming.*;
- import javax.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;
- }
- }
- }
- */
- import javax.naming.Context;
- import javax.naming.InitialContext;
- import javax.sql.DataSource;
- public class dbManager
- {
- final static private boolean VERBOSE = true; //打印控制台控制
- //static Logger logger = Logger.getLogger(dbManager.class.getName());
- private Context initCtx = null;
- private Context ctx = null;
- private DataSource ds = null;
- private long timeout = 5000;
- public dbManager()
- {
- try
- {
- initCtx = new InitialContext();
- //init context,read config web.xml
- if (initCtx == null)
- {
- throw new Exception("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)
- {
- throw new Exception("Look up DataSource Failed!");
- }
- }
- catch (Exception e)
- {
- log(e, "Can’t get the Context!");
- }
- }
- public synchronized Connection getConnection() {
- //get connection and set to delay time
- long startTime = new java.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 ( (new java.util.Date().getTime() - startTime) >= timeout) {
- log("Connection timeout!");
- break;
- }
- }
- return con;
- }
- private Connection newConnection() {
- Connection con = null;
- try {
- con = ds.getConnection();
- if (con == null) {
- throw new Exception("Create Connection Failed!");
- }
- }
- catch (Exception e) {
- log("Create Connection Failed!");
- System.out.println(e.getMessage());
- }
- return con;
- }
- public synchronized void freeConnection(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
- ************************************/
- private void log(String s)
- {
- if (VERBOSE)
- {
- System.out.println(new java.util.Date() + ":" + s);
- //logger.info(new java.util.Date()+s);
- }
- }
- private void log(Throwable e, String msg)
- {
- System.out.println(new java.util.Date() + ": " + msg);
- }
- }
triman.rar
描述:
eclipse+mysql+tomcat配置JNDI实现例子
下载
文件名:
triman.rar
文件大小:
1007 KB