当前位置: 首页 > news >正文

[转]Spring引用Tomcat的 JTA事务

为什么80%的码农都做不了架构师?>>>   hot3.png

Spring引用Tomcat的 JTA事务
    Tomcat是Servlet容器,但它提供了JNDI的实现,因此用户可以象在Java EE应用程序服务器中一样,在Tomcat中使用JNDI查找JDBC数据源。在事务处理方面,Tomcat本身并不支持 JTA,但是可以通过集成JOTM达到目的。

    如果你的应用最终部署到一个功能齐备的Java EE应用服务器上,也许你更希望使用Java EE应用服务器的 JTA功能,这样可以利用应用服务器本身许多优化措施。下面,我们让Tomcat通过JNDI开放JOTM的 JTA的数据源,进而在Spring容器引用这个JNDI数据源,并在此基础上提供 JTA事务。我们所使用的环境是:Tomcat 5.5+JOTM 2.3。
    1. 添加所需的JAR文件
    将JOTM以下类包添加到<Tomcat安装目录>/common/lib目录中:
    jotm.jar
    jotm_jrmp_stubs.jar
    jotm_iiop_stubs.jar
    ow_carol.jar
    jta-spec1_0_1.jar
    jts1_0.jar
    objectweb-datasource.jar
    xapool.jar
    howl.jar
    connector-1_5.jar
    同时,还需要添加相应数据库的JDBC驱动类包,例如 MySQLmysql.jar。

    2. 配置JOTM
    新建一个carol.properties配置文件,放置到<Tomcat安装目录>/common/classes目录下,配置文件内容如下:
    #JNDI调用协议
    carol.protocols=jrmp
    # 本地RMI调用
    carol.jvm.rmi.local.call=true
    # 不使用CAROL的JNDI封装器
    carol.start.jndi=false
    # 不启用命名服务器
    carol.start.ns=false
    # 命名工厂类
    carol.jndi.java.naming.factory.url.pkgs=org.apache.naming
    将carol.start.jndi设置为false,让JOTM不使用CAROL JNDI wrapper,从而可以避免类装载错误的发生。

    3. 配置Tomcat环境,配置JNDI的数据源
    在<Tomcat安装目录>/conf/context.xml文件中添加以下内容:
<Resource name="jdbc/topicDS" auth="Container"type="javax.sql.DataSource"
①-1:JNDI数据源
factory="org.objectweb.jndi.DataSourceFactory"username="root"password="1234"
driverClassName="com. mysql.jdbc.Driver"url="jdbc: mysql://localhost:3309/topicdb"maxActive="30"maxIdle="30"/>
<Resource name="jdbc/postDS"auth="Container"type="javax.sql.DataSource"
①-2:JNDI数据源factory="org.objectweb.jndi.DataSourceFactory"username="root"password="1234"
driverClassName="com. mysql.jdbc.Driver"url="jdbc: mysql://localhost:3309/postdb"maxActive="30"maxIdle="30"/>
②JOTM JTA事务管理<Transaction factory="org.objectweb.jotm.UserTransactionFactory"jotm.timeout="60"/>
   在Tomcat中配置两个JNDI数据源,它们分别指向topicdb和postdb数据库,如①处所示。最后配置JOTM的 JTA事务管理器,该事务管理器自动对两个JNDI中的数据源应用 JTA事务。

转载于:https://my.oschina.net/play/blog/17679

相关文章:

  • HTML链接上把当前的URL做为参数传递时,注意要对URL进行encode,在JS中我们这样实现...
  • Linux下查看用户登陆后的操作记录
  • 关闭snmp和nrpe的syslog正常输出
  • 一个ACE的配置案例
  • 【转帖】电阻电容的封装
  • WorkFlow入门Step.8—Flow Switch的用法
  • 修改远程连接端口
  • spring-mvc 的 拦截器应用例子
  • Javascript 检测 页面是否在iframe中
  • MyEclipse 内怎么样修改(复制)项目名
  • as3的InteractivePNG例子
  • 《Applications=Code+Markup》读书札记(2)——创建一个简单的 WPF 程序的代码结构及关于 Window 实例位置设置问题...
  • 敏捷方法之极限编程(XP)和 Scrum区别
  • squid vary机制实现详解(附流程图)
  • 构建办公环境网络
  • php的引用
  • HTTP请求重发
  • Idea+maven+scala构建包并在spark on yarn 运行
  • JavaScript新鲜事·第5期
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • js学习笔记
  • Less 日常用法
  • Linux后台研发超实用命令总结
  • miaov-React 最佳入门
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Python学习笔记 字符串拼接
  • v-if和v-for连用出现的问题
  • Zepto.js源码学习之二
  • 电商搜索引擎的架构设计和性能优化
  • 工作手记之html2canvas使用概述
  • 警报:线上事故之CountDownLatch的威力
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 区块链技术特点之去中心化特性
  • 深入浏览器事件循环的本质
  • 详解移动APP与web APP的区别
  • 学习ES6 变量的解构赋值
  • - 转 Ext2.0 form使用实例
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • (2022 CVPR) Unbiased Teacher v2
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (二)Eureka服务搭建,服务注册,服务发现
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (二十四)Flask之flask-session组件
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (译)2019年前端性能优化清单 — 下篇
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET NPOI导出Excel详解
  • .NET 的程序集加载上下文
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NET中使用Redis (二)