2010年1月6日 星期三

Tomcat - 環境配置

最近想試試看用JSP來連結MySQL,
在Tomcat的環境配置上就遇到好多問題。

首先要有JDBC驅動程式。
去MySQL官方網站下載Connector-J驅動程式(例如mysql-connector-java-5.1.10-bin.jar),把驅動程式檔案放置到系統環境變數讀得到的地方(例如Tomcat目錄下的lib資料夾,設置系統環境變數CLASSPATH到lib目錄)。

再來是設定Tomcat的組態檔。
在Tomcat目錄下的conf目錄中,有一個server.xml,裡面的參數配置大致列為如下:

<Host name="localhost" appBase="webapps" 
   unpackwars="true" autoDeploy="false" 
   xmlValidation="false" xmlNamespaceAware="false"> 
  <Context path="" docBase="/Test" 
      debug="1" reloadable="true" 
      crossContext="true">
    <Resource name="jdbc/Test" auth="Container" 
         type="javax.sql.DataSource" 
         maxactive="100" maxidle="30" maxwait="-1"
         username="userid" password="passwd" 
         driverClassName="com.mysql.jdbc.Driver"
         url="jdbc:mysql://localhost/DBName?autoReconnect=true">
  </Context>
</Host>

其中Test可以改為自己所建置的Web-app目錄(Tomcat的預設目錄是ROOT),userid為資料庫的登入帳號,passwd為資料庫的登入密碼,DBName為資料庫名稱(在此假設資料庫的設定皆已完成)。因為是在本機端測試,所以localhost就不更動;若在遠端測試,可將localhost改為host主機名稱或者IP位址。

另外需要在Web-app目錄下的WEB-INF目錄哩,新增或設定web.xml內容為如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
  <resource-ref>
    <description>DataBase Connection</description>
    <res-ref-name>jdbc/Test</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>
</web-app>
encoding的UTF-8可以改為自己網頁的預設編碼。Test改為上面所設定的目錄。
最後就是測試看能不能連資料庫。

<%@ page import="java.util.*,javax.naming.*,
                 java.sql.*,javax.sql.*"
         contentType="text/html; charset=UTF-8" %>
<%
  Context initialContext = new InitialContext();
  Context context = (Context) initialContext.lookup("java:comp/env");
  DataSource dataSource = (DataSource)context.lookup("jdbc/Test");
  Connection connection = dataSource.getConnection();
  Statement statement = connection.createStatement();
  out.println("連接成功!");
  connection.close();
%>
有看到連接成功的字出現,就代表環境配置成功,接下來可以開始撰寫真正的JSP應用服務程式。

沒有留言: