我在GlassFish上开发JavaEE6应用程序已经有几个月了,但是我仍然觉得我不能完全理解容器如何管理事务(以及对持久化上下文的影响)--尽管我读了很多关于底层基础知识的文章。
为了更好地理解,如果Java Server(例如GlassFish)可以在启动/提交/回滚事务时写入日志文件,我会觉得很有趣。这有没有可能呢?
发布于 2010-11-03 02:22:19
使用GlassFish,您可以通过管理控制台在Configuration > logging > Log Level下使用以下类别启用JTA / JTS日志:
javax.enterprise.resource.jta
但是日志非常冗长,并且不容易阅读。
您可能还希望在管理控制台中通过Configuration>Monitoring激活对事务服务的“监视”。然后,转到企业服务器>监视器>服务器。
发布于 2013-12-18 23:31:34
这可以很好地工作。你只需要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-100MB,因为根据您的应用程序,这将在您的日志中写入大量信息。
https://stackoverflow.com/questions/4079560
复制相似问题