`
keren
  • 浏览: 1578753 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring JTA事务(WebLogic)配置

阅读更多
转: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

    Spring提供了两种主要的方式来实现JTA事务管理:基于XML配置和基于注解的配置。通过这些方式,开发者可以声明式地控制事务的边界,使得代码更简洁、可维护性更强。 在描述中提到的“博文链接:...

    Spring与WebLogic Server的集成

    3. **事务管理**:Spring 的声明式事务管理可以与 WebLogic Server 的 JTA 事务协调,确保跨服务的一致性。 4. **资源管理**:Spring 可以通过 JNDI 查找 WebLogic Server 提供的资源,如数据源、邮件会话等。 5. **...

    spring3.0+struts2.0+mybatis3.2+jta+xapool配置文件示例

    配置JTA,你需要设置事务管理器,例如JBoss的Atomikos或WebLogic的WebLogicTransactionManager。 **XAPool** 是一个基于X/Open XA的JDBC连接池,提供高性能和高可用性的事务处理。在配置中,你需要定义连接池大小、...

    spring对多个数据库进行事务管理.doc

    然而,JTA的XA事务通常在J2EE环境下工作,需要容器支持,比如JBoss、WebLogic等。在J2SE环境中,Spring可以通过像JOTM这样的开源事务管理器来模拟JTA功能。 在Spring中配置多个数据源并进行事务管理,可以参考以下...

    ibaits+spring的整合

    通过上述配置,Ibatis与Spring的整合可以带来更高效的数据库操作,而WebLogic的JTA事务管理则保证了在复杂环境下的数据一致性。这是一套成熟且广泛使用的解决方案,适用于许多企业级应用。在实践中,根据具体需求...

    Spring框架技术

    4. 使用Spring的事务注解或XML配置来指定哪些方法需要在JTA事务中执行。例如,假设有一个名为BbtForumImpl的类,其中的addTopic()方法需要在事务中运行,那么可以使用@Transactional注解标记这个方法,或者在Spring...

    spring事务管理.docx

    Spring 可以使用第三方 JTA 实现(如 JBoss、WebLogic 等)来管理跨多个持久化资源的事务。 总的来说,Spring 事务管理为开发者提供了强大的工具来处理事务,无论是简单的单数据源应用,还是复杂的分布式系统,都能...

    Implementing Transaction Suspension in Spring

    JTA事务管理器允许Spring与任何遵循JTA标准的事务协调器集成,如WebLogic Server的事务服务。这种方式使得Spring应用能够在分布式环境中进行复杂的事务控制,比如跨多个数据源或资源的事务一致性。 事务挂起是JTA...

    weblogic 实用手册+Weblogic

    3. 资源配置:如数据源、JMS队列和主题、JTA事务管理器等。 四、性能优化 1. JVM调优:调整堆大小、垃圾收集策略、并发线程数等。 2. 网络优化:改善网络通信效率,例如减少TCP/IP延迟,启用HTTP压缩。 3. 集群...

    jta maven包

    2. **配置容器**:如果你的项目运行在支持JTA的服务器上(如Tomcat、JBoss或WebLogic),则服务器通常会提供内置的事务管理器。在某些情况下,你可能需要配置服务器以启用JTA支持。 3. **编程模型**:在代码中,你...

    spring 配置jndi

    &lt;bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" /&gt; ``` 或Java配置: ```java @Bean public PlatformTransactionManager transactionManager() { ...

    BEA Weblogic Server宝典

    6. **JTA(Java Transaction API)**:详解WebLogic Server的事务管理,包括本地事务和全局事务的处理,以及事务属性的设置。 7. **JMS与JTA结合**:阐述如何在WebLogic Server中实现JMS与JTA的协同工作,确保消息...

    分布式事务

    Spring的声明式事务管理允许开发者通过配置XML或使用注解来控制事务边界,而无需显式编写事务管理代码。此外,Spring还支持编程式事务管理,允许开发者在代码中手动开始、提交、回滚事务。 **WebLogic Server**是一...

    Spring 3.x的事务处理机制的研究比较

    对于全局事务(JTA),Spring 可以配合 JTA 供应商如 JBoss、WebLogic 等进行分布式事务处理,而对于局部事务,Spring 则可以直接管理单一数据库的事务。 在性能方面,声明式事务处理通常比编程式事务更高效,因为...

    tomcat、weblogic、jboss的区别,容器的作用

    - WebLogic是由Oracle提供的全功能Java EE应用服务器,支持完整的Java EE规范,包括ejb、JMS、JTA等高级服务。 - WebLogic以其强大的集群、负载均衡、安全管理以及事务处理能力著称,适合大型企业级应用。 - 部署...

    weblogic管理指南

    它支持多层分布式应用程序,并提供了丰富的特性,如集群、负载均衡、安全管理、JMS(Java消息服务)、JTA(Java事务API)等。WebLogic Server的管理界面和工具使得配置和管理变得更加直观和便捷。 二、WebLogic管理...

    学习Java事务祝大家进步

    通过学习事务的基本概念、ACID属性、JDBC和JTA的使用,以及Spring框架的事务管理,你可以更好地应对复杂的并发场景,保证数据的准确性和系统稳定性。祝大家在学习Java事务的过程中不断进步,为自己的职业生涯...

    hibernate事务

    - JTA(Java Transaction API):适用于EJB环境或应用服务器,如WebLogic、JBOSS等。 - JDBC事务:适用于非容器管理的环境,直接通过Connection对象来控制事务。 二、Hibernate事务配置 在Hibernate配置文件...

    事物管理javaweb.zip

    在"事物管理javaweb.zip"中,可能包含的详细内容有:JDBC事务示例代码、EJB事务配置、Spring事务管理的配置文件和注解使用、事务隔离级别的解释与选择、分布式事务的实现机制等。学习这些内容可以帮助开发者更好地...

    springboot参考指南

    使用JTA处理分布式事务 i. 32.1. 使用一个Atomikos事务管理器 ii. 32.2. 使用一个Bitronix事务管理器 iii. 32.3. 使用一个J2EE管理的事务管理器 iv. 32.4. 混合XA和non-XA的JMS连接 v. 32.5. 支持可替代的内嵌事务...

Global site tag (gtag.js) - Google Analytics