Problema con proceso remoto y barra de progreso
Publicado por jmromero (51 intervenciones) el 09/12/2008 08:34:46
Muy buenas.
Tengo una arquitectura EJB y un par de métodos de ese EJB que son procesos masivos, que se suelen lanzar cada mes y que pueden tardar un tiempo considerable.
Para ello creé la siguiente interfaz y el siguiente objeto:
public interface DatosProcesoRemotoI extends Remote
y
public class DatosProcesoRemoto extends UnicastRemoteObject implements DatosProcesoRemotoI, Serializable
de forma que mi método que da de la forma:
public ... (DatosProcesoRemotoI procesoRemoto) throws RemoteException
Desde el cliente le paso un objeto DatosProcesoRemoto y voy actualizando una serie de atributos internos que contienen el número total de registros, el registro actual, etc... De esta forma puedo actualizar una barra de progreso en el cliente.
Hasta aquí todo perfecto, el problema que estoy encontrando es que el método se ralentiza muchísimo debido al uso del objeto DatosProcesoRemoto (he probado a lanzarlo sin ese parámetro, modificando el código servidor y la ganancia en velocidad es muy considerable).
El proceso en si es un proceso masivo que puede tardar mucho tiempo y NO puedo bloquear el cliente a espera de que éste termine, es necesario pues el uso de una barra de progreso y la posibilidad de cancelar el proceso tal y como lo tengo hecho hasta ahora. Yo lanzo el proceso usando una hebra independiente y dejo que el cliente pueda seguir trabajando con el programa.
Mi EJB es sin estado y la transacción es manejada por el EJB.
¿Os habeis enfrentado alguna vez a un problema de este estilo?
¿Tengo que configurar mi objeto remoto de alguna forma para evitar la lentitud?
¿Alguien ha usado una barra de progreso con EJB's?
Muchas gracias por vuestro tiempo.
Tengo una arquitectura EJB y un par de métodos de ese EJB que son procesos masivos, que se suelen lanzar cada mes y que pueden tardar un tiempo considerable.
Para ello creé la siguiente interfaz y el siguiente objeto:
public interface DatosProcesoRemotoI extends Remote
y
public class DatosProcesoRemoto extends UnicastRemoteObject implements DatosProcesoRemotoI, Serializable
de forma que mi método que da de la forma:
public ... (DatosProcesoRemotoI procesoRemoto) throws RemoteException
Desde el cliente le paso un objeto DatosProcesoRemoto y voy actualizando una serie de atributos internos que contienen el número total de registros, el registro actual, etc... De esta forma puedo actualizar una barra de progreso en el cliente.
Hasta aquí todo perfecto, el problema que estoy encontrando es que el método se ralentiza muchísimo debido al uso del objeto DatosProcesoRemoto (he probado a lanzarlo sin ese parámetro, modificando el código servidor y la ganancia en velocidad es muy considerable).
El proceso en si es un proceso masivo que puede tardar mucho tiempo y NO puedo bloquear el cliente a espera de que éste termine, es necesario pues el uso de una barra de progreso y la posibilidad de cancelar el proceso tal y como lo tengo hecho hasta ahora. Yo lanzo el proceso usando una hebra independiente y dejo que el cliente pueda seguir trabajando con el programa.
Mi EJB es sin estado y la transacción es manejada por el EJB.
¿Os habeis enfrentado alguna vez a un problema de este estilo?
¿Tengo que configurar mi objeto remoto de alguna forma para evitar la lentitud?
¿Alguien ha usado una barra de progreso con EJB's?
Muchas gracias por vuestro tiempo.
Valora esta pregunta


0