`
QING____
  • 浏览: 2232378 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Tomcat JNDI连接池配置

    博客分类:
  • JAVA
 
阅读更多

    对于线上应用,我们通常将数据库连接交给容器,比如tomcat容器,那么开发者只需要通过JNDI的方式获取dataSource即可,不需要再关注数据库地址、密码等敏感信息,这样我们就可以简单做到配置隔离。

1)在tomcat的context.xml中增加如下配置:

    <Resource name="jdbc/localDB" 
			  factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
			  auth="Container"
              type="javax.sql.DataSource"              
			  username="root"
			  password="root"
			  driverClassName="com.mysql.jdbc.Driver"
			  description="JNID MySQL database."
			  url="jdbc:mysql://localhost:3306/test?socketTimeout=30000&amp;charsetEncoding=utf-8"
			  maxTotal="256"
			  maxIdle="10"
                          removeAbandoned="true"
                          validationQuery="SELECT 1"
			  maxWaitMillis="30000"
			  removeAbandonedTimeout="300"
			  testOnBorrow="true"
			  testOnReturn="true"			  
			  defaultAutoCommit="true" />

 

2)增加jar

    因为tomcat下或许没有相关的JDBC Connector的jar,比如mysql,此时我们需要将mysql Driver的jar复制到tomcat的lib目录下。

 

3)在spring中使用JNDI引用方式:

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

 

   对于tomcat容器而言,我们倾向于使用tomcat-jdbc-pool,官方宣称性能相对于其他pool而言更加优秀,而且它与dbcp的参数配置几乎一样,非常便于配置。不过我们可能需要将jdbc链接jar也copy到tomcat的lib目录下,否则将无法启动。

   对于jdbc的url中配置,需要注意,需要将";"使用“&amp;”转义,否则将无法正常启动;我也遇到了一个非常奇怪的错误“The reference to entity "characterEncoding" must end with the ';' delimiter”,这个错误的解决办法就是“characterEncoding=UTF-8”参数作为url的最后一个参数即可。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics