Java Code Examples for com.sun.corba.se.spi.protocol.CorbaMessageMediator#getBroker()
The following examples show how to use
com.sun.corba.se.spi.protocol.CorbaMessageMediator#getBroker() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: CorbaClientRequestDispatcherImpl.java From openjdk-jdk8u with GNU General Public License v2.0 | 5 votes |
protected void addServiceContexts(CorbaMessageMediator messageMediator) { ORB orb = (ORB)messageMediator.getBroker(); CorbaConnection c = (CorbaConnection) messageMediator.getConnection(); GIOPVersion giopVersion = messageMediator.getGIOPVersion(); ServiceContexts contexts = messageMediator.getRequestServiceContexts(); addCodeSetServiceContext(c, contexts, giopVersion); // Add the RMI-IIOP max stream format version // service context to every request. Once we have GIOP 1.3, // we could skip it since we now support version 2, but // probably safer to always send it. contexts.put(MaxStreamFormatVersionServiceContext.singleton); // ORBVersion servicecontext needs to be sent ORBVersionServiceContext ovsc = new ORBVersionServiceContext( ORBVersionFactory.getORBVersion() ) ; contexts.put( ovsc ) ; // NOTE : We only want to send the runtime context the first time if ((c != null) && !c.isPostInitialContexts()) { // Do not do c.setPostInitialContexts() here. // If a client interceptor send_request does a ForwardRequest // which ends up using the same connection then the service // context would not be sent. SendingContextServiceContext scsc = new SendingContextServiceContext( orb.getFVDCodeBaseIOR() ) ; //d11638 contexts.put( scsc ) ; } }
Example 2
Source File: SpecialMethod.java From JDKSourceCode1.8 with MIT License | 5 votes |
public CorbaMessageMediator invoke(java.lang.Object servant, CorbaMessageMediator request, byte[] objectId, ObjectAdapter objectAdapter) { if ((servant == null) || (servant instanceof NullServant)) { ORB orb = (ORB)request.getBroker() ; ORBUtilSystemException wrapper = ORBUtilSystemException.get( orb, CORBALogDomains.OA_INVOCATION ) ; return request.getProtocolHandler().createSystemExceptionResponse( request, wrapper.badSkeleton(), null); } String[] ids = objectAdapter.getInterfaces( servant, objectId ); String clientId = ((InputStream)request.getInputObject()).read_string(); boolean answer = false; for(int i = 0; i < ids.length; i++) if (ids[i].equals(clientId)) { answer = true; break; } CorbaMessageMediator response = request.getProtocolHandler().createResponse(request, null); ((OutputStream)response.getOutputObject()).write_boolean(answer); return response; }
Example 3
Source File: CorbaMessageMediatorImpl.java From openjdk-jdk8u with GNU General Public License v2.0 | 5 votes |
private void beginRequest(CorbaMessageMediator messageMediator) { ORB orb = (ORB) messageMediator.getBroker(); if (orb.subcontractDebugFlag) { dprint(".handleRequest->:"); } connection.serverRequestProcessingBegins(); }
Example 4
Source File: CorbaMessageMediatorImpl.java From openjdk-jdk8u with GNU General Public License v2.0 | 5 votes |
private void endRequest(CorbaMessageMediator messageMediator) { ORB orb = (ORB) messageMediator.getBroker(); if (orb.subcontractDebugFlag) { dprint(".handleRequest<-: " + opAndId(messageMediator)); } // release NIO ByteBuffers to ByteBufferPool try { OutputObject outputObj = messageMediator.getOutputObject(); if (outputObj != null) { outputObj.close(); } InputObject inputObj = messageMediator.getInputObject(); if (inputObj != null) { inputObj.close(); } } catch (IOException ex) { // Given what close() does, this catch shouldn't ever happen. // See CDRInput/OutputObject.close() for more info. // It also won't result in a Corba error if an IOException happens. if (orb.subcontractDebugFlag) { dprint(".endRequest: IOException:" + ex.getMessage(), ex); } } finally { ((CorbaConnection)messageMediator.getConnection()).serverRequestProcessingEnds(); } }
Example 5
Source File: CorbaMessageMediatorImpl.java From openjdk-8-source with GNU General Public License v2.0 | 5 votes |
private void endRequest(CorbaMessageMediator messageMediator) { ORB orb = (ORB) messageMediator.getBroker(); if (orb.subcontractDebugFlag) { dprint(".handleRequest<-: " + opAndId(messageMediator)); } // release NIO ByteBuffers to ByteBufferPool try { OutputObject outputObj = messageMediator.getOutputObject(); if (outputObj != null) { outputObj.close(); } InputObject inputObj = messageMediator.getInputObject(); if (inputObj != null) { inputObj.close(); } } catch (IOException ex) { // Given what close() does, this catch shouldn't ever happen. // See CDRInput/OutputObject.close() for more info. // It also won't result in a Corba error if an IOException happens. if (orb.subcontractDebugFlag) { dprint(".endRequest: IOException:" + ex.getMessage(), ex); } } finally { ((CorbaConnection)messageMediator.getConnection()).serverRequestProcessingEnds(); } }
Example 6
Source File: CorbaMessageMediatorImpl.java From TencentKona-8 with GNU General Public License v2.0 | 5 votes |
private void beginRequest(CorbaMessageMediator messageMediator) { ORB orb = (ORB) messageMediator.getBroker(); if (orb.subcontractDebugFlag) { dprint(".handleRequest->:"); } connection.serverRequestProcessingBegins(); }
Example 7
Source File: CorbaClientRequestDispatcherImpl.java From openjdk-jdk9 with GNU General Public License v2.0 | 5 votes |
protected void addServiceContexts(CorbaMessageMediator messageMediator) { ORB orb = (ORB)messageMediator.getBroker(); CorbaConnection c = (CorbaConnection) messageMediator.getConnection(); GIOPVersion giopVersion = messageMediator.getGIOPVersion(); ServiceContexts contexts = messageMediator.getRequestServiceContexts(); addCodeSetServiceContext(c, contexts, giopVersion); // Add the RMI-IIOP max stream format version // service context to every request. Once we have GIOP 1.3, // we could skip it since we now support version 2, but // probably safer to always send it. contexts.put(MaxStreamFormatVersionServiceContext.singleton); // ORBVersion servicecontext needs to be sent ORBVersionServiceContext ovsc = new ORBVersionServiceContext( ORBVersionFactory.getORBVersion() ) ; contexts.put( ovsc ) ; // NOTE : We only want to send the runtime context the first time if ((c != null) && !c.isPostInitialContexts()) { // Do not do c.setPostInitialContexts() here. // If a client interceptor send_request does a ForwardRequest // which ends up using the same connection then the service // context would not be sent. SendingContextServiceContext scsc = new SendingContextServiceContext( orb.getFVDCodeBaseIOR() ) ; //d11638 contexts.put( scsc ) ; } }
Example 8
Source File: CorbaMessageMediatorImpl.java From JDKSourceCode1.8 with MIT License | 5 votes |
public void handleThrowableDuringServerDispatch( CorbaMessageMediator messageMediator, Throwable throwable, CompletionStatus completionStatus) { if (((ORB)messageMediator.getBroker()).subcontractDebugFlag) { dprint(".handleThrowableDuringServerDispatch: " + opAndId(messageMediator) + ": " + throwable); } // If we haven't unmarshaled the header, we probably don't // have enough information to even send back a reply. // REVISIT // Cannot do this check. When target addressing disposition does // not match (during header unmarshaling) it throws an exception // to be handled here. /* if (! ((CDRInputObject)messageMediator.getInputObject()) .unmarshaledHeader()) { return; } */ handleThrowableDuringServerDispatch(messageMediator, throwable, completionStatus, 1); }
Example 9
Source File: SpecialMethod.java From TencentKona-8 with GNU General Public License v2.0 | 5 votes |
public CorbaMessageMediator invoke(java.lang.Object servant, CorbaMessageMediator request, byte[] objectId, ObjectAdapter objectAdapter) { if ((servant == null) || (servant instanceof NullServant)) { ORB orb = (ORB)request.getBroker() ; ORBUtilSystemException wrapper = ORBUtilSystemException.get( orb, CORBALogDomains.OA_INVOCATION ) ; return request.getProtocolHandler().createSystemExceptionResponse( request, wrapper.badSkeleton(), null); } String[] ids = objectAdapter.getInterfaces( servant, objectId ); String clientId = ((InputStream)request.getInputObject()).read_string(); boolean answer = false; for(int i = 0; i < ids.length; i++) if (ids[i].equals(clientId)) { answer = true; break; } CorbaMessageMediator response = request.getProtocolHandler().createResponse(request, null); ((OutputStream)response.getOutputObject()).write_boolean(answer); return response; }
Example 10
Source File: CorbaMessageMediatorImpl.java From JDKSourceCode1.8 with MIT License | 5 votes |
private void endRequest(CorbaMessageMediator messageMediator) { ORB orb = (ORB) messageMediator.getBroker(); if (orb.subcontractDebugFlag) { dprint(".handleRequest<-: " + opAndId(messageMediator)); } // release NIO ByteBuffers to ByteBufferPool try { OutputObject outputObj = messageMediator.getOutputObject(); if (outputObj != null) { outputObj.close(); } InputObject inputObj = messageMediator.getInputObject(); if (inputObj != null) { inputObj.close(); } } catch (IOException ex) { // Given what close() does, this catch shouldn't ever happen. // See CDRInput/OutputObject.close() for more info. // It also won't result in a Corba error if an IOException happens. if (orb.subcontractDebugFlag) { dprint(".endRequest: IOException:" + ex.getMessage(), ex); } } finally { ((CorbaConnection)messageMediator.getConnection()).serverRequestProcessingEnds(); } }
Example 11
Source File: CorbaMessageMediatorImpl.java From hottub with GNU General Public License v2.0 | 5 votes |
private void beginRequest(CorbaMessageMediator messageMediator) { ORB orb = (ORB) messageMediator.getBroker(); if (orb.subcontractDebugFlag) { dprint(".handleRequest->:"); } connection.serverRequestProcessingBegins(); }
Example 12
Source File: CorbaMessageMediatorImpl.java From jdk8u60 with GNU General Public License v2.0 | 4 votes |
protected CorbaMessageMediator createResponseHelper( CorbaMessageMediator messageMediator, ReplyMessage reply, IOR ior) { // REVISIT - these should be invoked from subcontract. runServantPostInvoke(messageMediator); runInterceptors(messageMediator, reply); runRemoveThreadInfo(messageMediator); if (((ORB)messageMediator.getBroker()).subcontractDebugFlag) { dprint(".createResponseHelper: " + opAndId(messageMediator) + ": " + reply); } messageMediator.setReplyHeader(reply); OutputObject replyOutputObject; // REVISIT = do not use null. // if (messageMediator.getConnection() == null) { replyOutputObject = sun.corba.OutputStreamFactory.newCDROutputObject(orb, messageMediator, messageMediator.getReplyHeader(), messageMediator.getStreamFormatVersion(), BufferManagerFactory.GROW); } else { replyOutputObject = messageMediator.getConnection().getAcceptor() .createOutputObject(messageMediator.getBroker(), messageMediator); } messageMediator.setOutputObject(replyOutputObject); messageMediator.getOutputObject().setMessageMediator(messageMediator); reply.write((OutputStream) messageMediator.getOutputObject()); if (reply.getIOR() != null) { reply.getIOR().write((OutputStream) messageMediator.getOutputObject()); } // REVISIT - not necessary? //messageMediator.this.replyIOR = reply.getIOR(); // NOTE: The mediator holds onto output object so return value // not really necessary. return messageMediator; }
Example 13
Source File: CorbaMessageMediatorImpl.java From TencentKona-8 with GNU General Public License v2.0 | 4 votes |
protected void handleThrowableDuringServerDispatch( CorbaMessageMediator messageMediator, Throwable throwable, CompletionStatus completionStatus, int iteration) { if (iteration > 10) { if (((ORB)messageMediator.getBroker()).subcontractDebugFlag) { dprint(".handleThrowableDuringServerDispatch: " + opAndId(messageMediator) + ": cannot handle: " + throwable); } // REVISIT - should we close connection? RuntimeException rte = new RuntimeException("handleThrowableDuringServerDispatch: " + "cannot create response."); rte.initCause(throwable); throw rte; } try { if (throwable instanceof ForwardException) { ForwardException fex = (ForwardException)throwable ; createLocationForward( messageMediator, fex.getIOR(), null ) ; return; } if (throwable instanceof AddressingDispositionException) { handleAddressingDisposition( messageMediator, (AddressingDispositionException)throwable); return; } // Else. SystemException sex = convertThrowableToSystemException(throwable, completionStatus); createSystemExceptionResponse(messageMediator, sex, null); return; } catch (Throwable throwable2) { // User code (e.g., postinvoke, interceptors) may change // the exception, so we end up back here. // Report the changed exception. handleThrowableDuringServerDispatch(messageMediator, throwable2, completionStatus, iteration + 1); return; } }
Example 14
Source File: CorbaMessageMediatorImpl.java From hottub with GNU General Public License v2.0 | 4 votes |
protected CorbaMessageMediator createResponseHelper( CorbaMessageMediator messageMediator, ReplyMessage reply, IOR ior) { // REVISIT - these should be invoked from subcontract. runServantPostInvoke(messageMediator); runInterceptors(messageMediator, reply); runRemoveThreadInfo(messageMediator); if (((ORB)messageMediator.getBroker()).subcontractDebugFlag) { dprint(".createResponseHelper: " + opAndId(messageMediator) + ": " + reply); } messageMediator.setReplyHeader(reply); OutputObject replyOutputObject; // REVISIT = do not use null. // if (messageMediator.getConnection() == null) { replyOutputObject = sun.corba.OutputStreamFactory.newCDROutputObject(orb, messageMediator, messageMediator.getReplyHeader(), messageMediator.getStreamFormatVersion(), BufferManagerFactory.GROW); } else { replyOutputObject = messageMediator.getConnection().getAcceptor() .createOutputObject(messageMediator.getBroker(), messageMediator); } messageMediator.setOutputObject(replyOutputObject); messageMediator.getOutputObject().setMessageMediator(messageMediator); reply.write((OutputStream) messageMediator.getOutputObject()); if (reply.getIOR() != null) { reply.getIOR().write((OutputStream) messageMediator.getOutputObject()); } // REVISIT - not necessary? //messageMediator.this.replyIOR = reply.getIOR(); // NOTE: The mediator holds onto output object so return value // not really necessary. return messageMediator; }
Example 15
Source File: CorbaMessageMediatorImpl.java From openjdk-jdk8u with GNU General Public License v2.0 | 4 votes |
protected CorbaMessageMediator createResponseHelper( CorbaMessageMediator messageMediator, ReplyMessage reply, IOR ior) { // REVISIT - these should be invoked from subcontract. runServantPostInvoke(messageMediator); runInterceptors(messageMediator, reply); runRemoveThreadInfo(messageMediator); if (((ORB)messageMediator.getBroker()).subcontractDebugFlag) { dprint(".createResponseHelper: " + opAndId(messageMediator) + ": " + reply); } messageMediator.setReplyHeader(reply); OutputObject replyOutputObject; // REVISIT = do not use null. // if (messageMediator.getConnection() == null) { replyOutputObject = sun.corba.OutputStreamFactory.newCDROutputObject(orb, messageMediator, messageMediator.getReplyHeader(), messageMediator.getStreamFormatVersion(), BufferManagerFactory.GROW); } else { replyOutputObject = messageMediator.getConnection().getAcceptor() .createOutputObject(messageMediator.getBroker(), messageMediator); } messageMediator.setOutputObject(replyOutputObject); messageMediator.getOutputObject().setMessageMediator(messageMediator); reply.write((OutputStream) messageMediator.getOutputObject()); if (reply.getIOR() != null) { reply.getIOR().write((OutputStream) messageMediator.getOutputObject()); } // REVISIT - not necessary? //messageMediator.this.replyIOR = reply.getIOR(); // NOTE: The mediator holds onto output object so return value // not really necessary. return messageMediator; }
Example 16
Source File: CorbaMessageMediatorImpl.java From openjdk-jdk9 with GNU General Public License v2.0 | 4 votes |
public CorbaMessageMediator createSystemExceptionResponse( CorbaMessageMediator messageMediator, SystemException ex, ServiceContexts svc) { if (messageMediator.getConnection() != null) { // It is possible that fragments of response have already been // sent. Then an error may occur (e.g. marshaling error like // non serializable object). In that case it is too late // to send the exception. We just return the existing fragmented // stream here. This will cause an incomplete last fragment // to be sent. Then the other side will get a marshaling error // when attempting to unmarshal. // REVISIT: Impl - make interface method to do the following. CorbaMessageMediatorImpl mediator = (CorbaMessageMediatorImpl) ((CorbaConnection)messageMediator.getConnection()) .serverRequestMapGet(messageMediator.getRequestId()); OutputObject existingOutputObject = null; if (mediator != null) { existingOutputObject = mediator.getOutputObject(); } // REVISIT: need to think about messageMediator containing correct // pointer to output object. if (existingOutputObject != null && mediator.sentFragment() && ! mediator.sentFullMessage()) { return mediator; } } // Only do this if interceptors have been initialized on this request // and have not completed their lifecycle (otherwise the info stack // may be empty or have a different request's entry on top). if (messageMediator.executePIInResponseConstructor()) { // REVISIT: not necessary in framework now? // Inform Portable Interceptors of the SystemException. This is // required to be done here because the ending interception point // is called in the when creating the response below // but we do not currently write the SystemException into the // response until after the ending point is called. ((ORB)messageMediator.getBroker()).getPIHandler().setServerPIInfo( ex ); } if (((ORB)messageMediator.getBroker()).subcontractDebugFlag && ex != null) { dprint(".createSystemExceptionResponse: " + opAndId(messageMediator), ex); } ServiceContexts serviceContexts = getServiceContextsForReply(messageMediator, svc); // NOTE: We MUST add the service context before creating // the response since service contexts are written to the // stream when the response object is created. addExceptionDetailMessage(messageMediator, ex, serviceContexts); CorbaMessageMediator response = createResponseHelper(messageMediator, serviceContexts, false); // NOTE: From here on, it is too late to add more service contexts. // They have already been serialized to the stream (and maybe fragments // sent). ORBUtility.writeSystemException( ex, (OutputStream)response.getOutputObject()); return response; }
Example 17
Source File: CorbaMessageMediatorImpl.java From openjdk-8-source with GNU General Public License v2.0 | 4 votes |
public CorbaMessageMediator createSystemExceptionResponse( CorbaMessageMediator messageMediator, SystemException ex, ServiceContexts svc) { if (messageMediator.getConnection() != null) { // It is possible that fragments of response have already been // sent. Then an error may occur (e.g. marshaling error like // non serializable object). In that case it is too late // to send the exception. We just return the existing fragmented // stream here. This will cause an incomplete last fragment // to be sent. Then the other side will get a marshaling error // when attempting to unmarshal. // REVISIT: Impl - make interface method to do the following. CorbaMessageMediatorImpl mediator = (CorbaMessageMediatorImpl) ((CorbaConnection)messageMediator.getConnection()) .serverRequestMapGet(messageMediator.getRequestId()); OutputObject existingOutputObject = null; if (mediator != null) { existingOutputObject = mediator.getOutputObject(); } // REVISIT: need to think about messageMediator containing correct // pointer to output object. if (existingOutputObject != null && mediator.sentFragment() && ! mediator.sentFullMessage()) { return mediator; } } // Only do this if interceptors have been initialized on this request // and have not completed their lifecycle (otherwise the info stack // may be empty or have a different request's entry on top). if (messageMediator.executePIInResponseConstructor()) { // REVISIT: not necessary in framework now? // Inform Portable Interceptors of the SystemException. This is // required to be done here because the ending interception point // is called in the when creating the response below // but we do not currently write the SystemException into the // response until after the ending point is called. ((ORB)messageMediator.getBroker()).getPIHandler().setServerPIInfo( ex ); } if (((ORB)messageMediator.getBroker()).subcontractDebugFlag && ex != null) { dprint(".createSystemExceptionResponse: " + opAndId(messageMediator), ex); } ServiceContexts serviceContexts = getServiceContextsForReply(messageMediator, svc); // NOTE: We MUST add the service context before creating // the response since service contexts are written to the // stream when the response object is created. addExceptionDetailMessage(messageMediator, ex, serviceContexts); CorbaMessageMediator response = createResponseHelper(messageMediator, serviceContexts, false); // NOTE: From here on, it is too late to add more service contexts. // They have already been serialized to the stream (and maybe fragments // sent). ORBUtility.writeSystemException( ex, (OutputStream)response.getOutputObject()); return response; }
Example 18
Source File: CorbaMessageMediatorImpl.java From TencentKona-8 with GNU General Public License v2.0 | 4 votes |
public CorbaMessageMediator createSystemExceptionResponse( CorbaMessageMediator messageMediator, SystemException ex, ServiceContexts svc) { if (messageMediator.getConnection() != null) { // It is possible that fragments of response have already been // sent. Then an error may occur (e.g. marshaling error like // non serializable object). In that case it is too late // to send the exception. We just return the existing fragmented // stream here. This will cause an incomplete last fragment // to be sent. Then the other side will get a marshaling error // when attempting to unmarshal. // REVISIT: Impl - make interface method to do the following. CorbaMessageMediatorImpl mediator = (CorbaMessageMediatorImpl) ((CorbaConnection)messageMediator.getConnection()) .serverRequestMapGet(messageMediator.getRequestId()); OutputObject existingOutputObject = null; if (mediator != null) { existingOutputObject = mediator.getOutputObject(); } // REVISIT: need to think about messageMediator containing correct // pointer to output object. if (existingOutputObject != null && mediator.sentFragment() && ! mediator.sentFullMessage()) { return mediator; } } // Only do this if interceptors have been initialized on this request // and have not completed their lifecycle (otherwise the info stack // may be empty or have a different request's entry on top). if (messageMediator.executePIInResponseConstructor()) { // REVISIT: not necessary in framework now? // Inform Portable Interceptors of the SystemException. This is // required to be done here because the ending interception point // is called in the when creating the response below // but we do not currently write the SystemException into the // response until after the ending point is called. ((ORB)messageMediator.getBroker()).getPIHandler().setServerPIInfo( ex ); } if (((ORB)messageMediator.getBroker()).subcontractDebugFlag && ex != null) { dprint(".createSystemExceptionResponse: " + opAndId(messageMediator), ex); } ServiceContexts serviceContexts = getServiceContextsForReply(messageMediator, svc); // NOTE: We MUST add the service context before creating // the response since service contexts are written to the // stream when the response object is created. addExceptionDetailMessage(messageMediator, ex, serviceContexts); CorbaMessageMediator response = createResponseHelper(messageMediator, serviceContexts, false); // NOTE: From here on, it is too late to add more service contexts. // They have already been serialized to the stream (and maybe fragments // sent). ORBUtility.writeSystemException( ex, (OutputStream)response.getOutputObject()); return response; }
Example 19
Source File: CorbaMessageMediatorImpl.java From openjdk-jdk8u with GNU General Public License v2.0 | 4 votes |
public CorbaMessageMediator createSystemExceptionResponse( CorbaMessageMediator messageMediator, SystemException ex, ServiceContexts svc) { if (messageMediator.getConnection() != null) { // It is possible that fragments of response have already been // sent. Then an error may occur (e.g. marshaling error like // non serializable object). In that case it is too late // to send the exception. We just return the existing fragmented // stream here. This will cause an incomplete last fragment // to be sent. Then the other side will get a marshaling error // when attempting to unmarshal. // REVISIT: Impl - make interface method to do the following. CorbaMessageMediatorImpl mediator = (CorbaMessageMediatorImpl) ((CorbaConnection)messageMediator.getConnection()) .serverRequestMapGet(messageMediator.getRequestId()); OutputObject existingOutputObject = null; if (mediator != null) { existingOutputObject = mediator.getOutputObject(); } // REVISIT: need to think about messageMediator containing correct // pointer to output object. if (existingOutputObject != null && mediator.sentFragment() && ! mediator.sentFullMessage()) { return mediator; } } // Only do this if interceptors have been initialized on this request // and have not completed their lifecycle (otherwise the info stack // may be empty or have a different request's entry on top). if (messageMediator.executePIInResponseConstructor()) { // REVISIT: not necessary in framework now? // Inform Portable Interceptors of the SystemException. This is // required to be done here because the ending interception point // is called in the when creating the response below // but we do not currently write the SystemException into the // response until after the ending point is called. ((ORB)messageMediator.getBroker()).getPIHandler().setServerPIInfo( ex ); } if (((ORB)messageMediator.getBroker()).subcontractDebugFlag && ex != null) { dprint(".createSystemExceptionResponse: " + opAndId(messageMediator), ex); } ServiceContexts serviceContexts = getServiceContextsForReply(messageMediator, svc); // NOTE: We MUST add the service context before creating // the response since service contexts are written to the // stream when the response object is created. addExceptionDetailMessage(messageMediator, ex, serviceContexts); CorbaMessageMediator response = createResponseHelper(messageMediator, serviceContexts, false); // NOTE: From here on, it is too late to add more service contexts. // They have already been serialized to the stream (and maybe fragments // sent). ORBUtility.writeSystemException( ex, (OutputStream)response.getOutputObject()); return response; }
Example 20
Source File: CorbaClientRequestDispatcherImpl.java From openjdk-8-source with GNU General Public License v2.0 | 4 votes |
protected void continueOrThrowSystemOrRemarshal( CorbaMessageMediator messageMediator, Exception exception) throws SystemException, RemarshalException { ORB orb = (ORB) messageMediator.getBroker(); if( exception == null ) { // do nothing. } else if( exception instanceof RemarshalException ) { // REVISIT - unify with PI handling orb.getInvocationInfo().setIsRetryInvocation(true); // NOTE - We must unregister the waiter NOW for this request // since the retry will result in a new request id. Therefore // the old request id would be lost and we would have a memory // leak in the responseWaitingRoom. unregisterWaiter(orb); if (orb.subcontractDebugFlag) { dprint(".continueOrThrowSystemOrRemarshal: " + opAndId(messageMediator) + ": throwing Remarshal"); } throw (RemarshalException)exception; } else { if (orb.subcontractDebugFlag) { dprint(".continueOrThrowSystemOrRemarshal: " + opAndId(messageMediator) + ": throwing sex:" + exception); } throw (SystemException)exception; } }