让JavaEE Server记录事务信息

时间:2010-11-02 16:01:19

标签: java-ee glassfish ejb

我正在GlassFish上开发Java EE 6应用程序已有几个月了,但我仍然觉得我不完全理解容器管理事务(以及对持久化上下文的影响)是如何工作的 - 尽管我已经阅读了很多关于基础知识的内容。

为了更好地理解,如果有可能让Java EE-Server(例如GlassFish)在启动/提交/回滚事务时写入日志文件,我会觉得很有意思。这有可能吗?

2 个答案:

答案 0 :(得分:5)

使用GlassFish,您可以通过配置>下的管理控制台启用JTA / JTS的日志记录记录>使用以下类别记录级别

  • JTA - javax.enterprise.resource.jta
  • JTS - javax.enterprise.system.core.transaction

但是日志非常冗长,而且不容易阅读。

您可能还想通过配置>激活管理控制台中交易服务的“监控”。监测即可。然后,转到 Enterprise Server>监控>服务器

答案 1 :(得分:1)

这很好用。您只需要JTA的日志级别 FINE (无需监控)即可:

FINE: TM: getTransaction: tx=null, tm=null
FINE: TM: status: Active
FINE: TM: status: NoTransaction
FINE: --Created new JavaEETransactionImpl, txId = 55
FINE: TM: getTransaction: tx=JavaEETransactionImpl: txId=55 nonXAResource=null jtsTx=null localTxStatus=0 syncs=[], tm=null
FINE: TM: enlistComponentResources
FINE: TM: getTransaction: tx=JavaEETransactionImpl: txId=55 nonXAResource=null jtsTx=null localTxStatus=0 syncs=[], tm=null
FINE: --In JavaEETransactionImpl.registerSynchronization, jtsTx=null nonXAResource=null

正如您在此处所看到的,您可以确定是否使用了新事务,即使用来自JEE6的@TransactionAttribute(至少这是我所假设的)。请注意,只有从bean外部调用时,注释才有效。

但是,您应该将日志轮换的文件大小提高到20-100 MB,因为根据您的应用程序,这将在您的日志中写入大量信息。