Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Problema con ProcessBuilder y Daemon

Como indico en el titulo estoy intentando ejecutar un servicio que queda a la espera recibiendo datos, algo como syslog, el problema que tengo es que a la hora de leer los datos que recibe solo puedo hacerlo, o ese supongo yo, cuando cierro el servicio, es decir, cancelo la aplicacion java.

Estoy algo confuso con el tema, tal y como yo lo entiendo los datos quedan en un buffer hasta que la aplicación cierre ... ¿no es posible leer los datos como forme llegan? ¿No es posible ejecutar un servicio con processBuilder y recibir los datos? ¿jni?

Estoy ejecutando un hilo aparte con el inputStream del proceso para leer los datos, pero no sirve de nada. Si alguien me da algo de informacion se agradece.

Saludos

mayo 27, 2014 | Unregistered Commenteranonimo

Como no publicas nada de código, no se puede saber qué quieres hacer; porque las explicaciones que proporcionas son intenciones, no especificaciones.

El API para lograr lo que pretendes (ejecutar un comando externo):

http://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html

mayo 28, 2014 | Registered Commenterchoces

Esto es lo que tengo ...

MainLauncher.class

try{
pBuilder = new ProcessBuilder( command, arg1, arg2, arg3, arg4 );
process = pBuilder.start();
UsbListener2 listener = new UsbListener2( process.getInputStream() );
listener.start();

} catch ( IOException ex ) {

ex.printStackTrace();
throw new RuntimeException();
}

while(true);
---------------------------------------------------------------------

ThreadInputStream.class extends Thread

@Override
public void run()
{
BufferedReader br = null;
InputStreamReader isr = null;

String input = "";

try{
isr = new InputStreamReader( is );
br = new BufferedReader( isr );

while( true )
{
input = br.readLine();
.......
.... // Proceso la entrada
}
}catch(){
ex.printStackTrace();
throw new RuntimeException();
}

}

He mirando un poco por la red y he visto que las clases de java io bloquean la lectura hasta que finalice el proceso pero pienso que tengo que hacer algo mal porque uno puede ejecutar un shell e interactuar con ella, entonces ....

Gracias por contestar.

mayo 28, 2014 | Unregistered Commenteranonimo

Perdonad por el doble post, las clases UsbListener y ThreadInputStream son la misma, cosas de las pruebas ...

mayo 28, 2014 | Unregistered Commenteranonimo