Aye*_*let 10 java tomcat jta atomikos
我们试图在几个本地环境中运行使用Atomikos作为事务管理器的相同Web应用程序(每个环境使用相同版本的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)
Run Code Online (Sandbox Code Playgroud)
我们无法弄清楚有问题的日志是什么,谷歌也没有多大帮助......任何人都知道这个奇怪问题的原因是什么?同样,我们的环境具有完全相同的配置,可以正常工作,另一个环境有另一个奇怪的警告:https: //stackoverflow.com/questions/20936253/atomikos-with-activemq-commit-heuristic-warnings
谢谢!:)
小智 6
如果部署了多个项目(使用Atomikos),则会出现此问题,原因是编写atomikos的日志文件时出现并发(错误消息:'Log already in use').
要解决此问题,您必须自定义日志文件名,在atomikos配置中设置属性 "com.atomikos.icatch.log_base_name" ,如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
PS:请注意,我已经更改了属性' com.atomikos.icatch.output_dir '和' com.atomikos.icatch.log_base_dir ',只是为了保持组织有序,在同一JBoss日志文件目录中创建atomikos的日志文件.
小智 5
这是一个许可问题。我在 jta.properties.(确认目录存在)中添加了这两行。
com.atomikos.icatch.output_dir = /data/logs/XXX/
com.atomikos.icatch.log_base_dir = /data/logs/XXX/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7888 次 |
| 最近记录: |