日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

兼容Tomcat和Weblogic的Spring 数据源JNDI配置

發布時間:2024/4/17 javascript 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 兼容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://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"/>??
  • <?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配置的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。