先说一下关于tomcat 5.5.9的问题,由于tomcat5.5.9没有带上admin包,必须要自己下,下完以后复制到对应的目录。另外还有一重要步骤:把root下的那个 admin目录给删掉……或者把那个admin\index.html改名或删掉……这个问题折磨了我半个多小时,就是找不出来admin的配置页面在哪儿……
很奇怪,root\admin目录里没有任何jsp/html文件,让我几乎以为下漏了东西。其实似乎是如果把那个admin目录删掉, tomcat自动指到了另外一个地方。进入以后查看,可以发现其实/admin指向/server/webapps/admin,但是那里也并没有 jsp/html文件,真正的地址在:/src/jakarta-tomcat-catalina/webapps/admin……所以,大家一定要记住吧index.html给干掉……
但是成功进入了以后,我一直无法配置好jdbc/mysql的datasource……极度郁闷之下,加上旁人说最新版总是有bug的……我换回了5.0.28……
5.0.28直接进入admin就可以了,不用走那么多弯路。配置datasource有两种方法,一个就是直接到那个context(/jsp文件目录)下面的data sources配置,配置的内容基本上都很清楚(以mysql为例):
jndi name: jdbc/mysql(自己定)
data source url: jdbc:mysql://localhost/test (test是数据库名)
jdbc driver class: com.mysql.jdbc.driver (记得把驱动拷到common\lib)
max. active connections: 最大活动连接,默认4,不能用于产品发布,发布的时候,改成1000左右比较好,不过调试的时候没有必要。
max. idle connections: 最大空闲连接,默认2。
max. wait for connection: 等待连接时间,默认5000。
validation query: 验证用查询语句,非必填。
然后save, commit。
这里有一个bug. 一般最好是在所有修改完成以后commit。如果先commit再进行其他的选择修改,一般来说会直接退出界面……我一般都是save/commit/log out……
然后在程序中引用:
initialcontext ctx=new initialcontext();
datasource ds=(datasource)ctx.lookup(java:comp/env/jdbc/mysql); // jdbc/mysql是jndi name
con = ds.getconnection();
其他的就一样用了,注意返回前要手动关闭数据库连接,否则很快就会连接数耗尽。
另外一种方法就是在全局的resource里的datasource进行设置,然后在context中的resource links里面引用。
resource link设置方法如下:
name: jdbc/mysql(可以与全局名不同,比如jj,其他不变即可,相应的,ctx.lookup中要改为java:comp/env/jj)
global: jdbc/mysql(全局resource里data source的名字)
type: javax.sql.datasource
在这里《eclipse从入门到精通》的方法有一些问题:可以直接在resource link里面设置,并不用直接去更改server.xml。它前面用写server.xml的方法设置不用deploy的context,tomcat确认更新以后就把这个context写到其他地方了,可以在host.contest里面直接修改了,增加resource link。
《e》书里面手写server.xml达到增加非tomcat目录context效果的语句如下:
在server.xml文件最末尾的之前插入:
path=/hello
reloadable=true
docbase=c:\eclipse\workspace\myweb\hello
workdir=c:\eclipse\workspace\myweb\bin>
其实也可以直接在admin界面里面tomcatserver.service.host里面直接添加(注意将use naming设为true,否则会出现name java:comp is not bound in this context异常),但是这样的话,无法规定servlet输出的目录(workdir)。可以权衡后使用。个人认为直接设置admin界面还是挺方便的。
