众所周知,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不需要配置。
分享到:
相关推荐
通常,在Web应用程序中,数据源常常通过Java Naming and Directory Interface (JNDI)进行管理,这允许多个应用共享同一个数据源,例如在应用服务器如Tomcat、JBoss或WebLogic中。然而,有时我们可能希望在非Web环境...
- 在Java应用服务器(如Tomcat、JBoss、WebLogic等)中,你需要先配置一个JNDI数据源。这通常在服务器的管理控制台或者配置文件(如Tomcat的`context.xml`)中完成。例如,在Tomcat中,可以在`server.xml`或`...
JNDI是一种服务,它提供了一个接口来查找和管理Java对象的名称,这些对象可以是消息队列、数据源或者其他服务。在Spring中,JNDI通常用于查找消息队列的位置,这样应用就可以通过JMS模板发送或接收消息。JNDI查找...
- **操作**: 在Weblogic控制台中创建名为`jndi/lms1231`的数据源。 - **步骤二**: 修改配置文件。 - **操作**: 调整`jbpm.hibernate.cfg.xml`和`spring-setting.xml`文件中的数据库连接配置为使用JNDI。 **2.4 ...
2. JNDI(Java Naming and Directory Interface):在企业级应用服务器如Tomcat或WebLogic中,数据源通常通过JNDI服务注册,以便于应用在运行时查找并使用。开发者可以在应用服务器的配置文件中定义数据源,并将它...
Tomcat支持Java Naming and Directory Interface (JNDI),允许你在服务器级别定义资源,如数据源,这些资源可以在Web应用中被透明地使用。 8. **与其他技术集成**: - **Spring Boot**:Tomcat常与Spring Boot...
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常作为嵌入式服务器被其他应用服务器如Spring Boot所使用,也可以通过像JBOSS、WebLogic这样的全功能应用服务器进行集群部署。 总结来说,Apache Tomcat 6.0.16是一个重要的Java Web应用服务器,它提供了丰富...
5. 最后,配置Spring应用上下文,声明JOTM事务管理器,并将其与数据源关联,这样Spring就能在调用addTopic()方法时自动管理JTA事务。 ```xml <bean id="transactionManager" class="org.springframework....
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对事务...
4. **JNDI和数据源**:用于管理数据库连接,提供统一的访问方式。 5. **EJB(Enterprise JavaBeans)**:在企业级应用中,EJB提供了服务,如事务管理、安全性等。 6. **JSP自定义标签库**:提高代码复用性和可读性,...
这需要在应用服务器的配置文件(如Tomcat的context.xml或WebLogic的weblogic.xml)中定义数据源,并在应用程序中通过`InitialContext`查找。 5. **事务管理**: Oracle数据库支持ACID(原子性、一致性、隔离性和...
配置DAO认证提供者通常需要设置数据源、SQL语句等参数,以便从数据库中获取用户信息。 #### 七、JAAS认证提供者 ##### 8.1 概览 JAAS(Java Authentication and Authorization Service)认证提供者是一种利用Java...
在J2EE环境中,数据源通常是通过应用服务器(如Tomcat、WebLogic或JBoss)进行管理的。对于Tomcat,你可以在`conf/server.xml`文件中配置一个数据源,如下: ```xml type="javax.sql.DataSource" ...
配置两个数据源 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. 使用...
在J2EE环境中,如WebLogic、WebSphere和JBoss等,JNDI常用于查找和使用资源,如EJBs、JMS消息队列、JDBC数据源以及RMI通过CORBA的命名服务。例如,在WebLogic中查找Tuxedo连接,可以使用如下代码: ```java Context...
在Spring框架中,可以使用`c3p0`或`dbcp`作为数据源,通过`Bean`配置或者Java配置来设定这些参数。 总结来说,Java通过JDBC和数据库连接池提供了高效、灵活的数据库访问方式。在实际应用中,选择合适的连接池可以...
在IT行业中,DataSource是Java应用中的一个重要概念,特别是在企业级应用开发中,它扮演着连接数据库的关键角色。...正确理解和配置DataSource,对优化数据库操作性能、提高应用的健壮性具有重要意义。
6. **JNDI(Java Naming and Directory Interface)**:JNDI在J2EE中用于查找和绑定服务,如数据源或EJB。项目可能使用JNDI来获取数据库连接。 7. **JTA(Java Transaction API)**:JTA用于处理事务,确保数据的...