Problema con Tomcat como servicio de windows

44 views
Skip to first unread message

fjtorres

unread,
Nov 13, 2008, 9:06:46 AM11/13/08
to JavaSOS
Hola amig@s,

tengo un problema al ejecutar un comando o fichero bat desde el
runtime cuando el tomcat, donde esta desplegada mi aplicación web,
esta funcionando como servicio de windows.

Bueno explico algo mejor el caso. Tengo que llamar a un form de Oracle
que genera un pdf y luego mandar a imprimir ese pdf por la impresora
configurada para el usuario. Para ello he probado varias formas y
ninguna de ellas a resultado. Todas ellas provocan que se cuelgue el
proceso que genere el comando (por ejemplo la ejecución de ifrun60 de
developer6i para llamar al form).

Ahora mismo la forma que tengo implementada es crear un fichero bat
con el siguiente contenido:

@echo off
cmd.exe /c D:\developer6i\BIN\ifrun60.exe MODULE=D:\kk\YYYY.FMX
USERID=XXX/XXX@XXXXXX param1="0001" param2="1" informe="ruta informe"
destino="ruta destino"
cmd.exe /c start acrord32.exe /t c:\ruta\XX_XXX_XXXX_XX.pdf "ruta
impresora"

Y ejecutarlo con la runtime de la siguiente manera:

Process proceso = Runtime.getRuntime().exec(comando);//Comando es la
ruta hacia el fichero bat.

// Lanzamos las salidas del proceso (normal y error) en dos threads.
ProccesThread outThread = new ProccesThread(proceso.getInputStream(),
"OUTPUT");
ProccesThread errThread = new ProccesThread(proceso.getErrorStream(),
"ERROR");

// Arrancamos los thread.
outThread.start();
errThread.start();
// Esperamos que termine el proceso
result = proceso.waitFor();

// Esperamos que los thread mueran.
outThread.join();
errThread.join();

// Proceso termino correctamente.
if (result == 0) {
logDebug(LOG, "\n\n----------- FIN DEL PROCESO --------------\n\n");
} else {// Proceso no termino correctamente.
logDebug(LOG, "\n\nEl proceso no termino de forma correcta.\n\n");
}


Sinceramente llevo como 12 horas entre ayer y hoy buscando soluciones
y ninguna consigo que funcione con el tomcat como servicio de windows.

Bueno saludos y gracias de antemano.

Santiago Risaro

unread,
Nov 13, 2008, 10:37:23 PM11/13/08
to jav...@googlegroups.com
Podrías definir "cuelgue"???? da un error, se queda bloqueada la ejecución en ese método, se bloquea justo en la linea del exec, antes, después, dentro del bat???

Tendrías que verificar en el archivo catalina.policy de tu tomcat si tenés permisos para ejecutar procesos en el host y si los tenés, verificá que se esté usando ese archivo.

fjtorres

unread,
Nov 14, 2008, 2:38:00 AM11/14/08
to JavaSOS
Gracias por contestar Santiago,

se queda colgado el .exe que ejecuta el bat o comando que lanzo con
Runtime.getRuntime().exec(). Comprobare lo que me comentas sobre el
catalina.policy

fjtorres

unread,
Nov 14, 2008, 3:02:35 AM11/14/08
to JavaSOS
Perdona Santiago pero mis conocimientos sobre configuración no son muy
altos y no se exactamente que buscar.

fjtorres

unread,
Nov 14, 2008, 8:12:22 AM11/14/08
to JavaSOS
Buenas nuevamente,

estuve gran parte de la mañana buscando información sobre lo que me
comentaste y lamentablemente no encontré nada que me ayudara a
solucionar el problema, probé a instalar jboss como servicio y tampoco
funciona. Por ahora se opto por arrancar el tomcat de forma automática
con windows para evitar el bloqueo de la aplicación al ejecutar el
código.

Saludos.

Santiago Risaro

unread,
Nov 14, 2008, 8:35:13 PM11/14/08
to jav...@googlegroups.com
Tal vez sea algúna política de seguridad de windows... que no permite que los servicios lancen un ejecutable, mis conocimientos no llegan a tanto.

Modificar el catalina.policy solo ayudaría si el error saliera con el tomcat corriendo de cualquiera de las dos maneras y antes de empezar a ejecutar el exe, así que no deberías modificarlo.

Saludos

2008/11/14 fjtorres <kisc...@gmail.com>

Alberto M. Vernieri

unread,
Nov 14, 2008, 8:48:06 PM11/14/08
to jav...@googlegroups.com
Hola!

Pues yo supongo que el problema debe pasar porque el servicio no tiene un escritorio asociado, y el CMD exige una ventana, aunque sea minimizada u oculta, pero asignada a un escritorio...

Habría que ver si puedes lanzar directamente desde Java los ejecutables, que puedanm correr sin ventana, sin pasar por el CMD...

No sé si funcionará, sólo es una idea...

Saludos
Alberto



2008/11/14 Santiago Risaro <nri...@gmail.com>

fjtorres

unread,
Nov 17, 2008, 3:18:37 AM11/17/08
to JavaSOS
Buenas,

yo me lleve varios días buscando como lanzar los ejecutables y
lamentablemente no encontré otra forma que no fuese con
Runtime.getRuntime().exec(), por ahora parece que se arrancara con
windows (no como servicio) porque todas las formas que encontré de
solucionarlo no funcionan con el Tomcat de servicio.

Muchas gracias por la ayuda, si encontramos una solución la posteare
para tenerla como referencia.

Saludos.
Reply all
Reply to author
Forward
0 new messages