玻璃鱼中的爪哇2。x、 验证“sunejbjar.xml”中的“cmttimeoutionseconds”设置
我的团队正在GlassFish 2上的“sunEJBjar.xml”文件中使用“cmt超时秒数”设置。x服务器,用于控制EJB模块的事务超时阈值
我意识到这是一个相当广泛的问题。。。但是我们遇到了一些问题(我自己也不确定所有的细节),我被要求验证“cmt超时(秒)”是否被实际使用
除了编写新的自定义代码进行测试外,是否有人知道从应用程序服务器询问或确定这一点的方法?我甚至不确定如果我必须走这条路,我会写什么样的自定义代码
# 1 楼答案
似乎最简单的答案就是编写一个小测试用例。我刚刚创建了一个简单的EJB,在“
sun-ejb-jar.xml
”中有一个自定义的CMT超时设置然后,我在这个EJB类上编写了一个方法,并对其进行了注释,以要求它自己的新事务。这个方法做了三件事:(1)写一条日志消息,(2)使用
Thread.sleep()
暂停执行一段时间,(3)写第二条日志消息通过使用大于或小于CMT超时设置的睡眠值,我能够确认应用了设置
然而,我从中学到了一个有趣的提示。。。当EJB3方法的容器管理事务超时时,它不会中断或停止该方法的执行!该方法继续执行(或保持挂起),直到该方法返回后,才会处理和记录超时的结果。有趣的行为,如果您没有意识到,可能会导致一些严重的错误。有关更多详细信息,请参见this article