JNDI+Tomcat配置数据源的两种方式

时间:2023-01-26 19:13:56

非全局jndi配置步骤 :此种配置方式不需要在server.xml中配置数据源,而只在tomcat/conf/Catalina/localhost下的启动配置中配置即可。注意红色字体名称必须和相同。

0、需要在tomcat/common/lib下加入数据库连接的jar包

1、web.xml配置

<resource-ref>
      <description>my DB Connection</description>
      <res-ref-name>mydataSource </res-ref-name>  
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>

2、applicationContext.xml下配置

<bean id= "dataSource"
     class = "org.springframework.jndi.JndiObjectFactoryBean" >
     <property name= "jndiName"  value= "java:comp/env/mydataSource "  />
</bean>

3、在tomcat的conf下的localhost下的配置如下

<?xml version= "1.0"  encoding= "UTF-8" ?>
<Context docBase= "F:/workspace/cuapp/WebRoot"  path= "cuapp"  reloadable= "false" >
<Resource name= "mydataSource"  auth= "Container"  type= "javax.sql.DataSource"
                    url= "jdbc:oracle:thin:@192.168.2.104:1521:ora10g"
                 driverClassName= "oracle.jdbc.driver.OracleDriver"
                 password= "aa"
                 username= "aa"
                 initialSize= "2"
                 maxActive= "3"
                 maxIdle= "1"
                 minIdle= "1"
                 maxWait= "10000"
                 removeAbandoned= "true"
                 logAbandoned= "true"
                 removeAbandonedTimeout= "60"
                 timeBetweenEvictionRunsMillis= "900000"
                 minEvictableIdleTimeMillis= "1800000"
                 numTestsPerEvictionRun= "100"
                 validationQuery= "select count(0) from dual"
                 poolPreparedStatements= "true"
                 maxOpenPreparedStatements= "100" />
</Context>


全局jndi配置 :此种配置需要在server.xml中配置数据源。 

0、需要在tomcat下加入数据库连接的jar包

1、web.xml配置

<resource-ref>
     <description>my DB Connection</description>
     <res-ref-name>mydataSource </res-ref-name>   must be same as server.xml
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
</resource-ref>

2、applicationContext.xml下配置

<bean id= "dataSource"
     class = "org.springframework.jndi.JndiObjectFactoryBean" >
     <property name= "jndiName"  value= "java:comp/env/mydataSource "  />
</bean>

3、server.xml中配置为

<!-- Global JNDI resources -->
  <GlobalNamingResources>
    <!-- Test entry for  demonstration purposes -->
    <Environment name= "simpleValue"  type= "java.lang.Integer"  value= "30" />
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users -->
    <Resource name= "UserDatabase"  auth= "Container"
              type= "org.apache.catalina.UserDatabase"
       description= "User database that can be updated and saved"
           factory= "org.apache.catalina.users.MemoryUserDatabaseFactory"
          pathname= "conf/tomcat-users.xml"  />
    <Resource name= "mydataSource"  auth= "Container"  type= "javax.sql.DataSource"
                                url= "jdbc:oracle:thin:@192.168.2.104:1521:ora10g"
                            driverClassName= "oracle.jdbc.driver.OracleDriver"
                            password= "aa"
                            username= "aa"
                            initialSize= "5"
                            maxActive= "10"
                            maxIdle= "5"
                            minIdle= "2"
                            maxWait= "10000"
                            removeAbandoned= "true"
                            logAbandoned= "true"
                            removeAbandonedTimeout= "60"
                            timeBetweenEvictionRunsMillis= "900000"
                            minEvictableIdleTimeMillis= "1800000"
                            numTestsPerEvictionRun= "100"
                            validationQuery= "select count(0) from dual"
                            poolPreparedStatements= "true"
                            maxOpenPreparedStatements= "100" />
  </GlobalNamingResources>

4、tomcat/conf下localhost下的配置如下

<?xml version= "1.0"  encoding= "UTF-8" ?>
<Context docBase= "F:/workspace/cuapp/WebRoot"  path= "xj-adminportal"  reloadable= "false" >
     <ResourceLink name= "mydataSource "  global= "mydataSource "  type= "javax.sql.DataSource" />
</Context>