项目启动报错:Caused by: com.atomikos.recovery.LogException: Log already in use? tmlog in ./
今天在同一个环境启动两个项目时报错,因为两个项目同时涉及到分布式事物和切换数据源相关。
一、启动项目时报错示例:
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2018-11-30 17:35:10.585 ERROR 7706 --- [ main] o.s.boot.SpringApplication : Application run failedorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'atomikosTransactionManager' defined in class path resource [com/haungtu/common/datasources/DynamicDataSourceConfig.class]:Invocation of init method failed; nested exception is com.atomikos.icatch.SysException: Error in init: Log already in use? tmlog in ./at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1708)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:581)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:503)at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:760)at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:869)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759)at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:395)at org.springframework.boot.SpringApplication.run(SpringApplication.java:327)at org.springframework.boot.SpringApplication.run(SpringApplication.java:1255)at org.springframework.boot.SpringApplication.run(SpringApplication.java:1243)at com.huangtu.AdminApplication.main(AdminApplication.java:16)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: com.atomikos.icatch.SysException: Error in init: Log already in use? tmlog in ./at com.atomikos.icatch.provider.imp.AssemblerImp.createRepository(AssemblerImp.java:181)at com.atomikos.icatch.provider.imp.AssemblerImp.assembleTransactionService(AssemblerImp.java:156)at com.atomikos.icatch.config.Configuration.assembleSystemComponents(Configuration.java:485)at com.atomikos.icatch.config.Configuration.init(Configuration.java:448)at com.atomikos.icatch.jta.UserTransactionManager.startupTransactionService(UserTransactionManager.java:71)at com.atomikos.icatch.jta.UserTransactionManager.initializeTransactionManagerSingleton(UserTransactionManager.java:60)at com.atomikos.icatch.jta.UserTransactionManager.checkSetup(UserTransactionManager.java:52)at com.atomikos.icatch.jta.UserTransactionManager.init(UserTransactionManager.java:122)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1833)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1776)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1704)... 24 common frames omitted
Caused by: com.atomikos.recovery.LogException: Log already in use? tmlog in ./at com.atomikos.persistence.imp.LogFileLock.acquireLock(LogFileLock.java:59)at com.atomikos.recovery.imp.FileSystemRepository.init(FileSystemRepository.java:55)at com.atomikos.icatch.provider.imp.AssemblerImp.createCoordinatorLogEntryRepository(AssemblerImp.java:229)at com.atomikos.icatch.provider.imp.AssemblerImp.createRepository(AssemblerImp.java:179)... 38 common frames omitted
二、原因:
使用分布式事物管理时启动报错,由于在项目中使用atomikos时,如果在同一个环境中部署两个以上这种项目,则可能会报出com.atomikos.icatch.SysException: Error in init(): Log already in use异常,这个信息是因为atomikos在默认情况下是将console_file_name和log_base_name设置为默认值:tm.out和tmlog0.log,并且会将这两个文件上锁,导致其他线程无法访问,所以当多个项目都未指定这一名称时就会出现上述异常信息。
比如说:我有一个项目serviceA,一个项目serviceB,一些公共Bean,Common,Utils等都被两个项目引用,然后在本地或者同一环境中先启动一个,第二个启动必然报以上的错。
三、解决办法:
网上解决方案示例:不过我设置了也没有成功
在每一个项目中都指定atomikos的文件名称,修改jta.properties文件中的
- com.atomikos.icatch.console_file_name
- com.atomikos.icatch.log_base_name
两个属性的值,保证每个项目的名称都不一样
自己暂时的解决方案:后续补上完整的正确方案
- 注释了spring分布式事物管理相关代码,多个数据源不需要注释
项目启动报错:Caused by: com.atomikos.recovery.LogException: Log already in use? tmlog in ./相关推荐
- 项目启动报错Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error
错误:项目启动报错: Error starting ApplicationContext. To display the conditions report re-run your applicati ...
- 项目启动报错No appropriate protocol (protocol is disabled or cipher suites are inappropriate) 解决办法
错误描述: 项目启动报错 Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is di ...
- 今天新拉取得项目启动报错:No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
今天新拉取得项目启动报错 Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is di ...
- Linux下Tomcat项目启动报错
Linux下Tomcat项目启动报错 org.springframework.beans.factory.CannotLoadBeanClassException: Error loading cla ...
- Maven项目启动报错 org.apache.catalina.LifecycleException: Failed to start component,手动添加Oracle JDBC 驱动jar包
项目启动报错: D:\apache-tomcat-8.5.43\bin\catalina.bat run [2019-09-11 11:31:53,154] Artifact heima_ssm_w ...
- 项目启动报错:No qualifying bean of type ‘xxx‘ available:
项目启动报错: Description: A component required a bean of type 'cn.hsa.its.abutment.bo.BusinessAcceptBo' t ...
- 【图文详解】SpringBoot项目启动报错:The bean ‘xxxServiceImpl‘ could not be injected as a ‘xxxServiceImpl‘ ...
问题描述: 项目启动报错:The bean 'xxxServiceImpl' could not be injected as a 'cn.xxxx.service.xxxServiceImpl' b ...
- SpringBoot项目启动报错:Field userMapper in com.demo.controller.MemberController required a bean of type ‘c
问题描述: SpringBoot项目启动报错,报错内容:'com.xxx.mapper.XxxxMapper' that could not be found ******************** ...
- springboot项目启动报错-案例情景介绍
文章目录 摘要 情况1:Nacos报错 情况2:IllegalStateException: Incompatible fallbackFactory instance 情况3:idea编译java文 ...
- SpringBoot项目启动 报错:Error executing Maven. end tag name </settings> must match start tag name
SpringBoot项目启动 报错:Error executing Maven. end tag name must match start tag name from line xxx 第一次创建s ...
最新文章
- ImageNet图像数据集介绍
- 如何实现一个定时的任务,并且可以自己停止
- LeetCode 14. Longest Common Prefix字典树 trie树 学习之 公共前缀字符串
- 设计模式:观察者模式(有利于代码解耦)
- WEBTIMER控件研究的心得:丢开书本做一个WebTimer
- Python嵌套列表解析式(又称列表推导式)写法剖析与应用举例
- Oracle入门(十四B)之PL/SQL异常处理
- c# webbrowser 获取用户选中文字
- 【bzoj1036】 ZJOI2008—树的统计Count
- 链接时出现LNK2001错误的解决方法
- afc系统服务器维护,自动售检票系统AFC中央系统维护员中级业务模型.PDF
- 【转】Mac下升级python2.7到python3.6
- 还在使用OpenGL ES做渲染,你Out了,赶紧来拥抱Vulkan吧~
- 新手android中ListView实现音乐列表
- linux 命令下载jdk
- 《三国演义》里到底描写了多少个人物,你知道吗?
- pagehelper版本升级导致pageSize为0时无法查询全部数据
- 解决每次弹出“是否允许XX录制/投射您的屏幕”(享做笔记、王者荣耀等)手把手教程
- 全云端万能小程序_百搜全云端万能门店小程序v4.0.13五端独家2次开发升级独立版...
- 《如何让你爱的人爱上你》第四部分:等价原则
热门文章
- QTableView实现excel冻结窗口功能
- 共码未来 | 2022 Google 谷歌开发者大会参会现场记
- c语言点阵输出字母,单片机C语言程序设计:8X8LED 点阵显示数字
- oBlog 4.0 正式版 2006-09-06
- 浅析TVS管的响应时间与TVS管伏安特性曲线
- AutoCAD2022下载安装教程
- Open-DrainPush-Pull
- 上海Apple面试php,面试Apple苹果APO的MQE经验
- 联想r480安全模式_thinkpad笔记本如何进入安全模式?
- 置换密码c语言,替代密码和置换密码的C语言实现