好吧,这让我难住了。我有一个在 websphere 上运行的 RAD 中的 webapp 项目,它使用对包含所有模型代码(包括我的休眠逻辑)的 lib 项目的项目引用。lib 目录的 Junit 测试工作正常。webapp 项目中的 junit 测试,但在 J2EE 容器之外运行正常。然而,一旦我们在 J2EE 容器中运行,同样的代码会使 JVM 崩溃。
请注意,并非所有代码都这样做。更新工作正常。然而,一个石英进程在 session.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 配置为我们的事务经理。
有任何想法吗?