转:
http://www.blogjava.net/luoqx/articles/16447.html
项目组开发服务器使用weblogic,应用服务器上配置了数据源,每个人开发使用eclipse,每人调试程序都使用本机,所以调试使用的服务是跟eclipse的tomcat插件,数据源可以使用tomcat的配置的和weblogic同名的数据源,可是JTA tomcat不支持。
因为整个项目组使用统一的配置管理,spring的applicationContext.xml大家都相同,每天还要做每日构建,部署到服务器上也与配置管理上的文件相同,所以想是否可以将数据源和JTAmanager配置成远程的。
查找spring官方文档,太简单没有这方面描述,上网google了半天,没找到(奇怪?其实后来想想也不奇怪,大家要么使用本地数据源(开发调试),要么使用应用服务的数据源也是在同一应用服务器上,而不是在远程使用(部署的生产环境)。),所以干脆看看源码算了。
已知如下配置可以访问到同一应用服务器的jndi数据源
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>jdbc/cqccms</value>
</property>
</bean>
记得当初使用jndi时可以远程访问写过client程序,主要除了要知道jndi名,还要设置jndi环境(Environment),所以查找一下JndiObjectFactoryBean的源代码,看看有没有设置jndi环境的方法,果然有setJndiEnvironment方法参数为properties,可以了,如下配置就能访问远程数据源了
<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>
不过要记得把weblogic.jar放到自己应用的lib下,要不找不到weblogic.jndi.WLInitialContextFactory类。
数据源搞定了,测试一下果真好用,不过jta对象远程访问好像没那么顺利,同理查看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,配置上测试果然成功。
分享到:
相关推荐
Spring提供了两种主要的方式来实现JTA事务管理:基于XML配置和基于注解的配置。通过这些方式,开发者可以声明式地控制事务的边界,使得代码更简洁、可维护性更强。 在描述中提到的“博文链接:...
3. **事务管理**:Spring 的声明式事务管理可以与 WebLogic Server 的 JTA 事务协调,确保跨服务的一致性。 4. **资源管理**:Spring 可以通过 JNDI 查找 WebLogic Server 提供的资源,如数据源、邮件会话等。 5. **...
配置JTA,你需要设置事务管理器,例如JBoss的Atomikos或WebLogic的WebLogicTransactionManager。 **XAPool** 是一个基于X/Open XA的JDBC连接池,提供高性能和高可用性的事务处理。在配置中,你需要定义连接池大小、...
然而,JTA的XA事务通常在J2EE环境下工作,需要容器支持,比如JBoss、WebLogic等。在J2SE环境中,Spring可以通过像JOTM这样的开源事务管理器来模拟JTA功能。 在Spring中配置多个数据源并进行事务管理,可以参考以下...
通过上述配置,Ibatis与Spring的整合可以带来更高效的数据库操作,而WebLogic的JTA事务管理则保证了在复杂环境下的数据一致性。这是一套成熟且广泛使用的解决方案,适用于许多企业级应用。在实践中,根据具体需求...
4. 使用Spring的事务注解或XML配置来指定哪些方法需要在JTA事务中执行。例如,假设有一个名为BbtForumImpl的类,其中的addTopic()方法需要在事务中运行,那么可以使用@Transactional注解标记这个方法,或者在Spring...
Spring 可以使用第三方 JTA 实现(如 JBoss、WebLogic 等)来管理跨多个持久化资源的事务。 总的来说,Spring 事务管理为开发者提供了强大的工具来处理事务,无论是简单的单数据源应用,还是复杂的分布式系统,都能...
JTA事务管理器允许Spring与任何遵循JTA标准的事务协调器集成,如WebLogic Server的事务服务。这种方式使得Spring应用能够在分布式环境中进行复杂的事务控制,比如跨多个数据源或资源的事务一致性。 事务挂起是JTA...
3. 资源配置:如数据源、JMS队列和主题、JTA事务管理器等。 四、性能优化 1. JVM调优:调整堆大小、垃圾收集策略、并发线程数等。 2. 网络优化:改善网络通信效率,例如减少TCP/IP延迟,启用HTTP压缩。 3. 集群...
2. **配置容器**:如果你的项目运行在支持JTA的服务器上(如Tomcat、JBoss或WebLogic),则服务器通常会提供内置的事务管理器。在某些情况下,你可能需要配置服务器以启用JTA支持。 3. **编程模型**:在代码中,你...
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" /> ``` 或Java配置: ```java @Bean public PlatformTransactionManager transactionManager() { ...
6. **JTA(Java Transaction API)**:详解WebLogic Server的事务管理,包括本地事务和全局事务的处理,以及事务属性的设置。 7. **JMS与JTA结合**:阐述如何在WebLogic Server中实现JMS与JTA的协同工作,确保消息...
Spring的声明式事务管理允许开发者通过配置XML或使用注解来控制事务边界,而无需显式编写事务管理代码。此外,Spring还支持编程式事务管理,允许开发者在代码中手动开始、提交、回滚事务。 **WebLogic Server**是一...
对于全局事务(JTA),Spring 可以配合 JTA 供应商如 JBoss、WebLogic 等进行分布式事务处理,而对于局部事务,Spring 则可以直接管理单一数据库的事务。 在性能方面,声明式事务处理通常比编程式事务更高效,因为...
- WebLogic是由Oracle提供的全功能Java EE应用服务器,支持完整的Java EE规范,包括ejb、JMS、JTA等高级服务。 - WebLogic以其强大的集群、负载均衡、安全管理以及事务处理能力著称,适合大型企业级应用。 - 部署...
它支持多层分布式应用程序,并提供了丰富的特性,如集群、负载均衡、安全管理、JMS(Java消息服务)、JTA(Java事务API)等。WebLogic Server的管理界面和工具使得配置和管理变得更加直观和便捷。 二、WebLogic管理...
通过学习事务的基本概念、ACID属性、JDBC和JTA的使用,以及Spring框架的事务管理,你可以更好地应对复杂的并发场景,保证数据的准确性和系统稳定性。祝大家在学习Java事务的过程中不断进步,为自己的职业生涯...
- JTA(Java Transaction API):适用于EJB环境或应用服务器,如WebLogic、JBOSS等。 - JDBC事务:适用于非容器管理的环境,直接通过Connection对象来控制事务。 二、Hibernate事务配置 在Hibernate配置文件...
在"事物管理javaweb.zip"中,可能包含的详细内容有:JDBC事务示例代码、EJB事务配置、Spring事务管理的配置文件和注解使用、事务隔离级别的解释与选择、分布式事务的实现机制等。学习这些内容可以帮助开发者更好地...
使用JTA处理分布式事务 i. 32.1. 使用一个Atomikos事务管理器 ii. 32.2. 使用一个Bitronix事务管理器 iii. 32.3. 使用一个J2EE管理的事务管理器 iv. 32.4. 混合XA和non-XA的JMS连接 v. 32.5. 支持可替代的内嵌事务...