我正在使用全新的 Glassfish 安装,几乎没有自定义。
我有一个消息驱动 Bean (ObjectUpdateMDB),它侦听一个主题,然后更新它在数据库中接收到的对象。有很多对象正在更新。运行一段时间后,我得到了这个异常:
严重:JTS5031:资源 [回滚] 操作上的异常 [org.omg.CORBA.INTERNAL:vmcid:0x0 次要代码:0 已完成:可能]。 严重:MDB00049:消息驱动 bean [Persistence:ObjectUpdateMDB]:postinvoke 中的异常:[javax.transaction.SystemException:org.omg.CORBA.INTERNAL:JTS5031:异常 [org.omg.CORBA.INTERNAL:vmcid:0x0 次要代码: 0 完成:可能] 对资源 [回滚] 操作。vmcid:0x0 次要代码:0 已完成:否] 严重:javax.transaction.SystemException javax.transaction.SystemException:org.omg.CORBA.INTERNAL:JTS5031:资源[回滚]操作上的异常[org.omg.CORBA.INTERNAL:vmcid:0x0次要代码:0已完成:可能]。vmcid:0x0 次要代码:0 已完成:否 在 com.sun.jts.jta.TransactionManagerImpl.rollback(TransactionManagerImpl.java:350) 在 com.sun.enterprise.distributedtx.J2EETransactionManagerImpl.rollback(J2EETransactionManagerImpl.java:1144) 在 com.sun.enterprise.distributedtx.J2EETransactionManagerOpt.rollback(J2EETransactionManagerOpt.java:426) 在 com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:3767) 在 com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:3571) 在 com.sun.ejb.containers.MessageBeanContainer.afterMessageDeliveryInternal(MessageBeanContainer.java:1226) 在 com.sun.ejb.containers.MessageBeanContainer.afterMessageDelivery(MessageBeanContainer.java:1197) 在 com.sun.ejb.containers.MessageBeanListenerImpl.afterMessageDelivery(MessageBeanListenerImpl.java:79) 在 com.sun.enterprise.connectors.inflow.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:139) 在 $Proxy98.afterDelivery(未知来源) 在 com.sun.messaging.jms.ra.OnMessageRunner.run(OnMessageRunner.java:324) 在 com.sun.enterprise.connectors.work.OneWork.doWork(OneWork.java:76) 在 com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:555) 信息:MDB00037:[Persistence:ObjectUpdateMDB]:消息驱动的 bean 调用异常:[java.lang.OutOfMemoryError:Java 堆空间] 信息:java.lang.OutOfMemoryError java.lang.OutOfMemoryError:Java 堆空间
看起来这是堆空间的问题。我需要调整堆空间做什么?应用服务器本身还是代理?我该怎么做呢?