Tomcat 7中JDBC DataSources配置使用

MagicProgram發表於2011-02-24
剛剛接觸tomcat,嘗試連線MySQL資料庫,幾乎是照著tomcat 7的文件JDBC DataSources部分一步步進行,但網頁訪問時,什麼內容也沒有。大致過程如下:


1. 本地MySQL資料庫已建好,訪問TestDB.testdata表格中所有資料。


2. 建立/META-INF/context.xml,內容如下:


  testdb"

            auth="Container"

            type="javax.sql.DataSource"

            username="yourname"

            password="yourpassword"

            driverClassName="com.mysql.jdbc.Driver"

            url="jdbc:mysql://localhost:3306/TestDB"

            maxActive="8"

            maxIdle="4"/>



3. 建立/WEB-INF/web.xml,內容如下:


   

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

  version="3.0"

  metadata-complete="true">

  

    DB Connection

     jdbc/testdb

    javax.sql.DataSource

    Container

  



4. 建立test.jsp,內容如下:


try {

out.println("Begin.\n");

Context ctx = new InitialContext();

if(ctx == null)

  out.println("InitialContext failed.
");

else

  out.println("InitialContext ok.
");

DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/testdb");

if(ds == null)

  out.println("lookup failed.
");

else

  out.println("lookup ok.
");

Connection conn = ds.getConnection();

out.println("getConnection ok.
");

Statement st = conn.createStatement();

out.println("createStatement ok.
");

ResultSet rs = st.executeQuery("select * from testdata");

while(rs.next()){

out.println(rs.getString(1) + "
");

}

} catch (NamingException e) {

out.println(e.getMessage());

e.printStackTrace();

} catch (SQLException e) {

out.println(e.getMessage());

e.printStackTrace();

}

%>



5. 程式碼編寫完成,進行伺服器部署工作,瀏覽器訪問,發現了上述的問題。經過除錯,發現在執行Connection conn = ds.getConnection();這行程式碼時,會報錯:

Can't create PoolableConnectionFactory (Communications link failure the last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.)



解決方案:

修改context.xml檔案

---

url="jdbc:mysql://localhost:3306/TestDB"

+++

url="jdbc:mysql://192.168.0.78:3306/TestDB"

其中192.168.0.78為本機IP地址。



問題分析:

目前估計與mysql的設定相關,bind-address=192.168.0.78

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25432352/viewspace-687891/,如需轉載,請註明出處,否則將追究法律責任。

相關文章