Клиентское приложение Corba Java Console (Windows) и Ctrl + C генерируют исключение CORBA.COMM_FAILURE - PullRequest
0 голосов
/ 09 декабря 2010

У меня есть консольное приложение Java (Windows), которое я хочу отключить, когда пользователь нажимает Ctrl + C.Вот почему я использую addShutdownHook для вызова interrupt () в моем рабочем потоке.

Проблема в том, что, когда я нахожусь в середине операции corba (в моем рабочем потоке), и нажимаю Ctrl + C, я получаю CORBA.COMM_FAILURE Исключение.Знаете ли вы, почему это так?

Это трассировка стека:

org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 203  completed: No
        at com.sun.corba.se.impl.logging.ORBUtilSystemException.writeErrorSend(Unknown Source)
        at com.sun.corba.se.impl.logging.ORBUtilSystemException.writeErrorSend(Unknown Source)
        at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.writeLock(Unknown Source)
        at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.sendCancelRequestWithLock(Unknown Source)
        at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.sendCancelRequestIfFinalFragmentNotSent(Unknown Source)
        at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.endRequest(Unknown Source)
        at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.releaseReply(Unknown Source)
        at org.omg.CORBA.portable.ObjectImpl._releaseReply(Unknown Source)
        at INVS._PKICMSStub.UpdateDataInput(_PKICMSStub.java:223)
        at com.infonotary.invssignature.SignerThread.createDetachedCMS(SignerThread.java:289)
        at com.infonotary.invssignature.SignerThread.createDetachedSignature(SignerThread.java:321)
        at com.infonotary.invssignature.SignerThread.signFile(SignerThread.java:378)
        at com.infonotary.invssignature.SignerThread.signDirectory(SignerThread.java:451)
        at com.infonotary.invssignature.SignerThread.run(SignerThread.java:506)

Редактировать: На стороне сервера ошибка:

#1  0x4054c489 in omni::giopStream::CommFailure::_raise
(minor=1096024068, 
    status=CORBA::COMPLETED_NO, retry=false, 
    filename=0x405a2259 "giopStream.cc", linenumber=878, 
    message=0x405a242c "Error in network receive (start of message)", 
    strand=0x8c879b8) at giopStream.cc:581
#2  0x4054cc8c in omni::giopStream::errorOnReceive (this=0x8c533ec,
rc=-1, 
    filename=0x405a2259 "giopStream.cc", lineno=878, buf=0x8cba610, 

Редактировать: Iнажмите Ctrl + C в окне консоли клиента.

Редактировать: Может быть, код CORBA использует операции сна (при отправке и получении), и когда я прерываю рабочий поток, он выдает исключение, и это результат?

1 Ответ

1 голос
/ 11 декабря 2010

Если вы выполняете вызов CORBA и выключаете клиент, я ожидаю, что сервер получит COMM_FAILURE.

...