tomcat中配置servlet.xml的JNDI或JDBC连接数据库
一. JNDI
1. tomcat环境
找到X:xxx......apache-tomcat-6.0.39confserver.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:applicationmyserverWebContent" 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>
2.weblogic环境
在eclipse的项目中配置数据dataSource如下:
<!-- 数据源定义一 --> <bean id="myDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>jdbc/platformproxy</value> <!-- 不需要带java: --> </property> </bean>
二. jdbc
直接在eclipse的项目中配置数据dataSource如下:
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@192.168.1.8:1521:orcl" /> <property name="username" value="myusername" /> <property name="password" value="mypassword" /> </bean>
如果连接的数据源为双数据源时如下:
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST=(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.8)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.8)(PORT = 1521)))(LOAD_BALANCE = yes)(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = zswx) (FAILOVER_MODE = (TYPE = SELECT) (METHOD = BASIC) (RETRIES = 180) (DELAY = 5) ) ) )" /> <property name="username" value="U_IPCIS_POLICY_PLATFORM" /> <property name="password" value="11" /> </bean>
注意url的value,从别的地方复制过去只要是一行(不要换行)即可,不然可能会报错