上面的就是老师给我们的关于数据库配置的文档,看起来好像不长,但是有几点需要特别注意,下面我就自己的理解来谈谈能关系到成败的几点,同时,将我出错的原因说明一下。
1.先看这段配置:
<Context path="/test_datasource" docBase="test_datasource" debug="5" reloadable="true" crossContext="true">
<Resource name="jdbc/myoracle" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:ora9"
username="scott" password="tiger" maxActive="80" maxIdle="20"
maxWait="-1"/>
</Context>
</Host>
切忌要记住的是,这段一定要放在server.xml中</Host>的前面。我开始放错了,放到了Host外面,就一直说驱动有问题。大多数的问题都是出在这段配置上的。path以及docBase中的量是你要部署的项目名称,path也就是说将此项目放到了webapps文件夹下面了。以前有个习惯,就是先不部署工程,只是启动tomcat,这次可吃了大亏了。因为不部署工程就找不到路径下的工程,当然一直报错了,所以,一个方面的经验有时候会耽误了做另一些相关的事情呢。Resource name可以修改,只要保证跟后面web.xml中的名称一直就可以了。对于MySQL数据库,driverClassName应该改为com.mysql.jdbc.Driver,url=jdbc:mysql://localhost:3306/test.这段对于学过JDBC的人们来说都不陌生,我就不多说了。我使用的是test数据库。这个差不多就到这里吧。
2.配置web.xml文件
难题来了,到底是哪一个呢?tomcat里面有,项目工程中也有,我开始的时候就直奔项目中的文件去了,因为server.xml没有配置好,老是出问题,才发现tomcat里面的web.xml文件,改了还是不行。其实呢,应该是项目工程中的web.xml文件,在</webapp>前面添加:
<resource-ref>
<description>Oracle Datasource</description>
<res-ref-name>jdbc/myoracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
这里需要注意一下,name要与刚才配置的server.xml中的name绝对一致。
3.将MySQL数据库连接驱动加到tomcat的lib下。
4.数据库连接:Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/myysql");
conn=ds.getConnection();
System.out.println("Connection pool connected!");
lookup中的参数我不是很清楚,只知道java:comp/env是必须有的,后面的内容就是数据源的名称,也就是上面反复提到的name。这样一来,就顺利取到了Connection了,不过因为在web.xml中配置的数据源,所以不可能只是使用Javaapplication来判断是否连接成功了。
好了,这样就成功建立了连接了,其他的操作就与普通的JDBC操作相同了。不过有一点需要注意,一定要及时关闭数据库的连接。