2013-07-20 2 views
1

Мне нужна помощь в проекте, над которым я работаю. Это веб-сервер, построенный с весной Java. Я использую Tomcat 6 в качестве веб-сервера. Я переключился с MyEclipse на Spring на Eclipse EE, и я больше не могу развертывать свой веб-сервер на своей 64-битной машине Ubuntu 12.10.Ошибка Atomicos в init(): Не удалось получить блокировку для /var/lib/tomcat6/./tm.out

Исключение я получаю следующий:

SEVERE: Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'atomikosTransactionManager' defined in class path resource [GestioneOneriServlet-dao-context.xml]: Error setting property values; nested exception is  org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are: 
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'transactionTimeout' threw exception; nested exception is com.atomikos.icatch.SysException: Error in init(): Couldn't get lock for /var/lib/tomcat6/./tm.out 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1361) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276) 
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) 
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972) 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467) 
at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1251) 
at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:612) 
at org.apache.catalina.manager.HTMLManagerServlet.doGet(HTMLManagerServlet.java:136) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:558) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
at java.lang.Thread.run(Thread.java:724) 
Caused by: org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are: 
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'transactionTimeout' threw exception; nested exception is com.atomikos.icatch.SysException: Error in init(): Couldn't get lock for /var/lib/tomcat6/./tm.out 
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:102) 
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:58) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1358) 
... 33 more 

Моего JTA.properties выглядит следующим образом:

com.atomikos.icatch.service=com.atomikos.icatch.standalone.UserTransactionServiceFactory 
com.atomikos.icatch.console_file_name = tm.out 
com.atomikos.icatch.log_base_name = tmlog 
com.atomikos.icatch.tm_unique_name = myeclipseforspring 
com.atomikos.icatch.serial_jta_transactions=false 
com.atomikos.icatch.automatic_resource_registration=true 
com.atomikos.icatch.max_actives=15000 
com.atomikos.icatch.max_timeout=3600000 
com.atomikos.icatch.enable_logging=false 
com.atomikos.icatch.console_log_level=WARN 
#com.atomikos.icatch.output_dir=/home/atomikos-sw-tmp/ 
#com.atomikos.icatch.log_base_dir=/home/atomikos-sw-tmp/ 

Последних два свойства прокомментированы как один из многих испытаний я для устранения этой ошибки.

Мой сервлет-дао-context.xml является:

<!-- Using Atomikos Transaction Manager --> 
    <bean class="com.atomikos.icatch.jta.UserTransactionManager" destroy-method="close" id="atomikosTransactionManager" init-method="init"> 
     <property name="forceShutdown" value="true"/> 
     <property name="startupTransactionService" value="true"/> 
     <property name="transactionTimeout" value="60"/> 
    </bean> 
    <bean class="com.atomikos.icatch.jta.UserTransactionImp" id="atomikosUserTransaction"/> 
    <!-- Configure the Spring framework to use JTA transactions from Atomikos --> 
    <bean class="org.springframework.transaction.jta.JtaTransactionManager" id="transactionManager"> 
     <property name="transactionManager" ref="atomikosTransactionManager"/> 
     <property name="userTransaction" ref="atomikosUserTransaction"/> 
     <property name="transactionSynchronizationName" value="SYNCHRONIZATION_ON_ACTUAL_TRANSACTION"/> 
    </bean> 

Я не имею ни малейшего представления о том, как сделать эту работу. Я не понимаю, почему он ищет файл tm.out в пути /var/lib/tomcat6/./tm.out. Что означает «/./»?

Пожалуйста, помогите. Andrea

ответ

3

У меня была та же проблема. Похоже, что tomcat не устанавливает правильные разрешения или я что-то пропустил в конфигурации atomikos.

В моей установке/var/lib/tomcat6 разрешен как «root», тогда как все остальные подкаталоги - «tomcat6». Поскольку tomcat работает как пользователь tomcat6, он не может создать файл.

Я сменил владельца каталога/var/lib/tomcat6 на tomcat6, и все работает отлично, без проблем. Я предполагаю, что atomikos ожидает что-то, чтобы дать ему вспомогательную директорию каталога tomcat, но это значение равно '.' (что означает текущий каталог самостоятельно или настоящий каталог, если он является частью пути, например «..» означает родительский каталог). Следовательно, это фактически $ TOMCAT_HOME/{atomikos-dir} /tm.out

Если вы можете узнать, где изменить '.' что-то лучше, тогда это позволит избежать проблем с правами на доступ к каталогам (и если вы это сделаете, я бы предложил изменить его на более позднем этапе!)

+0

См. http://www.atomikos.com/Documentation/JtaProperties setup, вы будете см. настройки для журнальных каталогов, которые можно изменить. По умолчанию он использует текущий каталог, поэтому убедитесь, что файл свойства создан и указано местоположение. – ismoore999

+0

Спасибо! Проблема была в том, что вы описали ... проклятые разрешения !! – Andrea

Смежные вопросы