2009-02-16 21 views
5

Tengo un archivo por lotes que inicia un proceso Java en un servidor Windows 2003. De acuerdo con la política de seguridad, los usuarios de esa máquina tienen sesión cerrada, si el usuario está inactivo durante un cierto período de tiempo. El problema es que cuando el usuario cierra la sesión, el proceso también muere.Ejecución de un proceso Java en Windows incluso después de que el usuario haya cerrado sesión

Programé una nueva tarea (Panel de control -> Tareas programadas) y seleccioné la opción "Cuando mi computadora se inicia" y allí le di los detalles de la cuenta del usuario. Pero no parece tener ningún efecto, el usuario aún está desconectado y el proceso se agota. ¿Es necesario reiniciar para que este cambio sea efectivo? Y después del reinicio, ¿lograré lo que estoy esperando (manteniendo vivo el proceso)?

De forma alternativa, ¿funcionará este proceso como un servicio de Windows para resolver el problema? Si es así, ¿podría decirme cómo puedo hacer que un programa Java o un archivo por lotes se ejecute como un Servicio de Windows? Preferiría no utilizar ninguna otra herramienta o biblioteca de terceros.

Gracias

Respuesta

11

Si desea que se ejecute en virtud de las tareas programadas que tienen que asegurarse de que no tiene "sólo se ejecutan cuando el usuario conectado" marcada, que por lo general significa que tiene que proporcionar una contraseña.

Un servicio de Windows sería la forma normal de hacerlo: el Java service wrapper es de terceros pero mucha gente lo usa.

Si realmente no desea utilizar un método de terceros, puede usar svrany.exe (http://support.microsoft.com/kb/137890) en Windows NT o posterior, pero no está diseñado específicamente para Java.

+0

Gracias por la respuesta. Sí, no tengo esa opción en particular y proporcioné los detalles de la contraseña. Me enteré sobre Java Service Wrapper en otro hilo. Estoy planeando usarlo como último recurso. – cdoe

+0

Me encanta el envoltorio del servicio Java. Lo he usado por un par de años y funciona bien. –

+0

El problema con la tarea programada es que, de forma predeterminada, ejecutará el proceso con una prioridad 'por debajo de lo normal'. Esto puede causar problemas de rendimiento cuando el servidor está bajo carga – gerrytan

1

estoy usando Java Service Wrapper para iniciar el proceso de Java como servicio de Windows. Supongo que funciona de manera similar al srvany.exe mencionado en la publicación anterior.

0

Según mi análisis,

La solución de Idle escribirá un programa de creación de servicios de Windows de VC++ (.net) para iniciar el .bat/.exe como un servicio del sistema con todos los métodos de devolución de llamada necesarios para SCM.

Nota: 1. Envolver el proceso con srvany.exe no funcionaría, ya que no tiene ningún proceso de devolución de llamada al SCM (Service Control Manager). 2. Y el servicio Wrapper de Java es una API de terceros (muchos tienen licencia LGPL).

Cuestiones relacionadas