ZK/操作指南/如何使用Eclipse WTP和XAMPP搭建ZK環境
為了使用Eclipse作為IDE開發使用ZK框架的web應用程式,通常也需要資料庫訪問。本操作指南展示了在Eclipse與ZK、XAMPP、MySQL、Tomcat和JDBC一起執行的環境中建立環境的基本步驟。通常發生的錯誤將被描述。所述安裝在Windows 2000機器上執行。
以下軟體包應下載
- ZK: ZK庫 (ZK主頁);
- Eclipse & WTP: Eclipse IDE與Web Tools Platform的組合(WTP也可作為Callisto Project的一部分單獨獲得)(Web Tools Platform主頁);
- XAMPP: 帶有MySQL、phpMyAdmin的Apache發行版(XAMPP主頁);
- Tomcat: Tomcat伺服器/容器(XAMPP附加元件);
- JDBC聯結器: 將JDBC(Java資料庫連線)呼叫轉換為MySQL協議的轉換器(MySQL Connector/J 3.1.14,不是5.0.4).
如何在Eclipse中設定ZK將在如何使用Eclipse WTP搭建ZK環境中討論。
Apache發行版安裝在${XAMPP}資料夾中。Tomcat伺服器位於${XAMPP}/tomcat資料夾中:${TOMCAT}。MySQL聯結器放置在${TOMCAT}/common/lib資料夾中。Eclipse會自動找到此資料夾中的所有jar檔案,因此無需將其手動新增為專案的外部jar檔案。Eclipse中的專案在${APPL}資料夾中執行(可以位於Tomcat容器之外)。
與[1]相反,有關資料庫連線的資訊將儲存在以下檔案中:${APPL}/META-INF/context.xml和${APPL}/WEB-INF/web.xml。Eclipse添加了“更新Web模組MyProject的根上下文”選項,該選項在“在伺服器上執行”時使用此資訊[Alt+Shift 執行,執行].
在${APPL}/WEB-INF/web.xml中,應在<web-app>鍵下新增以下引用
<!-- JDBC -->
<resource-ref>
<description>
Resource reference to a factory for java.sql.Connection
instances that may be used for talking to a particular
database that is configured in the server.xml file.
</description>
<res-ref-name>jdbc/nicedatabasename</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
並且${APPL}/META-INF/context.xml應具有以下內容
<Context path="/MyProject" docBase="MyProject"
debug="5" reloadable="true" crossContext="true">
<Resource name="jdbc/nicedatabasename"
username="youknow" password="secretexceptifcalledsecret"
url="jdbc:mysql://:3306/actualdatabasename"
auth="Container" defaultAutoCommit="false"
driverClassName="com.mysql.jdbc.Driver" maxActive="20"
timeBetweenEvictionRunsMillis="60000"
type="javax.sql.DataSource"/>
可能會出現錯誤接連不斷的錯誤。這些是常見的錯誤。錯誤按一定的順序出現。如果出現有關空JDBC驅動程式的錯誤,則意味著對web.xml檔案中的資源的引用已正確找到。如果出現有關字元集的錯誤,則意味著找到了JDBC驅動程式。
有關錯誤名稱的錯誤
javax.naming.NameNotFoundException: Name **** is not bound in this Context
當web.xml中的<resource-ref>與context.xml中的資源名稱不相同時,就會發生此錯誤。
有關空JDBC驅動程式的錯誤
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
此錯誤可能與使用的Tomcat伺服器版本有關。5.5版本使用上述語法。5.0版本喜歡帶有ResourceParams元素的語法
<Resource name="jdbc/nicedatabasename" auth="container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/nicedatabasename">
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://:3306/actualdatabasename?autoReconnect=true</value>
</parameter>
</ResourceParams>
Tomcat伺服器可能需要重新啟動。
有關使用的字元集的錯誤
java.sql.SQLException: Unknown initial character set index ’48’ received from server. Initial client character set can be forced via the ‘characterEncoding’ property.
可能是從www.mysql.org下載的MySQL Connector/J JDBC軟體版本5.0.4存在錯誤。這不是Eclipse或QuantumDB問題。如果降級到MySQL Connector/J JDBC軟體版本3.1.14,則該問題將得到解決。
啟動MySQL伺服器(作為服務) - 不是使用[Win+X] & “services.msc”,而是使用一個快捷方式,其目標為
- %windir%\system32\net.exe start "MySQL Server"
“MySQL Server”是服務在“services.msc”中的名稱。屬性“start”和“stop”被識別。Tomcat伺服器可以直接從Eclipse啟動,不需要快捷方式。
有關包含在XAMPP中的MySQL伺服器啟動的資訊儲存在${XAMPP}/mysql/bin/my.cnf中。在Windows中,預設情況下不能編輯*.cnf。開啟一個命令提示符視窗,並透過“edit my.cnf”進行編輯。字元集可以在元素[mysqld](伺服器)、[mysql]、[client]下新增或更改。phpMyAdmin工具可用於透過GUI介面中的編輯框執行此操作。
[1]. “使用Eclipse Web Tools Project建立Web應用程式”,Eclipse Developer's Journal,作者Boris Minkin。
[2]. “MySQL 5.0參考手冊”。
[3]. “使用Eclipse開發ZK應用程式”,ZK小談,作者Andrew Ho