Hibernate使Session.createQuery上的jvm崩溃



好吧,这让我很困惑。我有一个在websphere上运行的RAD中的web应用程序项目,该项目使用对lib项目的项目引用,该项目包含包括我的hibernate逻辑在内的所有模型代码。lib目录的Junit测试运行良好。webapp项目中的junit测试,但在J2EE容器之外运行效果良好。然而,一旦我们在J2EE容器中运行,同样的代码就会使JVM崩溃。

请注意,并非所有代码都能做到这一点。更新工作正常。然而,一个石英进程在sessions.createQuery上死亡,一个web服务调用在createQuery上死亡。当我说"dies"时,我的意思是整个JVM都会关闭,并向控制台喷出以下转储:

Unhandled exception
Type=Unhandled trap vmState=0x00040000
J9Generic_Signal_Number=00000040 ExceptionCode=c00000fd ExceptionAddress=003A065D ContextFlags=0001007f
Handler1=0037A0C0 Handler2=003DC000
EDI=0037F178 ESI=26EDEB30 EAX=26EDEC00 EBX=00006030
ECX=33594900 EDX=33594900
EIP=003A065D ESP=2DB63000 EBP=002B2828 EFLAGS=00010206
GS=002B FS=0053 ES=002B DS=002B
Module=C:Program Files (x86)IBMSDPruntimesbase_v7javajrebinj9vm24.dll
Module_base_address=00370000 Offset_in_DLL=0003065d
Target=2_40_20110216_075791 (Windows 7 6.1 build 7601 Service Pack 1)
CPU=x86 (4 logical CPUs) (0x1f890f000 RAM)
----------- Stack Backtrace -----------

查询似乎是正确的(正如我所说,它们在j2ee容器之外工作)。如果有帮助的话,这里有一个:

Query sql = s.createQuery("from Type t where t.typeCode=? and t.applicationCode=? ");

我们以前从未见过这种情况,也没有得到太多Goggle的牵引力。我们使用的是Windows 7、RAD 8、WAS 7.0.0.17、Hibernate 4.1.9、DB2 XA数据源,我认为这并不重要,但我们已经将org.springframework.org.hibernate4.Hibernate TransactionManager配置为我们的事务管理器。

有什么想法吗?

已解决。协议是这样的——这只会在调试模式下发生。在Run模式下,我们实际上在一个antlr类上得到了一个NoClassDefError。我们未能将鹿角移到web-inf/lib中,但它位于lib项目的依赖项中,这就是Junit运行的原因。这个问题一旦被复制就消失了。我猜antlr是Hibernate的依赖项。

这里最大的谜团是,为什么调试器融化了JVM,而不是给出一个异常,让我们有机会解决问题,但我们已经解决了问题。

最新更新