Duda Con Servlet

Que tal Comunidad:

Tengo una duda respecto a un Servlet, esta es mas o menos mi estructura

public class BuscaFolio extends HttpServlet {

// Conexion a base de datos 1
// tratamiento de informacion
cierro conexion

////////////////////////////////////////////////

// Conexion a base de datos 2
// tratamiento de informacion
cierro conexion

////////////////////////////////////////////////

// Conexion a base de datos 2 con subdirectorio
// tratamiento de informacion
cierro conexion

}

el nombre de la base de datos "2", es el mismo pero yo pienso que como la segunda esta en un subdirectorio no hay
problema sin embargo si lo hay ya que el Servlet solo ejecuta las 2 primeras Conexiones y la tercera que es a que esta
en el subdirectorio ya no lo ejecuta.

Ustedes sabran dar alguna solucion.

Gracias.

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

eh?

subdirectorio? la base de datos esta en un subdirectorio?

No entiendo. No se si te refieres a un subdirectorio en JNDI, o si es un archivo o que cosa. Nunca habia oido de tener una base de datos en un subdirectorio (desde el punto de vista de Java, de leer una base de datos via JDBC).

Imagen de CesarAlducin

Esta en una carpeta

Por ejemplo asi @ezamudio

"C:/BD/Base/prueba.mdb";

Entonces como la base de datos se llama igual, lo que hago en la tercera instruccion es guardar esa base de datos
en otra carpeta

ejemplo:

"C:/BD/Base/Base2/prueba.mdb";

Espero haberme explicado.

Imagen de CesarAlducin

y ahi viene

Entonces es ahi donde viene el problema que a pesar de que esta en subidrectorios
diferentes el codigo solo ejecuta una instruccion.

Imagen de ezamudio

driver JDBC

Esto es usando JDBC o algo asi? no deberias tener problemas para leer esos archivos, como archivos.

Estando en windows hay dos posibilidades: El driver JDBC o lo que sea que uses para leer esas cosas, no puede leer dos archivos con el mismo nombre, por lo que el del subdirectorio deberia llamarse distinto, o bien tienes que cerrar por completo el anterior antes de abrir el siguiente. La otra es que hay otro proceso que ya tiene abierto el tercer archivo y por lo tanto no lo puede leer tu servlet. Si esos archivos son como de base de datos, seguramente solamente un proceso los puede leer a la vez, por lo que tienes que sincronizar el codigo que usa esos recursos para que solamente un hilo a la vez pueda usar cada uno. Te recomiendo un candado por archivo para que bloquees cada archivo con un candado distinto, es mejor que usar uno solo para todos.

Sin ver codigo, es lo mas que puedo decir.

Imagen de CesarAlducin

Perfecto

leyendo tu comentario @ezamudio la solucion que voy a plantear es sincronizar el codigo para que se ejecute solamente un hilo a la vez.

y tienes razon sin ver el codigo diste una buena opinion, el problema es precisamente ese, que no puede leer la base de datos si se llama igual.

Gracias !!!!

Imagen de CesarAlducin

si

Actualmente estoy usando JDBC

Imagen de ezamudio

cuidado con el synchronized

Por favor no vayas a caer en esto...

Tienes que hacer algo así:

 

De ese modo, sólo un hilo puede usar el primer MDB a la vez, pero un hilo separado podría estar ya usando el segundo MDB y otro estar usando el tercer MDB.

Imagen de CesarAlducin

Perfecto

Creo si tenia esa idea, porque si sincronizo los metodos no encontrare la solucion que quiero.