Spring中对于JNDI的访问,提供了便捷的方法,在Spring的org.springframework.jndi包中包含了所有的类。其中提供了一下核心类:
(1)JndiTemplate:它是这个包的核心类,用来简化对JNDI的操作。它提供了对于lookup、bind方法。同时,允许JndiCallback接口的实现在其提供的JNDI上下文中执行任何操作。
使用JndiTemplate实现InitialContext环境变量的配置
<bean id="queueTarget" class="org.springframework.jndi.JndiObjectTargetSource">
<property name="jndiName">
<value>queue/testQueue</value>
</property>
<property name="jndiTemplate">
<ref local="jndiTemplate"/>
</property>
</bean>
<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">org.jnp.interfaces.NamingContextFactory</prop>
<prop key="java.naming.provider.url">jnp://localhost:1099</prop>
<prop key="java.naming.factory.url.pkgs">org.jboss.naming:org.jnp.interfaces</prop>
</props>
</property>
</bean>
(2)JndiObjectTargetSource
使用JndiObjectTargetSource,例如
<bean id="queueTarget" class="org.springframework.jndi.JndiObjectTargetSource">
<property name="jndiName">
<value>queue/testQueue</value>
</property>
</bean>
(3)JndiObjectFactoryBean:
使用JndiObjectFactoryBean,例如
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:/MySqlDS</value>
</property>
</bean>
总结(事例):
数据源的配置:
(1)配置可以访问到同一应用服务器的jndi数据源
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>jdbc/cqccms</value>
</property>
</bean>
(2)配置能访问远程jndi数据源
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>jdbc/cqccms</value>
</property>
<property name="jndiEnvironment">
<props>
<prop key="java.naming.factory.initial">
weblogic.jndi.WLInitialContextFactory
</prop>
<prop key="java.naming.provider.url">t3://172.16.101.42:7001</prop>
<prop key="java.naming.security.principal">weblogic</prop>
<prop key="java.naming.security.credentials">weblogic</prop>
</props>
</property>
</bean>
事务的配置:
不过事务对象远程访问好像没那么顺利,同理查看org.springframework.transaction.jta.JtaTransactionManager类,没有发现上述方法,不过看到了setJndiTemplate()方法,也不错现配置一个jndiTemplate,如下:
<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate" singleton="true"
lazy-init="default" autowire="default" dependency-check="default">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">
weblogic.jndi.WLInitialContextFactory
</prop>
<prop key="java.naming.provider.url">t3://172.16.101.42:7001</prop>
<prop key="java.naming.security.principal">weblogic</prop>
<prop key="java.naming.security.credentials">weblogic</prop>
</props>
</property>
</bean>
然后在配置一下transactionManager,如下
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" singleton="true"
lazy-init="default" autowire="default" dependency-check="default">
<property name="jndiTemplate">
<ref local="jndiTemplate" />
</property>
<property name="userTransactionName">
<value>weblogic/transaction/UserTransaction</value>
</property>
</bean>
不过JtaTransactionManager默认找jndi name为UserTransaction的jta对象,在同一应用服务器上可以,远程访问不到,后直接查看weblogic的jndi树找到这个jndi名weblogic/transaction/UserTransaction,配置上测试果然成功。
分享到:
相关推荐
NULL 博文链接:https://zzy603.iteye.com/blog/1039826
spring-**cntext**-4.3.6.RELEASE.jar:spring提供了基础IOC功能上的扩展服务,提供了很多企业级服务的支持,如邮件服务,任务调度,JNDI定位,EJB集成,远程访问,缓存以及各种试图层框架的封装等。 spring-...
因此,Spring建议替换其已弃用的JNDI Mock实现(请参阅 )。 Simple-JNDI旨在解决的第二个问题是从应用程序中的任何位置轻松访问应用程序配置。 如果您唯一的目的是测试或使用依赖于Tomcat之外的Tomcat JNDI环境的...
在Spring的配置文件中,我们经常会看到xsd文件的身影,例如`spring-jdbc-4.2.xsd`,它是Spring JDBC模块的XML Schema定义文件,用于验证和解析与数据库交互的相关配置。 `spring-jdbc-4.2.xsd`是Spring 4.2版本的...
如何使用Spring从JNDI查找数据源 Server.xml <资源名称=“ jdbc / javatechie”全局=“ jdbc / javatechie” auth =“容器” type =“ javax.sql.DataSource” driverClassName =“ com.mysql.jdbc.Driver” url...
Tomcat6+Spring+JNDI配置数据源说明 本文档主要介绍了Tomcat6+Spring+JNDI配置数据源的详细步骤和原理。数据源是一个池子,里面有若干个数据连接对象,当需要时就从里面拿一个使用,使用完毕就放回去,如果超过最大...
Spring框架作为一个强大的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)容器,提供了多种配置数据源的方式,其中包括通过JNDI(Java Naming and Directory Interface)来查找和配置数据源。JNDI...
通过以上步骤,你就可以在Spring环境中创建一个等价于JNDI配置的数据源了。这种方式不仅适用于非Web环境,也适合那些希望在Web环境中避免使用JNDI的场景。记住,选择合适的数据源和配置策略对于应用性能和稳定性至关...
6. **环境与配置**:Spring Boot支持命令行参数、属性文件、系统属性、JNDI、YAML等多种方式来加载和管理配置。`Environment`对象包含了所有的配置信息,可以通过`@Value`注解注入到bean中。 7. **条件化bean**:`@...
【WebLogic配置与集群详解】 WebLogic Server是Oracle公司的一款企业级Java应用服务器,它提供了全面的Java EE(Enterprise Edition)支持,包括Servlet、JSP、EJB等,以及对Web服务的支持。本资料包“day2013-0110...
支持数据库敏感配置信息 加密(可自定义) ENC()。 支持每个数据库独立初始化表结构schema和数据库database。 支持无数据源启动,支持懒加载数据源(需要的时候再创建连接)。 支持 自定义注解 ,需继承DS(3.2.0+)。 ...
3. **配置DataSource**:SqlSessionFactory需要数据源(DataSource),所以在Spring配置中也需要定义数据源,可以使用Apache的Commons DBCP或者Tomcat的JNDI数据源等。 4. **Mapper配置**:MyBatis的Mapper接口和...
1. DataSource:数据源是连接数据库的桥梁,Spring支持多种类型的DataSource,如BasicDataSource、JNDI查找等。数据源的配置是整个Spring-JDBC的基础。 2. JdbcTemplate:核心工具类,提供了一组执行SQL的模板方法...
"jee"(Java Enterprise Edition)模块展示了Spring对企业级应用的支持,如JNDI查找、EJB集成、邮件服务等,使得Spring能够无缝融入Java EE环境。 总结来说,"spring-framework-4.3.30.RELEASE-schema.zip"这个...
1. 配置数据源:首先,我们需要在Spring的配置文件中定义数据源,这可以是DataSource或JNDI数据源。 2. 创建SqlSessionFactory:接着,使用SqlSessionFactoryBean来配置并创建SqlSessionFactory,指定数据源和...
- 为了测试JNDI配置是否正确,你可以尝试从Spring应用上下文中获取数据源并打印其信息,确保能成功查找并实例化。 6. **扩展性与最佳实践**: - 考虑使用Spring Boot,它提供了更简洁的方式来配置JNDI数据源,只...
支持数据库敏感配置信息 加密(可自定义) ENC()。 支持每个数据库独立初始化表结构schema和数据库database。 支持无数据源启动,支持懒加载数据源(需要的时候再创建连接)。 支持 自定义注解 ,需继承DS(3.2.0+)。 ...
2. **Spring Beans**:这个模块提供了定义、配置和管理JavaBean的能力,包括XML、注解和基于Java的配置方式。 3. **Spring Context**:扩展了Core Container的概念,提供了一种上下文环境来管理应用组件,还支持...
在实际应用中,开发者通常会使用 Spring 的 `LocalSessionFactoryBean` 来配置 Hibernate 的 SessionFactory,并结合 c3p0 数据源,实现 Spring 和 Hibernate 的整合。这可以通过 Spring 的 XML 配置文件或者 Java...