我有一个在tomcat中运行的java web应用程序,通过hibernate与我的db通信。数据库上的字段is_enabled在数据库上映射为TINYINT
,但hbm.xml
中的布尔值:
<property name="isEnabled" type="boolean">
<column name="is_enabled" />
</property>
我知道映射没有问题,因为我有另一个列,它是一个TINYINT(1)并在hbm.xml中映射为一个布尔值。但是当我添加这个属性时,我的WAR没有加载,而在Tomcat中我得到了几个:
org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [] appears to have started a thread name
[Job_Executor2] but has failed to stop it. This is very likely to
create a memory leak.
知道如何调试这个吗?
答案 0 :(得分:1)
我知道映射没有任何问题,因为我有另一个专栏 这是一个TINYINT(1)并在hbm.xml中映射为布尔值。
仅通过查看布尔属性本身很难评论。也许看看整个hbm.xml可能会给出一个想法。此外,是否在您的应用程序的初始化(或您的一个servlet或bean或您有什么)执行的代码正在查看此属性并使用它执行某些操作?
这种财产本身不太可能是罪魁祸首。机会是内存泄漏(或者你的根本原因)已经存在,并且这个属性的存在(以及休眠中的任何代码......或者应用程序中的 )都会导致引爆点。
也就是说,罪魁祸首不是这个属性。它只是一种催化剂,可以使现有的软件或系统错误显现出来。
知道如何调试这个吗?
对于这样的问题,最好使用像JProfiler这样的专业($$$)分析工具。
但是我还使用了其他开源或免费工具来解决与内存相关的问题(由Web服务,hibernate或者你有什么引起的。)有一些选择。
Eclipse Memory Analyzer - 当我不得不根源导致代码与hibernate交互时出现问题时,这个工具对我来说是天赐之物。
VisualGC和VisualVM - 这些是两个截然不同但密切相关的工具,可以帮助您根本导致问题(或至少缩小问题所在的位置)是)。
像这样的事情需要采取多管齐下的方法,你会发现自己会使用几种工具来遮盖这只猫。
列出上面列出的这三个工具。希望他们能帮忙。