11

Atomikos をトランザクション マネージャーとして使用する同じ Web アプリケーションをいくつかのローカル環境で実行しようとしています (それぞれが同じバージョンの spring、atomikos、tomact などを同じ構成ファイルで使用しています)。それらのいくつかは正常に動作しますが、そのうちの 1 つで、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)

問題のログが何であるかを理解できず、Google もあまり役に立ちませんでした...この奇妙な問題の原因を知っている人はいますか? 繰り返しますが、正常に動作するまったく同じ構成の環境と、別の奇妙な警告がある別の環境があり ます。

ありがとう!:)

4

7 に答える 7

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>

PS: プロパティ ' com.atomikos.icatch.output_dir ' と ' com.atomikos.icatch.log_base_dir ' を変更して整理し、atomikos のログ ファイルを JBoss ログ ファイルと同じディレクトリに作成したことに注意してください。

于 2014-08-12T14:29:54.933 に答える
3

許可の問題であることがわかりました。Atomikos は eclipse フォルダーに lck ファイルを作成しようとしていましたが、Eclipse を別の場所に移動すると、すべて正常に機能しました。

于 2014-01-09T08:40:50.940 に答える
2

atomikos ログが生成されている宛先に移動します。そこには、削除する必要があるさまざまな 0 バイトのロック ファイルがあります。この問題は、アプリケーションが最後に実行され、正しくシャットダウンされなかった場合に発生します。lck ファイルを削除してからアプリケーションのデプロイを試みると、問題は解決します

于 2014-01-09T08:34:02.587 に答える