Estoy refactorizando el código de otros. Lo único que noto es la forma en que el sistema obtiene una conexión del grupo de conexiones.Obtener conexión a la base de datos desde un grupo de conexiones
La muestra es así. En cada llamada del método de servicio, el sistema realiza una búsqueda de contexto en el JNDI para la fuente de datos.
public class CheckinServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
//Obtain Connection
InitialContext initialContext = new InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource) initialContext
.lookup("jdbc/mysqldb");
java.sql.Connection conn = ds.getConnection();
//business logic
//redirect
} finally {
conn.close();
}
}
}
yo creo que hay un impacto en el rendimiento en hacer esto cada vez. Estoy pensando en otra forma de evitar la recuperación de una conexión desde un grupo de conexiones.
Estoy pensando en utilizar el método init()
del servlet, pero creo que no es óptimo.
Hola señor, gracias por la respuesta siempre detallada. Pero una cosa me hace pensar sobre esto. ¿Por qué coloca el objeto Datasource como parámetros de contexto amplio? ¿No podemos simplemente hacer que el método getDataSource() sea estático? Realmente me gusta esta respuesta, pero quería aprender más sobre la razón de hacer esto. Gracias.. –
Véalo también buen diseño. Un 'DataSource' es específico de una sola instancia' Config', no de múltiples instancias 'Config'. Aunque hay en este caso particular solo uno. – BalusC
¿Se cierra la conexión de la base de datos cuando se llama contextDestroyed (ServletContextEvent)? –