Package net.ameba.cassandra.web.controller

Source Code of net.ameba.cassandra.web.controller.CassandraClientInterceptor

package net.ameba.cassandra.web.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.ameba.cassandra.web.service.CassandraClientProvider;

import org.apache.cassandra.thrift.Cassandra.Client;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

/**
* {@link CassandraClientInterceptor} intercepts requests to prevent leaking client connection.
*/
public class CassandraClientInterceptor implements HandlerInterceptor {
 
  @Autowired
  private CassandraClientProvider clientProvider;
 
  public CassandraClientInterceptor() {
  }

  @Override
  public void afterCompletion(
      HttpServletRequest request,
      HttpServletResponse response,
      Object handler,
      Exception exception)
      throws Exception {
  }

  @Override
  public void postHandle(
      HttpServletRequest request,
      HttpServletResponse response,
      Object handler,
      ModelAndView mav) throws Exception {
   
    // If client has thrift client, closing it.
    if (clientProvider.hasThriftClient()) {
      Client client = clientProvider.getThriftClient();
      // closing transports
      client.getInputProtocol().getTransport().close();
      client.getOutputProtocol().getTransport().close();
      // clean up provider
      clientProvider.clean();
    }
   
  }

  @Override
  public boolean preHandle(
      HttpServletRequest request,
      HttpServletResponse response,
      Object handler) throws Exception {
    return true;
  }

}
TOP

Related Classes of net.ameba.cassandra.web.controller.CassandraClientInterceptor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.