今天在同一个环境启动两个项目时报错,因为两个项目同时涉及到分布式事物和切换数据源相关。

一、启动项目时报错示例:


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 ./相关推荐

  1. 项目启动报错Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error

    错误:项目启动报错: Error starting ApplicationContext. To display the conditions report re-run your applicati ...

  2. 项目启动报错No appropriate protocol (protocol is disabled or cipher suites are inappropriate) 解决办法

    错误描述: 项目启动报错 Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is di ...

  3. 今天新拉取得项目启动报错:No appropriate protocol (protocol is disabled or cipher suites are inappropriate)

    今天新拉取得项目启动报错 Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is di ...

  4. Linux下Tomcat项目启动报错

    Linux下Tomcat项目启动报错 org.springframework.beans.factory.CannotLoadBeanClassException: Error loading cla ...

  5. 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 ...

  6. 项目启动报错:No qualifying bean of type ‘xxx‘ available:

    项目启动报错: Description: A component required a bean of type 'cn.hsa.its.abutment.bo.BusinessAcceptBo' t ...

  7. 【图文详解】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 ...

  8. SpringBoot项目启动报错:Field userMapper in com.demo.controller.MemberController required a bean of type ‘c

    问题描述: SpringBoot项目启动报错,报错内容:'com.xxx.mapper.XxxxMapper' that could not be found ******************** ...

  9. springboot项目启动报错-案例情景介绍

    文章目录 摘要 情况1:Nacos报错 情况2:IllegalStateException: Incompatible fallbackFactory instance 情况3:idea编译java文 ...

  10. 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 ...

最新文章

  1. ImageNet图像数据集介绍
  2. 如何实现一个定时的任务,并且可以自己停止
  3. LeetCode 14. Longest Common Prefix字典树 trie树 学习之 公共前缀字符串
  4. 设计模式:观察者模式(有利于代码解耦)
  5. WEBTIMER控件研究的心得:丢开书本做一个WebTimer
  6. Python嵌套列表解析式(又称列表推导式)写法剖析与应用举例
  7. Oracle入门(十四B)之PL/SQL异常处理
  8. c# webbrowser  获取用户选中文字
  9. 【bzoj1036】 ZJOI2008—树的统计Count
  10. 链接时出现LNK2001错误的解决方法
  11. afc系统服务器维护,自动售检票系统AFC中央系统维护员中级业务模型.PDF
  12. 【转】Mac下升级python2.7到python3.6
  13. 还在使用OpenGL ES做渲染,你Out了,赶紧来拥抱Vulkan吧~
  14. 新手android中ListView实现音乐列表
  15. linux 命令下载jdk
  16. 《三国演义》里到底描写了多少个人物,你知道吗?
  17. pagehelper版本升级导致pageSize为0时无法查询全部数据
  18. 解决每次弹出“是否允许XX录制/投射您的屏幕”(享做笔记、王者荣耀等)手把手教程
  19. 全云端万能小程序_百搜全云端万能门店小程序v4.0.13五端独家2次开发升级独立版...
  20. 《如何让你爱的人爱上你》第四部分:等价原则

热门文章

  1. QTableView实现excel冻结窗口功能
  2. 共码未来 | 2022 Google 谷歌开发者大会参会现场记
  3. c语言点阵输出字母,单片机C语言程序设计:8X8LED 点阵显示数字
  4. oBlog 4.0 正式版 2006-09-06
  5. 浅析TVS管的响应时间与TVS管伏安特性曲线
  6. AutoCAD2022下载安装教程
  7. Open-DrainPush-Pull
  8. 上海Apple面试php,面试Apple苹果APO的MQE经验
  9. 联想r480安全模式_thinkpad笔记本如何进入安全模式?
  10. 置换密码c语言,替代密码和置换密码的C语言实现