sqlldr desde java nunca termina
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
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). Incluso crea el fichero de log, pero est脿 en blanco.
Nada se mueve hasta que paro la aplicaci贸n Java, en mi caso paro el Tomcat. Entonces el sqlldr acaba su trabajo bien. El log es id茅ntico al que genera cuando se ejecuta directament por consola.
Si no pongo el wait() pasa exactamente lo mismo, con la 煤nica diferencia que la aplicaci贸n java sigue su curso.
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.
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
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). Incluso crea el fichero de log, pero est脿 en blanco.
Nada se mueve hasta que paro la aplicaci贸n Java, en mi caso paro el Tomcat. Entonces el sqlldr acaba su trabajo bien. El log es id茅ntico al que genera cuando se ejecuta directament por consola.
Si no pongo el wait() pasa exactamente lo mismo, con la 煤nica diferencia que la aplicaci贸n java sigue su curso.
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.
