生活随笔
收集整理的這篇文章主要介紹了
兼容Tomcat和Weblogic的Spring 数据源JNDI配置
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://linhao315.iteye.com/blog/1293787
眾所周知,Tomcat和Weblogic中查找JNDI的名稱是不一樣的,以Spring配置為例,在Weblogic中,需要這樣配:
Java代碼
<bean?id="baseDataSource"?class="org.springframework.jndi.JndiObjectFactoryBean"> ????????<property?name="jndiName"?value="dataSource"?/> ??</bean>?????
<bean id="baseDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"><property name="jndiName" value="dataSource" />
</bean>
但是在Tomcat中卻是這樣的:
Java代碼
<bean?id="baseDataSource"?class="org.springframework.jndi.JndiObjectFactoryBean"> ????????<property?name="jndiName"?value="java:comp/env/dataSource"?/> ??</bean>?????
<bean id="baseDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"><property name="jndiName" value="java:comp/env/dataSource" />
</bean>
當使用Tomcat開發(速度快啊),又要部署到Weblogic時,怎么兼容就是比較頭疼的問題了。當然,我們可以配置JDBC直連的方式:
Java代碼
<bean?id="baseDataSource"?????????class="org.apache.commons.dbcp.BasicDataSource"?????????destroy-method="close"> ?????????<property?name="driverClassName"?value="oracle.jdbc.OracleDriver"?/> ?????????<property?name="url"?value="jdbc:oracle:thin:@192.168.1.239:1521:dev1"?/> ?????????<property?name="username"?value="foo"?/> ?????????<property?name="password"?value="bar"?/> ?????????<property?name="initialSize"?value="2"?/> ?????????<property?name="maxActive"?value="15"?/> ?????????<property?name="testWhileIdle"?value="true"?/> ?????????<property?name="validationQuery"?value="select?1?from?dual"?/> ?????????<property?name="testOnBorrow"?value="true"?/> ??</bean>??
<bean id="baseDataSource"class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName" value="oracle.jdbc.OracleDriver" /><property name="url" value="jdbc:oracle:thin:@192.168.1.239:1521:dev1" /><property name="username" value="foo" /><property name="password" value="bar" /><property name="initialSize" value="2" /><property name="maxActive" value="15" /><property name="testWhileIdle" value="true" /><property name="validationQuery" value="select 1 from dual" /><property name="testOnBorrow" value="true" /></bean>
這樣在Tomcat和Weblogic中就都可以部署了,但是缺點也是顯而易見的,萬一要修改數據庫連接信息,就得改Spring配置!
我們可以利用Spring2.0引入的jndi-lookup內容模式,對配置進行改進(注意文件開頭引入了jee的xsd):
Java代碼
<?xml?version="1.0"?encoding="UTF-8"?> ??<beans?xmlns="http://www.springframework.org/schema/beans"?? ?????????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?? ?????????xmlns:jee="http://www.springframework.org/schema/jee"?? ?????????xsi:schemaLocation=?? ??????????????????"http:??????????????????http:??????????????????http:??????????????????http:??? ??????<jee:jndi-lookup?id="baseDataSource"?jndi-name="dataSource"?resource-ref="true"/>??
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jee="http://www.springframework.org/schema/jee" xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.0.xsd"> <jee:jndi-lookup id="baseDataSource" jndi-name="dataSource" resource-ref="true"/>
注意這里的resource-ref="true",當resource-ref屬性為true時,jndiName會被添加java:comp/env/,而這個正是Tomcat查找JNDI的地方,所以Tomcat能用!
至于Weblogic,可能是直接通過jndi-name屬性去查找JNDI了,所以也可以用。
順帶附上Tomcat7的JNDI配置,我配的是全局的,所以在%TOMCAT_HOME%\conf\context.xml中配置:
Java代碼
<Resource?name="dataSource"?auth="Container"?????????????type="javax.sql.DataSource"?driverClassName="oracle.jdbc.OracleDriver"?????????????url="jdbc:oracle:thin:@192.168.1.239:1521:dev1"?????????????username="foo"?password="bar"?maxActive="15"?maxIdle="10"?initialSize="2"?????????????testWhileIdle="true"?validationQuery="select?1?from?dual"?testOnBorrow="true"/>??
<Resource name="dataSource" auth="Container"type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"url="jdbc:oracle:thin:@192.168.1.239:1521:dev1"username="foo" password="bar" maxActive="15" maxIdle="10" initialSize="2"testWhileIdle="true" validationQuery="select 1 from dual" testOnBorrow="true"/>
我用的是oracle,驅動復制到%TOMCAT_HOME%\lib下,web.xml不需要配置。
?
======http://karidyang.iteye.com/blog/216125
總結
以上是生活随笔為你收集整理的兼容Tomcat和Weblogic的Spring 数据源JNDI配置的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。