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 -> java_long
      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 -> java_long
      val destroy : '-> JavaServlet.http -> unit
    end
  type servlet_context_event =
      javax'servlet'ServletContextEvent java_instance
  type servlet_context_attribute_event =
      javax'servlet'ServletContextAttributeEvent java_instance
  type http_session_event = javax'servlet'http'HttpSessionEvent java_instance
  type http_session_binding_event =
      javax'servlet'http'HttpSessionBindingEvent java_instance
  module type ServletContextListener =
    sig
      val context_initialized : JavaServlet.servlet_context_event -> unit
      val context_destroyed : JavaServlet.servlet_context_event -> unit
    end
  module type ServletContextAttributeListener =
    sig
      val attribute_added :
        JavaServlet.servlet_context_attribute_event -> unit
      val attribute_removed :
        JavaServlet.servlet_context_attribute_event -> unit
      val attribute_replaced :
        JavaServlet.servlet_context_attribute_event -> unit
    end
  module type HTTPSessionListener =
    sig
      val session_created : JavaServlet.http_session_event -> unit
      val session_destroyed : JavaServlet.http_session_event -> unit
    end
  module type HTTPSessionActivationListener =
    sig
      val session_did_activate : JavaServlet.http_session_event -> unit
      val session_will_passivate : JavaServlet.http_session_event -> unit
    end
  module type HTTPSessionAttributeListener =
    sig
      val attribute_added : JavaServlet.http_session_binding_event -> unit
      val attribute_removed : JavaServlet.http_session_binding_event -> unit
      val attribute_replaced : JavaServlet.http_session_binding_event -> unit
    end
  module type HTTPSessionBindingListener =
    sig
      val value_bound : JavaServlet.http_session_binding_event -> unit
      val value_unbound : JavaServlet.http_session_binding_event -> unit
    end
  module type HTTPSessionIdListener =
    sig
      val session_id_changed :
        JavaServlet.http_session_event -> JavaString.t -> unit
    end
end