2016-12-13 2 views
0

私はこのエラーを見たことがありません。私はGlassFishアプリケーションサーバーインスタンスを(それ以前に)完全に実行しているアプリケーションと共に持っています。 これは、JMSを使用して通信するいくつかのWebアプリケーションで構成されています。 シングルトンBeanにスケジュールされたタイマー・タスクが実行されています。シンプトンBeanは、別のサーバーへの複数のRESTリクエストを作成し、JMSを介して受信したJSONを送信します。LOG004:データが壊れています。ポイント12のログ例外

この時点では、この例外が発生し、すべてのタイマーが消去されます。問題は、私はコード内で何も変更したことがなく、アプリケーションはそれまで正常に動作していたということです。 REST-APIは変更されず、どこにも例外はありません。

私はこのエラーのoracle docsをチェックするが、彼らは言う:

JTS5022予期しない例外を[{0}]ログから。

ソリューション: これは予期しない内部エラーです。完全なエラーログメッセージがある場合は、Sunにお問い合わせください。

[2016-12-13T10:59:00.235 + 0000] [glassfish 4.1] [SEVERE] [jts.log_error] [javax.enterprise.system.core.transaction.com.sun.jts.CosTransactions] [tid :_ThreadID = 450 _ThreadName = __ ejb-thread-pool6] [timeMillis:1481626740235] [levelValue:1000] [JTS5022:ログから予期しない例外[{0}]が発生しました。 com.sun.jts.CosTransactions.LogException:LOG004:データが壊れています。 com.sun.jts.CosTransactions.LogControl.openFile(LogControl.java:541)、com.sun.jts.CosTransactions.Log.open(Log.java:172)(com.sun.jts)でポイント12でログ例外をログに記録する。 com.sun.jts.CosTransactions.CoordinatorLog.writeでcom.sun.jts.CosTransactions.CoordinatorLog.formatLogRecords(CoordinatorLog.java:1040)で.CosTransactions.CoordinatorLog.openLog(CoordinatorLog.java:1161)(CoordinatorLog.java:534 )com.sun.jts.CosTransactions.CoordinatorTermでcom.sun.jts.CosTransactions.TopCoordinator.prepareでcom.sun.jts.CosTransactions.TransactionState.setState(TransactionState.java:732)(TopCoordinator.java:2001)で。コミット時のcom.sun.jts.CosTransactions.CurrentImpl.commit(CurrentImpl.java:622)のcom.sun.jts.CosTransactions.TerminatorImpl.commit(TerminatorImpl.java:231)のコミット(CoordinatorTerm.java:328) .jts.jta.TransactionManagerImpl.commit(TransactionManagerImpl.java:331)com.sun.enterprise.transaction.jts.JavaEETransactionManagerJTSDelegate.commitDistributedTransaction(JavaEETransactionManag com.sun.ejbでcom.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:719)でcom.sun.enterprise.transaction.JavaEETransactionManagerSimplified.commit(JavaEETransactionManagerSimplified.java:859)でerJTSDelegate.java:174) com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2074)の。 )com.sun.ejb.containers.EJBTimerServiceでcom.sun.ejb.containers.BaseContainer.callEJBTimeoutでcom.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2044)(BaseContainer.java:4080)で。でcom.sun.ejb.containers.EJBTimerService $ TaskExpiredWork.run(EJBTimerService.java:1919)でcom.sun.ejb.containers.EJBTimerService.access $ 000でdeliverTimeout(EJBTimerService.java:1199)(EJBTimerService.java:89) java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:4 71)、java.util.concurrent.ThreadPoolExecutorのjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)でのjava.util.concurrent.FutureTask.run(FutureTask.java:262)$ Worker.run(ThreadPoolExecutor .java:615)]

私が理解しているのは、いくつかのログファイルが壊れていることです。しかし、私はそれらに触れることさえしなかったし、それはどちらも言わない。

大変ありがとうございます。

+0

分散トランザクションのGlassFish処理のバグのようです。私はGlassFishの代わりにPayaraを試してみることをお勧めします。これは多くのあいまいなGlassFishバグを修正するためです。 – OndrejM

+0

@OndrejMあなたの助言に感謝します。 Payaraについて知りませんでした。それは間違いなく面白い! – GameDroids

答えて

0

*私の回避策**

それが問題を解決していないので、これは、本当に解決策が、回避策はありません。

GlassFishには、JMS(そしておそらく他の)トランザクション用の個別ログファイルがあります。標準のログファイルと同じフォルダにあります。私の場合は :

<path to domain>/logs/server/tx 

私の推測では、そこにいくつかのファイルが破損してしまったということです。今は修正できませんでしたが、GlassFishでトランザクションのログをオフにすることは可能です。 GlassFish管理コンソールで

In the GlassFish admin console

configurations > server-config > Transaction Service 

に移動し、プロパティを追加します。

Name:         Value: 
disable-distributed-transaction-logging true 

は、どうやらこの設定はtune the performanceに主に使用されているが、私の場合は破損してログファイルはもはや問題ではなく、アプリケーションは引き続き実行されています(おそらくさらに高速です)。

関連する問題