一. JNDI
1. tomcat环境
找到X:\xxx\......\apache-tomcat-6.0.39\conf\server.xml,在<Host>节点中配置如下:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="/platformproxy" docBase="C:/Users/King/Workspaces/KingTool/WebContent/" reloadable="false"> <Resource name="jdbc/platformproxy" factory="org.apache.commons.dbcp.BasicDataSourceFactory" type="javax.sql.DataSource" maxActive="50" maxIdle="10" maxWait="30" username="myusername" password="mypassword" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@192.168.1.8:1521/orcl"/> </Context> </Host>
补充说明:如果报错如下错Cannot create PoolableConnectionFactory (Io 异常: Invalid connection string format, a valid format is: "host:port:sid" ),试着把 factory="org.apache.commons.dbcp.BasicDataSourceFactory"删掉.
设置<context的reloadable为"false">,可以让项目更改java文件免重启直接生产.
在eclipse的项目中配置数据dataSource如下:
<!-- 数据源定义一 --> <bean id="myDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>java:comp/env/jdbc/platformproxy</value> <!-- 需要带java:comp/env/ --> </property> </bean>
tomcat完整的配置:
http://www.cnblogs.com/whatlonelytear/articles/7217415.html
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false"> <Context docBase="D:\application\myserver\WebContent" path="/fileupload" reloadable="false"> <Resource name="jdbc/TestDB" JNDI数据源的name,查找时用:java:comp/env/jdbc/TestDB type="javax.sql.DataSource" 数据源类型 factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" 数据源工场 driverClassName="com.mysql.jdbc.Driver" JDBC驱动类 url="jdbc:mysql://localhost:3306/test? characterEncoding=UTF-8&autoReconnectForPools=true&rewriteBatchedStatements=true&useCursorFetch=true&defaultFetchSize=20" 数据库URL地址 username="xxx" 访问数据库用户名 password="xxx" 访问数据库的密码 maxWait="3000" 从池中取连接的最大等待时间,单位ms. initialSize="10" 初始化连接 maxIdle="60" 最大空闲连接 minIdle="10" 最小空闲连接 maxActive="80" 最大活动连接 validationQuery = "SELECT 1 FROM DUAL" 验证使用的SQL语句 testWhileIdle = "true" 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除. testOnBorrow = "false" 借出连接时不要测试,否则很影响性能 timeBetweenEvictionRunsMillis = "30000" 每30秒运行一次空闲连接回收器 minEvictableIdleTimeMillis = "1800000" 池中的连接空闲30分钟后被回收 numTestsPerEvictionRun="10" 在每次空闲连接回收器线程(如果有)运行时检查的连接数量 removeAbandoned="true" 连接泄漏回收参数,当可用连接数少于3个时才执行 removeAbandonedTimeout="180" 连接泄漏回收参数,180秒,泄露的连接可以被删除的超时值 logAbandoned="true" 连接泄漏回收日志记录 /> </Context> </Host>