Search code examples
javasessionthriftsession-management

Session management in Thrift


I can't seem to find any documentation on how session management is supposed to be done in Thrift's RPC framework.

I know I can do a

TServer.setServerEventHandler(myEventHandler);

and observe calls to createContext (called when a connection is established) and processContext (called before every method call). Still, I have to get whatever session state I maintain in those message into the handler itself.

So how can I access session information in my handlers?


Solution

  • Not sure if there isn't also a way to use the ServerEventHandler approach mentioned in my question, but here's how I was able to create one handler per connection.

    Rather than providing a singleton processor instance, containing a handler instance, once, like this:

    XProcessor<XHandler> processor = new X.Processor<XHandler>(new XHandler());
    TServer server = new TSimpleServer(new TServer.Args(serverTransport)
        .processor(processor));
    

    I instead create and provide a TProcessorFactory:

    TProcessorFactory processorFactory = new TProcessorFactory(null)
    {
        public TProcessor getProcessor(TTransport trans)
        {
            return new X.Processor<XHandler>(new XHandler());
        }
    };
    TServer server = new TSimpleServer(new TServer.Args(serverTransport)
        .processorFactory(processorFactory));