Java - Sqlldr desde java nunca termina

 
Vista:

Sqlldr desde java nunca termina

Publicado por Toni Circuns (2 intervenciones) el 08/02/2010 15:40:27
Hola,

tengo un script en un fichero .bat que ejecuta un sqlldr de Oracle para cargar un fichero a una tabla.

Si lo ejecuto desde la consola todo funciona bien, pero si lo ejecuto desde la aplicación java, con este código

rt = Runtime.getRuntime();
File f = new File(LlistaParametres.getInstance().getDirectoriShells().replace('/', '\\'));
Process process = rt.exec(sb.toString().replace('/', '\\'),null, f);
process.wait();

donde sb contiene la ruta al fichero .bat a ejecutar y f contiene el directorio donde estan todos mis ficheros (.bat i .txt a cargar)

el proceso nunca acaba, aunque empieza.

El sqlldr se ejecuta, inserta una parte de los registros y se queda parado, como bloqueado (no hay ningún bloqueo en la base de datos).

Nada se mueve hasta que paro la aplicación Java, en mi caso paro el Tomcat. Entonces el sqlldr acaba su trabajo bien.

No tengo ni idea de que esta pasando y necesito que alguien me oriente un poco.

Estoy usando el mismo código para ejecutar otros ficheros .bat y funciona perfectamente. Espera a que acabe el proceso y sigue la ejecución normal.

Muchas gracias de antemano,

TONI.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Sqlldr desde java nunca termina

Publicado por James (207 intervenciones) el 09/02/2010 02:07:19
Pues la verdad no se si es un problema comun de oracle o que es lo que sucede pero tuve un problema similar con cierto script que debia ejecutar, al parecer se debe a que los script de oracle no notifican a java la culminacion del proceso a pesar de haberlo echo, la solucion mas rapida es evitar la llamada al wait();, claro si es posible, si compromete el funcionamiento de la aplicacion deberias encontrar la forma de que tu Script notifique a java su culminacion o notificarlo tu mismo de acuerdo a la respuenta del Script, algo similar hice yo creando una clase que ejecutaba en un proceso distinto los scripts, y notifica a la UI de su culminacion, espero te sirva de guia, Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sqlldr desde java nunca termina

Publicado por Toni Circuns (2 intervenciones) el 09/02/2010 10:12:11
Hola James,

gracias por tu aportación, pero el problema no es el wait.

El sqlldr no termina, se queda el proceso en ejecución hasta que paro la aplicación.
Antes de parar la aplicación inserta exactamente 192 registros en la tabla.
Al parar la aplicación inserta los registros restantes hasta 1444, escribe el log i termina la ejecución.

La verdad, es que no tengo ni idea de hacia donde investigar.

Gracias,

TONI.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar