`

TOMCAT使用笔记

阅读更多
  1.  配置数据源的WEB项目,把数据库驱动放到WAR包里是没有用的,需要放在tomcat-5.0.28\common\lib里。因为数据库联接的资源是在tomcat服务器启动的时候加载的。 (补充:dbcp数据源需要将数据库驱动放到tomcat-5.0.28\common\lib里,配置jndi数据源可以将驱动放到程序包里
  2. 补充上面一条,在开发的时候可以将驱动放到程序的类库里,因为要使用里面的驱动和其他类,但是发布的时候就要将程序中的驱动包删除,这样保证在tomcat下不会出现数据库驱动的ClassCaseException异常现象。比如你取得Oracle.sql.BLOB的时候,使用语句Oracle.sql.BLOB blob = rs.getBlob(1);的时候。
  3. 配置数据源的时候数据源的名字要么都叫
    xml 代码
    1. <Resource auth="Container" name="jdbc/dsthis" type="javax.sql.DataSource"/>  

    要么都叫
    ·
    xml 代码
    1. <Resource auth="Container" name="dsthis" type="javax.sql.DataSource"/>  

    保证·web.xml里引用名
    xml 代码
    1. <resource-ref>  
    2.     <res-ref-name>dsthis</res-ref-name>  
    3.     <res-type>javax.sql.DataSource</res-type>  
    4.     <res-auth>Container</res-auth>  
    5. </resource-ref>  

    和上面的声明的名字,还有程序里使用的名字一样就行了。
    ·
    java 代码
    1. DataSource ds = (DataSource) new InitialContext().lookup("java:comp/env/dsthis");   
    就是带点的行的位置都用dsthis  或者都用jdbc/dsthis.
分享到:
评论
3 楼 xiaoxin 2008-06-16  
我看你比我研究的有道理
2 楼 form_rr 2008-06-11  
再次谢谢 xiaoxin .问题解决!
把项目下的oracle驱动程序包删除即可!
问题我觉得是两个ClassLoader引起的.
tomcat\common\lib的ClassLoader和
项目\lib的ClassLoader不能互访.
这也是java虚拟机本身的限制!
1 楼 form_rr 2008-06-11  
谢谢!我被tomcat困扰好久了.
直接写Class.ForName()没有问题,用tomcat的jndi就爆ClassCaseException.
先试试

相关推荐

Global site tag (gtag.js) - Google Analytics