Tomcat6配置JNDI(Oracle数据库)

1. 配置Oracle JDBC Driver。将classes111.jar(Oracle8i)或classes12.jar(Oracle9i)或ojdbc14.jar(Oracle10g)拷贝到$CATALINA_HOME/lib(或Windows系统中%CATALINA_HOME%\lib)目录下。 

注意:老版本的Drivers可能是*.zip或者是*.jar的文件,Tomcat只会使用$CATALINA_HOME/lib目录下的*.jar文件,因此需要把classes111.zip或classes12.zip文件rename为classes111.jar以及classes12.jar文件,因为jar文件就是zip文件,所以没有必要去unzip这些zip文件再打成jar文件。 

另外:Oracle9i及以后的版本应该使用oracle.jdbc.OracleDriver而不建议使用oracle.jdbc.driver.OracleDriver,因为Oracle已经声明oracle.jdbc.driver.OracleDriver已经不再建议使用,并且Oracle也将不会提供后续主要版本对于oracle.jdbc.driver.OracleDriver的服务。 

2. 修改Tomcat的server.xml文件,主要内容如下 

<Context docBase="niniapp" path="/niniapp" reloadable="true" source="org.eclipse.jst.jee.server:qprlzy"> 
       <Resource name="JNDI_NINIAPP" auth="Container" type="javax.sql.DataSource" 
               maxActive="100" maxIdle="30" maxWait="10000" 
               username="nini" password="nini" driverClassName="oracle.jdbc.driver.OracleDriver" 
               url="jdbc:oracle:thin:@192.168.2.9:1521:orcl"/> 
</Context> 

在这里添加的数据源的名字为JNDI_NINIAPP,username是数据库用户名;password是数据库中该用户名对应的密码;driverClassName是数据库驱动;maxIdle是最大空闲数,即数据库连接的最大空闲时间,超过空闲时间,数据库连接将被标记为不可用,然后被释放掉,如果设为0,则表示无限制;maxActive是连接池中最大数据库连接数,如果设为0,则表示无限制;maxWait是最大建立连接等待时间,如果超过次时间就会报异常,如果设为-1,则表示无限制。 

我师父给我推荐的blog上也提到在可以这样写: 

<Context docBase="niniapp" path="/qprlzy" reloadable="true" source="org.eclipse.jst.jee.server:qprlzy"> 
       <Resource name="JNDI_NINIAPP" auth="Container" type="javax.sql.DataSource"/> 
     <ResourceParams name="JNDI_NINIAPP"> 
     <parameter> 
     <name>factory</name> 
       <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> 
      </parameter> 
      <parameter> 
       <name>driverClassName</name> 
       <value>oracle.jdbc.driver.OracleDriver</value> 
      </parameter> 
      <parameter> 
       <name>url</name> 
       <value>jdbc:oracle:thin:@192.168.2.9:1521:orcl</value> 
      </parameter> 
      <parameter> 
       <name>username</name> 
       <value>nini</value> 
      </parameter> 
      <parameter> 
       <name>password</name> 
       <value>nini</value> 
      </parameter> 
      <parameter> 
       <name>maxActive</name> 
       <value>20</value> 
      </parameter> 
      <parameter> 
       <name>maxIdle</name> 
       <value>10</value> 
      </parameter> 
      <parameter> 
       <name>maxWait</name> 
       <value>10000</value> 
      </parameter>                                         
     </ResourceParams> 
     <ResourceLink global="JNDI_NINIAPP" name="JNDI_NINIAPP" type="javax.sql.DataSource"/> 
</Context> 

我试过了,两种写法都可以成功。当然,我看还有通过Tomcat的web应用管理界面(Tomcat Web Server Administration Tool)来配置JNDI的方法,不过我没有试验过哈。 

3. 有人说还要配web.xml,我不用配就OK,有哥们说如果不进行一下配置的话,Tomcat4配置连接池就会失败,这是Tomcat4的bug吗?偶不关心啦!不过如果要配置的话,则需要在E;\niniapp\WEB\WEB-INF\web.xml中加入如下内容: 

<web-app> 
  <resource-ref> 
     <description>Oracle Datasource example</description> 
     <res-ref-name>jdbc/myoracle</res-ref-name> 
     <res-type>javax.sql.DataSource</res-type> 
     <res-auth>Container</res-auth> 
  </resource-ref> 
</web-app> 

其中,res-ref-name是数据源名字,与上面server.xml中所配置的属性name的值。 

4. 代码样例: 

Context initContext = new InitialContext(); 
Context envContext  = (Context)initContext.lookup("java:/comp/env"); 
DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle"); 
Connection conn = ds.getConnection();

猜你喜欢

转载自xiaowei-qi-epro-com-cn.iteye.com/blog/1993422