我们看到与Strange Atomikos 异常中描述的相同 - init() 中的错误:日志已在使用中?除了我们遵循文档并将日志目录和基本名称指定为 -D 参数。在我们的例子中,它是一个部署到天真的 Tomcat7 容器实例中的 war 文件。
日志中没有证据表明正在读取系统属性。
这是 Atomikos 的 3.9.3。
tomcat7 11466 2.5 0.7 2311632 257256 ? Sl 09:13 0:19 /usr/lib/jvm/java-7-openjdk-amd64/bin/java -Djava.util.logging.config.file=/var/lib/tomca 7/conf/logging.properties - Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC -Dserver.properties.file=/usr/share/tomcat7/server-internal.properties - Dcom.atomikos.icatch.log_base_dir=/var/log/tomcat7/ -Dcom.atomikos.icatch.log_base_name=rest-tm -Djava.endorsed.dirs=/usr/share/tomcat7/endorsed -classpath /usr/share/tomcat7 /bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar -Dcatalina.base=/var/lib/tomcat7 -Dcatalina.home=/usr/share/tomcat7 -Djava.io.tmpdir= /tmp/tomcat7-tomcat7-tmp org.apache.catalina.startup.Bootstrap 启动
堆栈跟踪:
引起:org.springframework.beans.BeanInstantiationException:无法实例化[javax.transaction.TransactionManager]:工厂方法'atomikosTransactionManager'抛出异常;嵌套异常是 java.lang.IllegalStateException: Can't overwrite cause with java.lang.RuntimeException: Log already in use? 在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) 在 org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:591) ... 44 更多 原因:java.lang.IllegalStateException:无法用 java.lang.RuntimeException 覆盖原因:日志已在使用中? 在 java.lang.Throwable.initCause(Throwable.java:456) 在 com.atomikos.icatch.standalone.UserTransactionServiceImp.init(UserTransactionServiceImp.java:326) 在 com.atomikos.icatch.config.UserTransactionServiceImp.init(UserTransactionServiceImp.java:405) 在 com.atomikos.icatch.config.UserTransactionServiceImp.init(UserTransactionServiceImp.java:569) 在 com.atomikos.icatch.jta.UserTransactionManager.startupTransactionService(UserTransactionManager.java:89) 在 com.atomikos.icatch.jta.UserTransactionManager.checkSetup(UserTransactionManager.java:77) 在 com.atomikos.icatch.jta.UserTransactionManager.setTransactionTimeout(UserTransactionManager.java:237) 在 com.foo.springcontainer.config.persistence.transactionmanager.AtomikosTransactionManagerConfig.atomikosTransactionManager(AtomikosTransactionManagerConfig.java:29) 在 com.foo.springcontainer.config.persistence.transactionmanager.AtomikosTransactionManagerConfig$$EnhancerBySpringCGLIB$$beea75cd.CGLIB$atomikosTransactionManager$0() 在 com.foo.springcontainer.config.persistence.transactionmanager.AtomikosTransactionManagerConfig$$EnhancerBySpringCGLIB$$beea75cd$$FastClassBySpringCGLIB$$10e69a5.invoke() 在 org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) 在 org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:312) 在 com.foo.springcontainer.config.persistence.transactionmanager.AtomikosTransactionManagerConfig$$EnhancerBySpringCGLIB$$beea75cd.atomikosTransactionManager() 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ... 45 更多 引起:com.atomikos.icatch.SysException:init()中的错误:日志已在使用中? ... 62 更多 引起:java.lang.RuntimeException:日志已经在使用? 在 com.atomikos.icatch.standalone.UserTransactionServiceImp.createDefault(UserTransactionServiceImp.java:203) 在 com.atomikos.icatch.standalone.UserTransactionServiceImp.init(UserTransactionServiceImp.java:258)
我不知道此时我应该去哪里 - 我可能希望它试图打开的任何文件名都会包含在日志中,但我是盲目的。除了通常的 catalina 和 localhost 日志外,在 /var/log/tomcat7 中没有创建任何文件。
想法?