tomcat下部署多个war包应用jta事物报错处理,及jta事物配置

查看控制台输出,出现的异常日志:

MarkerIgnoringBase.java.error:143|ERROR: the specified log seems to be in use already: log in ./\. Make sure that no other instance is running, or kill any pending process if needed.

ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: Root WebApplicationContext: startup date [Mon Nov 12 11:34:52 CST 2018]; root of context hierarchy

Error creating bean with name 'transactionManager' defined in class path resource

Error creating bean with name 'atomikosTransactionManager' defined in class path resource

com.atomikos.icatch 包下抛出的异常

tomcat下部署多个war包应用jta事物报错处理,及jta事物配置_第1张图片

问题发生状况:

1、 一个tomcat下部署了多个war包应用

2、 war包中,均包含jta分布式事物管理框架

3、 启动tomcat,其中一个war正常启动,另外一个启动异常

 

问题原因:

1、 jta配置文件,配置的output以及log_base路径,可能冲突了

 

解决方案:

1、先了解下jta是干嘛的

    JDBC可以处理单数据源的事务,满足大部分事务处理的需求,但是JDBC事务不能解决多数据源和分布式事务问题,Java平台给我们提供了解决方案—JTA;

    通常把一个数据库内部的事务处理,如对多个表的操作,作为本地事务看待。数据库和JDBC的事务处理对象是本地事务,而分布式事务处理的对象是全局事务。

    所谓全局事务,是指分布式事务处理环境中,多个数据库可能需要共同完成一个工作,这个工作即是一个全局事务,例如,一个事务中可能更新几个不同的数据库。对数据库的操作发生在系统的各处,但必须全部被提交或回滚。此时一个数据库对自己内部所做操作的提交不仅依赖本身操作是否成功,还要依赖与全局事务相关的其它数据库的操作是否成功,如果任一数据库的任一操作失败,则参与此事务的所有数据库所做的所有操作都必须回滚。

一般情况下,某一数据库无法知道其它数据库在做什么,因此,在一个 DTP 环境中,交易中间件是必需的,由它通知和协调相关数据库的提交或回滚。而一个数据库只将其自己所做的操作(可恢复)影射到全局事务中,这个环境就是分布式事务处理模型

 

2、 maven工程,jta的配置:

tomcat下部署多个war包应用jta事物报错处理,及jta事物配置_第2张图片

 

通常情况下,我们都习惯像下面这样,配置到根目录:

tomcat下部署多个war包应用jta事物报错处理,及jta事物配置_第3张图片

tomcat下部署多个war包应用jta事物报错处理,及jta事物配置_第4张图片

tomcat下部署多个war包应用jta事物报错处理,及jta事物配置_第5张图片

tomcat下部署多个war包应用jta事物报错处理,及jta事物配置_第6张图片

3、重点来了

大多数开发人员,在创建新的project的时候,都习惯从旧的project复制,然鹅,很多配置都没搞懂或者忘记的情况下,经常漏改掉一些配置,jta的配置就是常常忘记的点,我就踩过这样的坑。

     按照到上述根目录的配置,会在tomcat bin目录下生成如下两个文件:

tomcat下部署多个war包应用jta事物报错处理,及jta事物配置_第7张图片

单个tomcat下,部署多个war应用,而war包下的jta配置都是一样的话,就会出现前面提到的异常;

所以一定要针对project个性化:

project A:

tomcat下部署多个war包应用jta事物报错处理,及jta事物配置_第8张图片

project B:

tomcat下部署多个war包应用jta事物报错处理,及jta事物配置_第9张图片

运行tomcat,会在bin目录生成如下目录保存jta的日志:

tomcat下部署多个war包应用jta事物报错处理,及jta事物配置_第10张图片

tomcat下部署多个war包应用jta事物报错处理,及jta事物配置_第11张图片

 

 

 

你可能感兴趣的:(异常处理)