我们尝试在多个本地环境上运行相同的 Web 应用程序,该应用程序使用 Atomikos 作为事务管理器(每个环境都使用相同版本的 spring、atomikos、tomact 等,并具有相同的配置文件)。其中一些工作正常,但其中之一,当我们尝试启动 tomcat 时,出现以下异常:
Caused by: java.lang.IllegalStateException: Can't overwrite cause with java.lang.RuntimeException: Log already in use?
at java.lang.Throwable.initCause(Throwable.java:456)
at com.atomikos.icatch.standalone.UserTransactionServiceImp.init(UserTransactionServiceImp.java:326)
at com.atomikos.icatch.config.UserTransactionServiceImp.init(UserTransactionServiceImp.java:405)
at com.atomikos.icatch.config.UserTransactionServiceImp.init(UserTransactionServiceImp.java:569)
at com.atomikos.icatch.jta.UserTransactionManager.startupTransactionService(UserTransactionManager.java:89)
at com.atomikos.icatch.jta.UserTransactionManager.checkSetup(UserTransactionManager.java:77)
at com.atomikos.icatch.jta.UserTransactionManager.init(UserTransactionManager.java:142)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1638)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1579)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1509)
... 41 more
Caused by: com.atomikos.icatch.SysException: Error in init(): Log already in use?
... 54 more
Caused by: java.lang.RuntimeException: Log already in use?
at com.atomikos.icatch.standalone.UserTransactionServiceImp.createDefault(UserTransactionServiceImp.java:203)
at com.atomikos.icatch.standalone.UserTransactionServiceImp.init(UserTransactionServiceImp.java:258)
我们无法弄清楚有问题的日志是什么,谷歌也没有多大帮助......有人知道这个奇怪问题的原因是什么吗?同样,我们有具有完全相同配置的环境,可以正常工作,而另一个环境则有另一个奇怪的警告:https://stackoverflow.com/questions/20936253/atomikos-with-activemq-commit-heuristic-warnings https://stackoverflow.com/questions/20936253/atomikos-with-activemq-commit-heuristic-warnings
谢谢! :)
当您部署了多个项目(使用 Atomikos)时,由于写入atomikos 日志文件的并发性,会出现这一问题(错误消息:“日志已在使用中”).
为了解决这个问题您必须自定义日志文件名, 设置属性 'com.atomikos.icatch.log_base_name' 在atomikos配置中如下所示:
<bean id="atomikosUserTransactionService" class="com.atomikos.icatch.config.UserTransactionServiceImp"
init-method="init" destroy-method="shutdownForce">
<constructor-arg>
<props>
<prop key="com.atomikos.icatch.service">com.atomikos.icatch.standalone.UserTransactionServiceFactory</prop>
<prop key="com.atomikos.icatch.log_base_name">your_project_name_log</prop>
<prop key="com.atomikos.icatch.output_dir">../standalone/log/</prop>
<prop key="com.atomikos.icatch.log_base_dir">../standalone/log/</prop>
</props>
</constructor-arg>
</bean>
P.S.:请注意,我已经更改了属性'com.atomikos.icatch.output_dir' and 'com.atomikos.icatch.log_base_dir'只是为了让事情井井有条,在 JBoss 日志文件的同一目录中创建atomikos 的日志文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)