`
linhao315
  • 浏览: 29341 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

    博客分类:
  • java
阅读更多
众所周知,Tomcat和Weblogic中查找JNDI的名称是不一样的,以Spring配置为例,在Weblogic中,需要这样配:
<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不需要配置。
1
2
分享到:
评论
1 楼 卧龙与凤雏 2012-03-21  
很好谢了收下了

相关推荐

    如何在spring中等价配置得到原本由jndi配置实现的数据源

    通常,在Web应用程序中,数据源常常通过Java Naming and Directory Interface (JNDI)进行管理,这允许多个应用共享同一个数据源,例如在应用服务器如Tomcat、JBoss或WebLogic中。然而,有时我们可能希望在非Web环境...

    spring 配置jndi

    - 在Java应用服务器(如Tomcat、JBoss、WebLogic等)中,你需要先配置一个JNDI数据源。这通常在服务器的管理控制台或者配置文件(如Tomcat的`context.xml`)中完成。例如,在Tomcat中,可以在`server.xml`或`...

    Spring JMS 消息处理-基于JNDI

    JNDI是一种服务,它提供了一个接口来查找和管理Java对象的名称,这些对象可以是消息队列、数据源或者其他服务。在Spring中,JNDI通常用于查找消息队列的位置,这样应用就可以通过JMS模板发送或接收消息。JNDI查找...

    Weblogic项目部署文档

    - **操作**: 在Weblogic控制台中创建名为`jndi/lms1231`的数据源。 - **步骤二**: 修改配置文件。 - **操作**: 调整`jbpm.hibernate.cfg.xml`和`spring-setting.xml`文件中的数据库连接配置为使用JNDI。 **2.4 ...

    struts资料\第三章(连接池与数据源)

    2. JNDI(Java Naming and Directory Interface):在企业级应用服务器如Tomcat或WebLogic中,数据源通常通过JNDI服务注册,以便于应用在运行时查找并使用。开发者可以在应用服务器的配置文件中定义数据源,并将它...

    mac版apache-tomcat-8.5.24.tar

    Tomcat支持Java Naming and Directory Interface (JNDI),允许你在服务器级别定义资源,如数据源,这些资源可以在Web应用中被透明地使用。 8. **与其他技术集成**: - **Spring Boot**:Tomcat常与Spring Boot...

    Spring.3.x企业应用开发实战(完整版).part2

    8.4.2 获取JNDI数据源 8.4.3 Spring的数据源实现类 8.5 小结 第9章 Spring的事务管理 9.1 数据库事务基础知识 9.1.1 何为数据库事务 9.1.2 数据并发的问题 9.1.3 数据库锁机制 9.1.4 事务隔离级别 9.1.5 JDBC对事务...

    apache-tomcat-6.0.16.rar

    Tomcat常作为嵌入式服务器被其他应用服务器如Spring Boot所使用,也可以通过像JBOSS、WebLogic这样的全功能应用服务器进行集群部署。 总结来说,Apache Tomcat 6.0.16是一个重要的Java Web应用服务器,它提供了丰富...

    Spring3.x企业应用开发实战(完整版) part1

    8.4.2 获取JNDI数据源 8.4.3 Spring的数据源实现类 8.5 小结 第9章 Spring的事务管理 9.1 数据库事务基础知识 9.1.1 何为数据库事务 9.1.2 数据并发的问题 9.1.3 数据库锁机制 9.1.4 事务隔离级别 9.1.5 JDBC对事务...

    Tomcat与Java.Web开发技术详解

    4. **JNDI和数据源**:用于管理数据库连接,提供统一的访问方式。 5. **EJB(Enterprise JavaBeans)**:在企业级应用中,EJB提供了服务,如事务管理、安全性等。 6. **JSP自定义标签库**:提高代码复用性和可读性,...

    oracle12相关jar包及配置.rar

    这需要在应用服务器的配置文件(如Tomcat的context.xml或WebLogic的weblogic.xml)中定义数据源,并在应用程序中通过`InitialContext`查找。 5. **事务管理**: Oracle数据库支持ACID(原子性、一致性、隔离性和...

    springsecurity.pdf

    配置DAO认证提供者通常需要设置数据源、SQL语句等参数,以便从数据库中获取用户信息。 #### 七、JAAS认证提供者 ##### 8.1 概览 JAAS(Java Authentication and Authorization Service)认证提供者是一种利用Java...

    2 j2ee环境搭建之SQLServer数据库.rar

    在J2EE环境中,数据源通常是通过应用服务器(如Tomcat、WebLogic或JBoss)进行管理的。对于Tomcat,你可以在`conf/server.xml`文件中配置一个数据源,如下: ```xml type="javax.sql.DataSource" ...

    springboot参考指南

    配置两个数据源 iii. 67.3. 使用Spring Data仓库 iv. 67.4. 从Spring配置分离@Entity定义 v. 67.5. 配置JPA属性 vi. 67.6. 使用自定义的EntityManagerFactory vii. 67.7. 使用两个EntityManagers viii. 67.8. 使用...

    JNDI简介_动力节点Java学院整理

    在J2EE环境中,如WebLogic、WebSphere和JBoss等,JNDI常用于查找和使用资源,如EJBs、JMS消息队列、JDBC数据源以及RMI通过CORBA的命名服务。例如,在WebLogic中查找Tuxedo连接,可以使用如下代码: ```java Context...

    java数据库连接方法.pdf

    在Spring框架中,可以使用`c3p0`或`dbcp`作为数据源,通过`Bean`配置或者Java配置来设定这些参数。 总结来说,Java通过JDBC和数据库连接池提供了高效、灵活的数据库访问方式。在实际应用中,选择合适的连接池可以...

    自己总结的学习笔记,请大家批评指正 datasource

    在IT行业中,DataSource是Java应用中的一个重要概念,特别是在企业级应用开发中,它扮演着连接数据库的关键角色。...正确理解和配置DataSource,对优化数据库操作性能、提高应用的健壮性具有重要意义。

    我的智囊团源代码part3

    6. **JNDI(Java Naming and Directory Interface)**:JNDI在J2EE中用于查找和绑定服务,如数据源或EJB。项目可能使用JNDI来获取数据库连接。 7. **JTA(Java Transaction API)**:JTA用于处理事务,确保数据的...

Global site tag (gtag.js) - Google Analytics