`
linhao315
  • 浏览: 29265 次
  • 性别: 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应用服务器,它提供了丰富...

    Spring框架技术

    5. 最后,配置Spring应用上下文,声明JOTM事务管理器,并将其与数据源关联,这样Spring就能在调用addTopic()方法时自动管理JTA事务。 ```xml &lt;bean id="transactionManager" class="org.springframework....

    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