用红字标出各配置名称的不同,以便理解。
官网地址:http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html
0. Introduction
Versions of MySQL and JDBC drivers that have been reported to work:
MySQL 3.23.47, MySQL 3.23.47 using InnoDB,, MySQL 3.23.58, MySQL 4.0.1alpha
Connector/J 3.0.11-stable (the official JDBC Driver)
mm.mysql 2.0.14 (an old 3rd party JDBC Driver)
Before you proceed, don't forget to copy the JDBC Driver's jar into $CATALINA_HOME/lib .
1. MySQL configuration
Ensure that you follow these instructions as variations can cause problems.
Create a new test user, a new database and a single test table. Your MySQL user must have a password assigned. The driver will fail if you try to connect with an empty password.
mysql> GRANT ALL PRIVILEGES ON *.* TO javauser@localhost
-> IDENTIFIED BY 'javadude' WITH GRANT OPTION;
mysql> create database javatest
;
mysql> use javatest
;
mysql> create table testdata
(
-> id int not null auto_increment primary key,
-> foo varchar(25),
-> bar int);
Note: the above user should be removed once testing is complete!
Next insert some test data into the testdata table.
mysql> insert into testdata values(null, 'hello', 12345);
Query OK, 1 row affected (0.00 sec)
mysql> select * from testdata;
+----+-------+-------+
| ID | FOO | BAR |
+----+-------+-------+
| 1 | hello | 12345 |
+----+-------+-------+
1 row in set (0.00 sec)
mysql>
2. Context configuration
Configure the JNDI DataSource in Tomcat by adding a declaration for your resource to your Context .
For example:
debug="5" reloadable="true" crossContext="true">
maxActive="100" maxIdle="30" maxWait="10000"
username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/javatest
?autoReconnect=true"/>
自已加入说明: 例:Context path="/x" docBase="F:/我的文档/jsp" debug="0" / 怎么理解?
path的值是用于浏览器防问的URL,比如上例中就可以通过/x访问,完全URL:
3. web.xml configuration
Now create a WEB-INF/web.xml for this test application.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
MySQL Test App
DB Connection
jdbc/TestDB
javax.sql.DataSource
Container
4. Test code
Now create a simple test.jsp page for use later.
select id, foo, bar from testdata
DB TestResults
Foo ${row.foo}
Bar ${row.bar}
That JSP page makes use of JSTL 's SQL and Core taglibs. You can get it from Sun's Java Web Services Developer Pack or Jakarta Taglib Standard 1.1 project - just make sure you get a 1.1.x release. Once you have JSTL, copy jstl.jar and standard.jar to your web app's WEB-INF/lib directory.
Finally deploy your web app into $CATALINA_BASE/webapps either as a warfile called DBTest.war or into a sub-directory called DBTest
Once deployed, point a browser at http://localhost:8080/DBTest /test.jsp to view the fruits of your hard work.
===========================
从上例中可以看到:
1.真实的连接数据库,在context.xml中的 要和web.xml中的jdbc/TestDB 相对即可。在使用时,也用 dataSource="jdbc/T estDB " 就行了,而不是使用真实的连接 jdbc/javatest
3. 在 中,path的值是用于浏览器防问的URL,比如上例中就可以通过/x访问,完全URL:
有一点不是很明白,如果docBase不写目录,直接写名字代表什么呢?从网上搜索了一下:
如:
ROOT 是相对于前面 中的 appBase 的,即它应该是
/home/www/html 中的一个目录。当然你可以用完全的目录名,这样就不是相对 appBase 而言的了,比如说: 这个配置与你的配置效果一样。