sig
  type generic = javax'servlet'GenericServlet java_instance
  type request = javax'servlet'ServletRequest java_instance
  type response = javax'servlet'ServletResponse java_instance
  module type Generic =
    sig
      type t
      val init : JavaServlet.generic -> JavaServlet.Generic.t
      val service :
        JavaServlet.Generic.t ->
        JavaServlet.generic ->
        JavaServlet.request -> JavaServlet.response -> unit
      val destroy : JavaServlet.Generic.t -> JavaServlet.generic -> unit
    end
  module Default_Generic :
    sig
      val service :
        '->
        JavaServlet.generic ->
        JavaServlet.request -> JavaServlet.response -> unit
      val destroy : '-> JavaServlet.generic -> unit
    end
  type http = javax'servlet'http'HttpServlet java_instance
  type http_request = javax'servlet'http'HttpServletRequest java_instance
  type http_response = javax'servlet'http'HttpServletResponse java_instance
  module type HTTP =
    sig
      type t
      val init : JavaServlet.http -> JavaServlet.HTTP.t
      val do_delete :
        JavaServlet.HTTP.t ->
        JavaServlet.http ->
        JavaServlet.http_request -> JavaServlet.http_response -> unit
      val do_get :
        JavaServlet.HTTP.t ->
        JavaServlet.http ->
        JavaServlet.http_request -> JavaServlet.http_response -> unit
      val do_head :
        JavaServlet.HTTP.t ->
        JavaServlet.http ->
        JavaServlet.http_request -> JavaServlet.http_response -> unit
      val do_options :
        JavaServlet.HTTP.t ->
        JavaServlet.http ->
        JavaServlet.http_request -> JavaServlet.http_response -> unit
      val do_post :
        JavaServlet.HTTP.t ->
        JavaServlet.http ->
        JavaServlet.http_request -> JavaServlet.http_response -> unit
      val do_put :
        JavaServlet.HTTP.t ->
        JavaServlet.http ->
        JavaServlet.http_request -> JavaServlet.http_response -> unit
      val do_trace :
        JavaServlet.HTTP.t ->
        JavaServlet.http ->
        JavaServlet.http_request -> JavaServlet.http_response -> unit
      val get_last_modified :
        JavaServlet.HTTP.t ->
        JavaServlet.http -> JavaServlet.http_request -> int64
      val destroy : JavaServlet.HTTP.t -> JavaServlet.http -> unit
    end
  val options :
    JavaServlet.http_response ->
    [ `DELETE | `GET | `HEAD | `OPTIONS | `POST | `PUT | `TRACE ] list ->
    unit
  module Default_HTTP :
    sig
      val do_delete :
        '->
        JavaServlet.http ->
        JavaServlet.http_request -> JavaServlet.http_response -> unit
      val do_get :
        '->
        JavaServlet.http ->
        JavaServlet.http_request -> JavaServlet.http_response -> unit
      val do_head :
        '->
        JavaServlet.http ->
        JavaServlet.http_request -> JavaServlet.http_response -> unit
      val do_post :
        '->
        JavaServlet.http ->
        JavaServlet.http_request -> JavaServlet.http_response -> unit
      val do_put :
        '->
        JavaServlet.http ->
        JavaServlet.http_request -> JavaServlet.http_response -> unit
      val do_trace :
        '->
        JavaServlet.http ->
        JavaServlet.http_request -> JavaServlet.http_response -> unit
      val get_last_modified :
        '-> JavaServlet.http -> JavaServlet.http_request -> int64
      val destroy : '-> JavaServlet.http -> unit
    end
  module type ServletContextListener =
    sig
      val context_initialized :
        javax'servlet'ServletContextEvent java_instance -> unit
      val context_destroyed :
        javax'servlet'ServletContextEvent java_instance -> unit
    end
  module type ServletContextAttributeListener =
    sig
      val attribute_added :
        javax'servlet'ServletContextAttributeEvent java_instance -> unit
      val attribute_removed :
        javax'servlet'ServletContextAttributeEvent java_instance -> unit
      val attribute_replaced :
        javax'servlet'ServletContextAttributeEvent java_instance -> unit
    end
  module type HTTPSessionListener =
    sig
      val session_created :
        javax'servlet'http'HttpSessionEvent java_instance -> unit
      val session_destroyed :
        javax'servlet'http'HttpSessionEvent java_instance -> unit
    end
  module type HTTPSessionActivationListener =
    sig
      val session_did_activate :
        javax'servlet'http'HttpSessionEvent java_instance -> unit
      val session_will_passivate :
        javax'servlet'http'HttpSessionEvent java_instance -> unit
    end
  module type HTTPSessionAttributeListener =
    sig
      val attribute_added :
        javax'servlet'http'HttpSessionBindingEvent java_instance -> unit
      val attribute_removed :
        javax'servlet'http'HttpSessionBindingEvent java_instance -> unit
      val attribute_replaced :
        javax'servlet'http'HttpSessionBindingEvent java_instance -> unit
    end
  module type HTTPSessionBindingListener =
    sig
      val value_bound :
        javax'servlet'http'HttpSessionBindingEvent java_instance -> unit
      val value_unbound :
        javax'servlet'http'HttpSessionBindingEvent java_instance -> unit
    end
  module type HTTPSessionIdListener =
    sig
      val session_id_changed :
        javax'servlet'http'HttpSessionEvent java_instance ->
        java'lang'String java_instance -> unit
    end
end