Class ServerRequestDispatcherImpl

java.lang.Object
com.sun.corba.ee.impl.protocol.ServerRequestDispatcherImpl
All Implemented Interfaces:
ServerRequestDispatcher

public class ServerRequestDispatcherImpl extends Object implements ServerRequestDispatcher
  • Field Details

  • Constructor Details

    • ServerRequestDispatcherImpl

      public ServerRequestDispatcherImpl(ORB orb)
  • Method Details

    • locate

      public IOR locate(ObjectKey okey)
      Called from ORB.locate when a LocateRequest arrives. Result is not always absolutely correct: may indicate OBJECT_HERE for non-existent objects, which is resolved on invocation. This "bug" is unavoidable, since in general the object may be destroyed between a locate and a request. Note that this only checks that the appropriate ObjectAdapter is available, not that the servant actually exists. Need to signal one of OBJECT_HERE, OBJECT_FORWARD, OBJECT_NOT_EXIST.
      Specified by:
      locate in interface ServerRequestDispatcher
      Parameters:
      okey - key to object to locate
      Returns:
      Result is null if object is (possibly) implemented here, otherwise an IOR indicating objref to forward the request to.
      Throws:
      OBJECT_NOT_EXIST - is thrown if we know the object does not exist here, and we are not forwarding.
    • generalMessage

      @InfoMethod private void generalMessage(String msg)
    • exceptionMessage

      @InfoMethod private void exceptionMessage(String msg, Throwable thr)
    • dispatch

      public void dispatch(MessageMediator request)
      Specified by:
      dispatch in interface ServerRequestDispatcher
    • releaseServant

      private void releaseServant(ObjectAdapter objectAdapter)
    • getServant

      private Object getServant(ObjectAdapter objectAdapter, byte[] objectId, String operation) throws OADestroyed
      Throws:
      OADestroyed
    • getServantWithPI

      protected Object getServantWithPI(MessageMediator request, ObjectAdapter objectAdapter, byte[] objectId, ObjectKeyTemplate oktemp, String operation) throws OADestroyed
      Throws:
      OADestroyed
    • checkServerId

      protected void checkServerId(ObjectKey okey)
    • findObjectAdapter

      private ObjectAdapter findObjectAdapter(ObjectKeyTemplate oktemp)
    • handleNullServant

      protected void handleNullServant(String operation, NullServant nserv)
      Always throws OBJECT_NOT_EXIST if operation is not a special method. If operation is _non_existent or _not_existent, this will just return without performing any action, so that _non_existent can return false. Always throws OBJECT_NOT_EXIST for any other special method. Update for issue 4385.
      Parameters:
      operation - Name of method to get
      nserv - Servant throw associated Exception if not such method exists.
    • objectInfo

      @InfoMethod private void objectInfo(String msg, Object obj)
    • consumeServiceContexts

      protected void consumeServiceContexts(MessageMediator request)
    • dispatchToServant

      protected MessageMediator dispatchToServant(Object servant, MessageMediator req, byte[] objectId, ObjectAdapter objectAdapter)
    • handleDynamicResult

      protected MessageMediator handleDynamicResult(ServerRequestImpl sreq, MessageMediator req)
    • sendingReply

      protected MessageMediator sendingReply(MessageMediator req)
    • sendingReply

      protected MessageMediator sendingReply(MessageMediator req, Any excany)
      Must always be called, just after the servant's method returns. Creates the ReplyMessage header and puts in the transaction context if necessary.
      Parameters:
      req - original request
      excany - Any that contains an exception
      Returns:
      Response that contains the exception
    • codeSetServiceContextInfo

      @InfoMethod private void codeSetServiceContextInfo(CodeSetServiceContext csctx)
    • processCodeSetContext

      protected boolean processCodeSetContext(MessageMediator request, ServiceContexts contexts)
      Handles setting the connection's code sets if required. Returns true if the CodeSetContext was in the request, false otherwise.
      Parameters:
      request - request to process
      contexts - context to check
      Returns:
      if the CodeSetContext was in the request
    • operationAndId

      @InfoMethod private void operationAndId(String operation, int rid)