Почему Арджуне не удалось начать с ARJUNA012391? (Кроссопубликовано пользователю narayana-user в группах google)
Обзор 50000 футов
Я рефакторинг большого устаревшего приложения для java 17, обращаясь к техническим долгам нескольких поколений. Часть рефакторинга включает в себя замену несуществующего менеджера транзакций Bitronix на комбинацию Нараяна + Арджуна.
При запуске приложения Арджуна не запускается с исключениемARJUNA012391: Could not initialize object store 'null' of type 'com.arjuna.ats.internal.arjuna.objectstore.ShadowNoFileLockStore'
.
Работаю пока:
я проследил вObjectStoreAPI initStore(String name)
чтобы увидеть, что есть InvocationTargetException
Я подтвердил, что:
- переменные среды Arjuna установлены на -Duser.dir=C:/arjuna/user -Duser.home=C:/arjuna/user
- пустые каталоги хранилища объектов были созданы арджуной, и
- разрешения каталога позволяют приложению полный контроль
- рефлексивные вызовы classLoader к конструктору не запрещены видимостью
- незарегистрированное корневое исключение — com.arjuna.ats.arjuna.exceptions.ObjectStoreException: ARJUNA012225: FileSystemStore::setupStore — невозможно получить доступ к корню хранилища объектов: PutObjectStoreDirHere\ShadowNoFileLockStore\defaultStore\
- Каталог C:\arjuna\user\PutObjectStoreDirHere\ShadowNoFileLockStore\defaultStore существует, и jvm полностью контролирует его.
Выдержка из журнала:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'schedulerFactoryBean' defined in com.maxis.mxarchive.SchedulerConfig: ARJUNA012391: Could not initialize object store 'null' of type 'com.arjuna.ats.internal.arjuna.objectstore.ShadowNoFileLockStore'
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1751)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1405)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1325)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:709)
... 56 common frames omitted
Caused by: com.arjuna.ats.arjuna.exceptions.FatalError: ARJUNA012391: Could not initialize object store 'null' of type 'com.arjuna.ats.internal.arjuna.objectstore.ShadowNoFileLockStore'
at com.arjuna.ats.arjuna.objectstore.StoreManager.initStore(StoreManager.java:160)
at com.arjuna.ats.arjuna.objectstore.StoreManager.getActionStore(StoreManager.java:111)
at com.arjuna.ats.arjuna.objectstore.StoreManager.getRecoveryStore(StoreManager.java:68)
at com.arjuna.ats.arjuna.recovery.ActionStatusService.<init>(ActionStatusService.java:65)
at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128)
at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:306)
at java.base/java.lang.Class.newInstance(Class.java:684)
at com.arjuna.common.internal.util.ClassloadingUtility.loadAndInstantiateClass(ClassloadingUtility.java:135)
at com.arjuna.ats.arjuna.recovery.TransactionStatusManager.start(TransactionStatusManager.java:125)
at com.arjuna.ats.arjuna.recovery.TransactionStatusManager.<init>(TransactionStatusManager.java:58)
at com.arjuna.ats.arjuna.coordinator.TxControl.createTransactionStatusManager(TxControl.java:196)
at com.arjuna.ats.arjuna.coordinator.TxControl.<clinit>(TxControl.java:273)
at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.begin(BaseTransaction.java:96)
at org.springframework.transaction.jta.JtaTransactionManager.doJtaBegin(JtaTransactionManager.java:877)
at org.springframework.transaction.jta.JtaTransactionManager.doBegin(JtaTransactionManager.java:840)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.startTransaction(AbstractPlatformTransactionManager.java:400)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373)
at org.springframework.scheduling.quartz.SchedulerAccessor.registerJobsAndTriggers(SchedulerAccessor.java:209)
at org.springframework.scheduling.quartz.SchedulerFactoryBean.afterPropertiesSet(SchedulerFactoryBean.java:507)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1797)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1747)
... 66 common frames omitted
1 ответ
На самом деле objectStoreDir вычисляется как относительный путь, игнорируя свойство user.dir, по крайней мере, в случае файловой системы Windows.
Вместо того, чтобы зависеть от внутренней (скрытой) конкатенации каталогов, явно установите для свойства абсолютный путь, чтобы обойти системное свойство «user.dir», что-то вроде «-DObjectStoreEnvironmentBean.objectStoreDir=C:/tmp/xyz»