Duda cierre de ResultSet

Recien inicio en el mundo Java por lo poco que he conocido me gusta, me ha surgido una duda
estoy con un proyecto que tiene como interfaz Extjs del lado del servidor ocupo servlets y unas clases para consultas.

mi duda es la siguiente:
desde el navegador lleno un grid con datos que me devuelve el servlet en formato json
el servlet recibe el parametro con la accion que debe realizar, crea una instancia de una clase para usar el metodo que hace la consulta
dicho método me devuelve un ResultSet, el servlet toma los datos del ResultSet y los mete en un objeto JSON y los envia al navegador.
al final en el servlet cierro la conexion y el ResultSet ¿Que pasa con el ResultSet que se queda en el metodo?¿se cierra al cerrar la conexion o queda abierto?

asi tengo el metodo que hace la consulta

public class claseSQL(){

public claseSQL(){} //constructor

public ResultSet getDatos(Connection con){

PreparedStatemend ps = null;
ResultSet rs = null;
try{

ps = con.preparedStatemend("mi query");
rs = ps.executeQuery();

//convierto a json
setMensaje(null);
}catch (SQLException ex){
setMensaje(ex.getMessage);
}catch(Exception e){
setMensaje(ex.getMessage);
}finally{
return rs;

}
}

asi está la estructura del servlet

[code]
procesrequest(request,response){
Connection con = null;
ResultSet rs = null;
claseSQL clsql = null;
try{

//obtengo conexion
//creo instancia de la claseSQL

clsql = new claseSQL();

rs = clsql.getDatos(con);

//convierto a json

}catch (SQLException ex){

}catch(Exception e){
}finally{

try{
if (rs!=null)
rs.close()
if(con!=null)
con.close;
}catch(Exception cc){}

//regreso JSON
}
}
[/code]

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

Se cierra

Se cierra no porque cierres la conexión sino porque tú lo estás cerrando primero en el finally.

Recuerda que cuando usas try-catch-finally (o incluso solamente try-finally), el código dentro del bloque de finally SIEMPRE se va a ejecutar.

Gracias por la respuesta

Gracias por la respuesta ezamudio, si yo lo cierro en el finally del servlet pero que pasa en el metodo que hace el query. Es decir en el metodo getDatos() de la clase claseSQL

Imagen de ezamudio

No se cierra

Tu método getDatos() devuelve un ResultSet abierto. No tendría mucho caso que devolvieras un ResultSet cerrado.