Spring + tomcat jndi配置

  Spring+tomcat jndi的配置有几种方式:

一、jndi只供应用本身使用

  1. spring配置加上如下片段   

<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/mysql"/>
  或者
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
  <property name="jndiName" value="java:comp/env/jdbc/mysql"></property> 
</bean>

  2. 在项目的META-INFO 目录下添加context.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
  <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"
    maxActive="100" maxIdle="30" maxWait="10000" username="root" password="root"
    driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/dbname" />
</Context>

  3. 在项目web.xml加入如下片段(非必须):

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

二、 tomcat级别的全局的jndi配置

  1. spring配置不变

<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/mysql"/>
  或者
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
  <property name="jndiName" value="java:comp/env/jdbc/mysql"></property> 
</bean>

  2. 在tomcat conf目录下,修改server.xml和context.xml

  server.xml中加入如下代码

<GlobalNamingResources>
    <!-- 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="jdbc/mysql" auth="Container"
        type
="javax.sql.DataSource" username="root"
        password
="root" url="jdbc:mysql://192.168.182.130:32771/dbname"
        driverClassName
="com.mysql.jdbc.Driver" initialSize="5"
        maxWait
="5000" maxActive="120" maxIdle="5"
        validationQuery
="select 1" poolPreparedStatements="true"/> </GlobalNamingResources>

  context.xml 中加入如下代码

<ResourceLink global="jdbc/mysql" name="jdbc/mysql" type="javax.sql.DataSource" /> 

  3. 重启tomcat服务这时jndi配置结束。

  注意: 如果tomcat报Driver not foud exception,则说明tomcat 的lib目录下缺少连接数据库的驱动,根据所需驱动的不同,自行加入相应的jar包到tomcat lib目录即可。

 

 

 

posted @ 2015-11-12 09:42  飞鸟投林  阅读(809)  评论(0)    收藏  举报