-
博客分类:
- java
- <bean id="baseDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
- <property name="jndiName" value="dataSource" />
- </bean>
但是在Tomcat中却是这样的:
- <bean id="baseDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
- <property name="jndiName" value="java:comp/env/dataSource" />
- </bean>
当使用Tomcat开发(速度快啊),又要部署到Weblogic时,怎么兼容就是比较头疼的问题了。当然,我们可以配置JDBC直连的方式:
- <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):
- <?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中配置:
- <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不需要配置。