好的,这让我很难过。我在一个运行在websphere上的RAD中有一个webapp项目,该项目使用对包含所有模型代码(包括我的hibernate逻辑)的lib项目的项目引用。 lib目录的Junit测试工作正常。在webapp项目中进行junit测试,但在J2EE容器外部运行工作正常。但是,一旦我们在J2EE容器中运行,相同的代码就会崩溃JVM。
请注意,并非所有代码都这样做。更新工作正常。然而,一个石英进程在sessions.createQuery上死亡,一个Web服务调用在createQuery上消失。当我说'死'时,我的意思是整个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)\IBM\SDP\runtimes\base_v7\java\jre\bin\j9vm24.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.orm.hibernate4.HibernateTransactionManager配置为我们的事务管理器。
有什么想法吗?
答案 0 :(得分:0)
解决。这是交易 - 这只会在调试模式下发生。在运行模式下,我们实际上在antlr类上得到了一个NoClassDefError。我们未能将antler移动到web-inf / lib中,但它在lib项目的依赖项中是WAS,这就是Junit运行的原因。一旦复制过这个问题就消失了。我想antlr是Hibernate的依赖。
这里的大问题是为什么调试器融化了JVM而不是给出一个让我们有机会解决问题的异常,但我们已经解决了我们的问题。