在 Glassfish 中设置 Corba 超时

Posted

技术标签:

【中文标题】在 Glassfish 中设置 Corba 超时【英文标题】:Set Corba timeout in Glassfish 【发布时间】:2013-03-27 08:58:13 【问题描述】:

从 jar 客户端调用 EJB 中分配的代码,在 EJB 中执行代码 30 分钟后,我收到超时:

com.sun.corba.ee.impl.transport.CorbaResponseWaitingRoomImpl waitForResponse
WARNING: "IOP00410219: (COMM_FAILURE) Communications timeout waiting for response.  Exceeded 1,800,000 milliseconds"
org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 219 completed: Maybe
            at com.sun.corba.ee.impl.logging.ORBUtilSystemException.communicationsTimeoutWaitingForResponse(ORBUtilSystemException.java:3180)
            at com.sun.corba.ee.impl.logging.ORBUtilSystemException.communicationsTimeoutWaitingForResponse(ORBUtilSystemException.java:3195)
            at com.sun.corba.ee.impl.transport.CorbaResponseWaitingRoomImpl.waitForResponse(CorbaResponseWaitingRoomImpl.java:198)
            at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.waitForResponse(SocketOrChannelConnectionImpl.java:1196)
            at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.waitForResponse(CorbaMessageMediatorImpl.java:291)
            at com.sun.corba.ee.impl.protocol.CorbaClientRequestDispatcherImpl.marshalingComplete1(CorbaClientRequestDispatcherImpl.java:389)
            at com.sun.corba.ee.impl.protocol.CorbaClientRequestDispatcherImpl.marshalingComplete(CorbaClientRequestDispatcherImpl.java:357)
            at com.sun.corba.ee.impl.protocol.CorbaClientDelegateImpl.invoke(CorbaClientDelegateImpl.java:219)
            at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:192)
            at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:152)
            at com.sun.corba.ee.impl.presentation.rmi.bcel.BCELStubBase.invoke(BCELStubBase.java:225)

    ...

    javax.ejb.EJBException: nested exception is: java.rmi.MarshalException: CORBA COMM_FAILURE 1398079707 Maybe; nested exception is: 
        org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 219 completed: Maybe
    java.rmi.MarshalException: CORBA COMM_FAILURE 1398079707 Maybe; nested exception is: 
        org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 219 completed: Maybe
        at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.mapSystemException(Util.java:271)
        at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:205)
        at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:152)
        at com.sun.corba.ee.impl.presentation.rmi.bcel.BCELStubBase.invoke(BCELStubBase.java:225)

我正在使用 Glassfish 2.1、Java 1.6_20。例如,有没有办法将此超时定义为一小时?这是 Glassfish 依赖吗?可能有一些配置?

提前感谢您的帮助! 问候。

【问题讨论】:

【参考方案1】:

您可以尝试将属性添加到您的 URL,如下所示:

http://test.com/Client?prop=com.sun.corba.ee.transport.ORBWaitForResponseTimeout=7200000

您可以为this article 中描述的 JVM 设置其他设置,但我不确定它们是否适用于您的 glassfish 版本。

【讨论】:

感谢您回答 unwichtich。我无法使参数起作用。但我一直在尝试优化流程:D

以上是关于在 Glassfish 中设置 Corba 超时的主要内容,如果未能解决你的问题,请参考以下文章

如何在jdbc中设置锁定超时

在实体框架中设置数据库超时

如何在 SQLAlchemy 中设置连接超时

在 Spring WebFlux webclient 中设置超时

如何在 groovy sql 中设置连接超时?

使用角度服务在多个组件中设置超时