Hola Martín y Francisco, aprovecho la oportunidad para saludarles y
desearles muchos Éxitos en este nuevo año 2009 que recién comienza.
Recién retorno a la programación en Java con Dinamica, y en este
momento,estoy tratando de actualizarme rápidamente en relación a las
actualizaciones y mejoras que le han hecho a los últimos release del
framework; hoy me encuentro con algunas lagunas que de seguro pudiera
solucionar si aún estuvieran publicado las referencias del framework y
las guías de inicio rápido.
Mi actual duda es en referencia a la utilización de los campos de
sesión dentro del validator.xml, sobre todo si es posible
individualizar los campos para sesión dentro del validator y como es
el método para lograr esto?.
Agradezco su ayuda para con este tema.
Saludos.-
Hola, posteo esta incidencia por si acaso llega a ser de utilidad para alguien:
Ayer nos toco instalar un Tomcat de produccion en un Windows 2000,
como servicio. En general no tiene mayor complicacion, pero
experimentamos una serie de fallas inusuales:
1.- Tratando de ejecutarlo via consola (startup.bat), y previa edicion
de catalina.bat para indicarle el JAVA_HOME, reportaba que no
encontraba ningun JDK!!!
El path del JDK estaba perfecto, el JDK estaba recien instalado, una
version full del JDK, etc, etc.
Resulta ser que el archivo setclasspath.bat es el que se encarga de
imprimir este error, y en nuestro caso lo hacia por alguna de estas
condiciones que fallaba:
:gotJdkHome
if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome
if not exist "%JAVA_HOME%\bin\javaw.exe" goto noJavaHome
if not exist "%JAVA_HOME%\bin\jdb.exe" goto noJavaHome
if not exist "%JAVA_HOME%\bin\javac.exe" goto noJavaHome
La causa era que javac.exe -el compilador de Java- no habia sido
instalado, por alguna razon el instalador no habia corrido bien pero
no alerto de ningun problema, en apariencia habia finalizado bien,
pero no era el caso. Para que tomen nota.
2.- OK, resuelto el tema del JDK, nos encontramos con otro problema!
catalina_home not defined!!!
En startup.bat fallo un BATCH script que en general NUNCA falla:
set CURRENT_DIR=%cd%
if not "%CATALINA_HOME%" == "" goto gotHome
set CATALINA_HOME=%CURRENT_DIR%
Se trata de esta linea en particular: set CURRENT_DIR=%cd%
Por algun motivo -que desconozco- no funciono en ese Windows 2000.
Esto lo corregimos definiendo la variable catalina_home al principio
de este archivo, forzando asi su valor y evitando que corriera este
codigo.
Hemos instalado docenas de veces en todo tipo de Windows, y esta
combinacion de fallas no la hemos encontrado nunca hasta ayer, asi que
les paso el dato para se ahorren el tiempo y las canas.
Saludos,
Martin
--
Dinámica - Framework Java/Ajax
100% software libre
http://www.martincordova.com
El 16 de diciembre de 2008 12:07, Martin Cordova <martin.cordova@...> escribió:
Hola, hay varios updates disponibles para diversas piezas que
conforman la plataforma de Dinamica:
1.- Eclipse 3.4.1 - en nuestro website ya pusimos la distro light
actualizada, con el ultimo plugin de Dinamica tambien.
2.- JDK 1.6 update 11
3.- Driver JDBC de PostgreSQL
Aparte de esto tambien hay actualizaciones de JFreeChart y de IText,
pero no seran incorporadas aun en la distro de Dinamica.
Aprovecho la oportunidad de avisarles que hay update menor del
framework, lean el changelog para mayor informacion de los cambios.
Hola, hay varios updates disponibles para diversas piezas que
conforman la plataforma de Dinamica:
1.- Eclipse 3.4.1 - en nuestro website ya pusimos la distro light
actualizada, con el ultimo plugin de Dinamica tambien.
2.- JDK 1.6 update 11
3.- Driver JDBC de PostgreSQL
Aparte de esto tambien hay actualizaciones de JFreeChart y de IText,
pero no seran incorporadas aun en la distro de Dinamica.
Aprovecho la oportunidad de avisarles que hay update menor del
framework, lean el changelog para mayor informacion de los cambios.
Saludos,
Martin
--
Dinámica - Framework Java/Ajax
100% software libre
http://www.martincordova.com
Me olvidé de un detalle, no tengo para pagar en dólares, así que
estoy limitado a pagos en moneda nacional
--
Antonio León
La verdad se desprende del bien, como la luz se desprende del
Sol. En todo hay algo bueno así como en todo hay algo de verdad.
De:
dinamica4java@... [mailto:dinamica4java@...] En
nombre de Martin Cordova Enviado el: domingo, 14 de diciembre de 2008 06:39 p.m. Para: dinamica4java@... Asunto: Re: [dinamica4java] Hospedaje
El que nosotros usamos es pago y se llama DailyRazor, es bastante
bueno, unos $395 al año con tu tomcat privado.
Saludos,
Martin
2008/12/14 Antonio Leon <antonioleon_inst@...>:
> Buenas tardes.
>
>
>
> Estoy en busca de un hospedaje para un site en java, bien gratuito o pago,
> ya tengo el Dominio registrado, solo necesito el hosting.
>
>
>
> ¿Me pueden recomendar alguno?
>
>
>
> Gracias
>
>
>
> --
>
> Antonio León
>
> La verdad se desprende del bien, como la luz se desprende del Sol. En todo
> hay algo bueno así como en todo hay algo de verdad.
>
>
El que nosotros usamos es pago y se llama DailyRazor, es bastante
bueno, unos $395 al año con tu tomcat privado.
Saludos,
Martin
2008/12/14 Antonio Leon <antonioleon_inst@...>:
> Buenas tardes.
>
>
>
> Estoy en busca de un hospedaje para un site en java, bien gratuito o pago,
> ya tengo el Dominio registrado, solo necesito el hosting.
>
>
>
> ¿Me pueden recomendar alguno?
>
>
>
> Gracias
>
>
>
> --
>
> Antonio León
>
> La verdad se desprende del bien, como la luz se desprende del Sol. En todo
> hay algo bueno así como en todo hay algo de verdad.
>
>
--
Dinámica - Framework Java/Ajax
100% software libre
http://www.martincordova.com
El ejemplo trata de como manejar el grid editable y dinamico. La parte
de la grabacion no tiene mayor complicacion, si partes de que tienes
el recordset en memoria. En el caso de EditGrid, se usa una clase
GridValidator que ademas de validar, te deja un recordset con todo el
contenido del grid, en un atributo del request.
Luego usas ese recordset para grabar en batch, con un codigo similar a este:
//definir parametros
String[] params =
{
"customerid",
"orderdate",
"productid",
"unitprice",
"discount"
};
//obtener el Resource
String sql = getSQL(getResource("insert.sql"), inputParams);
//ejecutar en Batch
getDb().execBatch(sql, rs, params);
Recuerda que el Action que recibe la data, ademas de tener el
validator especial, tambien debe recuperar el recordset de esta
manera:
<recordset id="grid" source="request" scope="transaction" />
Claro esta tendras una clase Transaction escrita a la medida que
ejecuta la grabacion con el codigo como te mostre arriba.
El template SQL es de tipo prepared statemet, como este:
insert into demo.import_excel
(
excelid,
lote_excel_id,
customerid,
orderdate,
productid,
unitprice,
discount
)
values
(
${seq:nextval@..._excel},
${seq:currval@..._excel_lote},
?,
?,
?,
?,
?
)
Con este deberias poder resolver sin problemas el INSERT en batch de
un grid editable.
Recuerda activar transacciones JDBC para el Action que graba.
Saludos,
Martin
2008/12/12 dtorcates <dtorcates@...>:
>
> Hola Chicos revisando la documentación del grid editable y dinámico
> estoy buscando la forma de especificar en que tabla de base datos
> puedo agregar la data y que tipo de data a insertar (batch),dado a que
> no la parte de grabacion no aparece en el documento.
>
> De antemano gracias por su ayuda
> Saludos
>
>
--
Dinámica - Framework Java/Ajax
100% software libre
http://www.martincordova.com
Hola Chicos revisando la documentación del grid editable y dinámico
estoy buscando la forma de especificar en que tabla de base datos
puedo agregar la data y que tipo de data a insertar (batch),dado a que
no la parte de grabacion no aparece en el documento.
De antemano gracias por su ayuda
Saludos
Hola, en principio si tu aplicacion "/admin" tiene su propio
context.xml dentro de /META-INF, no seria necesario añadirle nada a
Tomcat, salvo copiar tu carpeta admin dentro de webapps. No entendi lo
de copiar la carpeta dinamica dentro de tomcat, eso seria para
desarrollar con Ubuntu, no para hacer deploy.
Es importante que tengas el driver de PostgreSQL en la carpeta
correcta de tomcat, que seria algo asi como /libs o /commons.
Nosotros no usamos Tomcat 5.5, pero asumo que se organiza de manera
similar al Tomcat 6.x
Trata de ubicar en el log catalina.out errores anteriores al que
señalas, porque el que muestras no indica la causa, sino solo que no
pudo cargar la aplicacion.
Saludos,
Martin
2008/12/5 Daniel Rodriguez <dirs21@...>:
> Saludos Amigos, primero que nada fecilitar a los creadores de esta
> herramienta.
>
> Bueno tengo poco tiempo usando Dinamica, y en ese corto tiempo lo trabaje
> siempre bajo Windows, ahora requiero llevarlo a Ubuntu, pero tengo un
> problema aca.
>
> El servidor no me pertenece y ya posee instalada una versión de Tomcat 5.5
> en la cual ya tienen corriendo otras aplicaciones por lo que no puedo
> cambiar la versión. Intente configurar para que funcionaran aplicaciones
> basadas en dinamica pero nada.
>
> En lo posible si me pudieran ayudar para saber que pasos rapidos debo hacer
> para que me funcione una aplicación en ese servidor. Ya copie la carpeta
> dinamica a la carpeta de tomcat5.5 modifique los context.xml, web.xml con
> las ubicaciones de base de datos postgresql, de igual forma copie el plugin
> de conexion en la carpeta lib.
>
> En el administrador de tomcat al intentar arrancar la aplicacion me dice:
>
> FALLO - No se pudo arrancar la aplicación en trayectoria de contexto /admin
>
> Saludos y Gracias de antemano
>
--
Dinámica - Framework Java/Ajax
100% software libre
http://www.martincordova.com
Saludos Amigos, primero que nada fecilitar a los creadores de esta herramienta.
Bueno tengo poco tiempo usando Dinamica, y en ese corto tiempo lo trabaje siempre bajo Windows, ahora requiero llevarlo a Ubuntu, pero tengo un problema aca.
El servidor no me pertenece y ya posee instalada una versión de Tomcat 5.5 en la cual ya tienen corriendo otras aplicaciones por lo que no puedo cambiar la versión. Intente configurar para que funcionaran aplicaciones basadas en dinamica pero nada.
En lo posible si me pudieran ayudar para saber que pasos rapidos debo hacer para que me funcione una aplicación en ese servidor. Ya copie la carpeta dinamica a la carpeta de tomcat5.5 modifique los context.xml, web.xml con las ubicaciones de base de datos postgresql, de igual forma copie el plugin de conexion en la carpeta lib.
En el administrador de tomcat al intentar arrancar la aplicacion me dice:
FALLO - No se pudo arrancar la aplicación en trayectoria de contexto /admin
Fue descontinuado hace tiempo. La opcion para generar los scripts de
seguridad ahora esta en el plugin de Dinamica para Eclipse, bajo el
menu "Export". Revisa el manual del plugin que esta en el website.
Saludos,
Martin
2008/11/27 andres ibarra <ibarra_andres@...>:
> buenas tardes,
>
> en el compactado de dinamica no consigo el
> dinamica-2.1.4\DinamicaTools, donde podre encontrarlo necesito trabajar con
> seguridad, gracias
>
> ________________________________
> ¡Pasa del Pendrive! Skydrive almacena hasta 5 GB online gratis
>
--
Dinámica - Framework Java/Ajax
100% software libre
http://www.martincordova.com
en el compactado de dinamica no consigo el
dinamica-2.1.4\DinamicaTools, donde podre encontrarlo necesito trabajar con seguridad, gracias ¡Pasa del Pendrive! Skydrive almacena hasta 5 GB online gratis
Hola, no lo registra porque es un error HTTP 404, que significa que
no existe el URL que estas invocando. Revisa la ruta del Action que
estas llamando, puede contener un error. De hecho el registro de
acceso HTTP (access_log) deberia tener registrada esta solicitud con
un resultado 404.
Saludos,
Martin
2008/11/20 andres ibarra <ibarra_andres@...>:
> buenas tardes,
>
> cuando invoco un seach, me sale el siguiente error "el servicio solicitado
> no existe" y el tomcat no registra el error, que podria ser
>
>
> gracias
>
> ________________________________
> No te aburras más, engánchate a los Juegos de Messenger
>
--
Dinámica - Framework Java/Ajax
100% software libre
http://www.martincordova.com
Al momento de guardar tu registro, identificado con un ID, podrias
hacer un UPDATE para actualizar el registro anterior y otro para el
siguiente. La clase dinamica.GenericTableManager puede ejecutar
cuantos queries le pongas en el config.xml, asi que ademas de ejecutar
el del registro actual, ejecutas dos updates mas, los defines como
elementos <query> en el config.xml, y usas los valores ingresados para
determinar los calculos. Lo que deberias tener en tu formulario de
repente es el ID del punto anterior y del siguiente, eso facilitaria
las cosas.
Recuerda que tu puedes tener datos en tu formulario, en controles no
visibles, asi los recibes en el validator.xml como si los hubiera
ingresado el usuario, pero el usuario no los ve.
Saludos,
Martin
2008/11/20 Yusmely Perdomo <yusmelyp@...>:
> Buenas tardes, disculpa aun tengo inconvenientes para acceder a ciertos
> datos de la base de datos...
>
> la idea es que al momento de editar los datos que contiene un id, se tiene
> que modificar el valor anterior y el siguiente pero sin que estos datos se
> muestren en pantalla solo los necesito para trabajar con ellos (solo para
> realizar calculos) y al momento del nuevo calculo se modifican esos valores
> al guardar...
>
> Por favor si me pueden ayudar.... He intentado pero de verdad no entiendo
> desde donde lo puedo realizar... o si mi pagina no permite eso, que bases
> necesito revisar o cambiar....Por favor... Gracias...
>
>
--
Dinámica - Framework Java/Ajax
100% software libre
http://www.martincordova.com
Buenas tardes, disculpa aun tengo inconvenientes para acceder a ciertos datos de la base de datos...
la idea es que al momento de editar los datos que contiene un id, se tiene que modificar el valor anterior y el siguiente pero sin que estos datos se muestren en pantalla solo los necesito para trabajar con ellos (solo para realizar calculos) y al momento del nuevo calculo se modifican esos valores al guardar...
Por favor si me pueden ayudar.... He intentado pero de verdad no entiendo desde donde lo puedo realizar... o si mi pagina no permite eso, que bases necesito revisar o cambiar....Por favor... Gracias...
Hola, recien aprendimos sobre esta simpatica capacidad que tiene el
componente IText (generador de PDFs):
import com.lowagie.text.html.HtmlParser;
import java.io.StringReader;
HtmlParser.parse(doc, new StringReader("<p align='center'>Esta es una
<b>prueba</b></p>"));
Esta clase HtmlParser interpreta el HTML y lo convierte en objetos PDF
que luego añade al documento, en este caso un parrafo y un chunk
interno en negritas. Un ahorrador de tiempo sin duda, lo usamos hoy en
un proyecto para generar unas cartas de certificacion, y evitamos
mucho codigo.
Otro tip: el video de la apertura del concierto de Duran Duran en
Caracas el sabado pasado:
http://www.youtube.com/watch?v=0UHdU9Bixps
Chau,
Martin
--
Dinámica - Framework Java/Ajax
100% software libre
http://www.martincordova.com
Buen día Martín. Sería bastante útil que la clase PagingControls manejara un valor por defecto para el valor paging.pagesize asi no es necesario colocar ese valor en todos los actions que usen esa clase sino que asume ese valor por defecto.
Precisamente la solucion planteada es un validator generico, que ya
existe, simplemente lo añades al config.xml de tu delete, y verificas
la existencia de registros asociados, y de ser asi, muestras un
mensaje de validacion. En el delete recibes en general el ID del
registro, pero si necesitas mas data para el query que hace la
verificacion, simplemente envia los parametros y declaralos en el
validator.xml del action /delete.
Interceptar la Excepcion y verificar su contenido no es confiable sino
con una BD especifica, porque el mensaje varia de una BD a otra.
El validator no implica programar nada, es simplemente cuestion de declarar.
Saludos,
Martin
2008/11/12 Matias Gonzalez <matias87lp@...>:
> Y no hay alguna solución ya planteada?
>
> Como sería esta estrategia de validación. Ya que para lo q es mantenimiento
> no es muy recomendable. Cualquier registro que tenga una constraint nueva
> voy a tener que modifcar el código del CRUD.
>
> Además.. como realizo el flujo de la validación ya que se llama al delete y
> ahi se tiene en cuenta que el campo id (en este caso) sea obligatorio. ¿Pero
> un control más complejo?
>
> Sino lo que me quedaría sería modifcar el código base del framework para
> realizar el control como me parece más correcto. Si lo hago lo compartiré
> con la comunidad.
>
> Un saludo y acepto sugerencias.
>
> MATIAS
>
> --- El mié 12-nov-08, Martin Cordova <martin.cordova@...> escribió:
>
> De: Martin Cordova <martin.cordova@...>
> Asunto: Re: [dinamica4java] Control de excepciones sobre delete
> Para: dinamica4java@...
> Fecha: miércoles, 12 de noviembre de 2008, 2:43 pm
>
> Mi recomendacion es que utilices un validator para probar la condicion
> (de existencia del otro registro asociado) antes de intentar
> eliminarlo, de esta manera das un mensaje de validacion y no uno de
> error. Saludos, Martin.
>
> 2008/11/12 Matias Gonzalez <matias87lp@yahoo. com.ar>:
>> Buenos días
>>
>> Estoy teniendo un problema en el cual el usuario desea eliminar un dato
>> desde un CRUD (utilizando el template de crud del framework) y como el
>> dato
>> a eliminar se encuentra referenciado la base de datos dispara una
>> exception
>> la cual no puedo capturar y me aparece un feo pop up con "Error en el
>> sistema".
>>
>> Traté de atacar este problema heredando del GenericTableManager y de esa
>> forma capturar si es una excepción de la que busco devuelvo un codigo de
>> error más manjable para posteriormente devolver una respuesta más acorde
>> con
>> el error.
>>
>> Este es el código:
>>
>> public class EliminacionGenerica extends GenericTableManager {
>>
>> @Override
>> public int service(Recordset inputParams) throws Throwable {
>> int retorno = 0;
>> try {
>> retorno = super.service( inputParams) ;
>> } catch (Exception e) {
>> if (e.getMessage( ).contains( "violates foreign key constraint") ){
>> retorno = 1;
>> } else {
>> throw e;
>> }
>> }
>> return retorno;
>> }
>>
>> Y para el config de la acción delete puse lo siguiente
>>
>> <config>
>>
>> <summary>
>> Tarea - Eliminar registro
>> </summary>
>>
>> <log>false</ log>
>>
>> <transaction>
>> <classname>orchour. framework. EliminacionGener ica</classname>
>> <validator>true< /validator>
>> <transaction> false</transacti on>
>> <jdbc-log>false< /jdbc-log>
>> </transaction>
>>
>> <query>delete. sql</query>
>>
>> <output>
>> <classname>dinamica .GenericOutput< /classname>
>> <template>message. htm</template>
>> <set-http-headers> true</set- http-headers>
>> <content-type> text/html< /content- type>
>> <expiration> 0</expiration>
>> </output>
>>
>> <on-exit return-code= "1" forward-to=" ${def:actionroot }/notdelete" />
>>
>> </config>
>>
>> El problema es que intento pero el código de la clase EliminacionGenerica
>> cuando lanza la excepción no puedo capturarla y en cambio ya me genera la
>> respuesta al servidor con el mensaje de "Error en el sistema"
>>
>> Alguien pudo realizar una solución como la que estoy plantando?
>>
>> Desde ya muchas gracias por la atención
>>
>> MATIAS GONZALEZ
>>
>> ____________ _________ _________ __
>> Yahoo! Cocina
>> Recetas prácticas y comida saludable
>> Visitá http://ar.mujer. yahoo.com/ cocina/
>>
>
> --
> Dinámica - Framework Java/Ajax
> 100% software libre
> http://www.martinco rdova.com
>
> ________________________________
> Yahoo! Cocina
> Recetas prácticas y comida saludable
> Visitá http://ar.mujer.yahoo.com/cocina/
>
--
Dinámica - Framework Java/Ajax
100% software libre
http://www.martincordova.com
Como sería esta estrategia de validación. Ya que para lo q es mantenimiento no es muy recomendable. Cualquier registro que tenga una constraint nueva voy a tener que modifcar el código del CRUD.
Además.. como realizo el flujo de la validación ya que se llama al delete y ahi se tiene en cuenta que el campo id (en este caso) sea obligatorio. ¿Pero un control más complejo?
Sino lo que me quedaría sería modifcar el código base del framework para realizar el control como me parece más correcto. Si lo hago lo compartiré con la comunidad.
Un saludo y acepto sugerencias.
MATIAS
--- El mié 12-nov-08, Martin Cordova <martin.cordova@...> escribió:
De: Martin Cordova <martin.cordova@...> Asunto: Re: [dinamica4java] Control de excepciones sobre delete Para: dinamica4java@... Fecha: miércoles, 12 de noviembre de 2008, 2:43 pm
Mi recomendacion es que utilices un validator para probar la condicion
(de existencia del otro registro asociado) antes de intentar
eliminarlo, de esta manera das un mensaje de validacion y no uno de
error. Saludos, Martin.
2008/11/12 Matias Gonzalez <matias87lp@yahoo. com.ar>:
> Buenos días
>
> Estoy teniendo un problema en el cual el usuario desea eliminar un dato
> desde un CRUD (utilizando el template de crud del framework) y como el dato
> a eliminar se encuentra referenciado la base de datos dispara una exception
> la cual no puedo capturar y me aparece un feo pop up con "Error en el
> sistema".
>
> Traté de atacar este problema heredando del GenericTableManager y de esa
> forma capturar si es una excepción de la que busco devuelvo un codigo de
> error más manjable para posteriormente devolver una respuesta más acorde con
> el error.
>
> Este es el código:
>
> public class EliminacionGenerica extends GenericTableManager {
>
> @Override
> public int service(Recordset inputParams) throws Throwable {
> int retorno = 0;
> try {
> retorno = super.service( inputParams) ;
> } catch (Exception e) {
> if (e.getMessage( ).contains( "violates foreign key constraint") ){
> retorno = 1;
> } else {
> throw e;
> }
> }
> return retorno;
> }
>
> Y para el config de la acción delete puse lo siguiente
>
> <config>
>
> <summary>
> Tarea - Eliminar registro
> </summary>
>
> <log>false</ log>
>
> <transaction>
> <classname>orchour. framework. EliminacionGener ica</classname>
> <validator>true< /validator>
> <transaction> false</transacti on>
> <jdbc-log>false< /jdbc-log>
> </transaction>
>
> <query>delete. sql</query>
>
> <output>
> <classname>dinamica .GenericOutput< /classname>
> <template>message. htm</template>
> <set-http-headers> true</set- http-headers>
> <content-type> text/html< /content- type>
> <expiration> 0</expiration>
> </output>
>
> <on-exit return-code= "1" forward-to=" ${def:actionroot }/notdelete" />
>
> </config>
>
> El problema es que intento pero el código de la clase EliminacionGenerica
> cuando lanza la excepción no puedo capturarla y en cambio ya me genera la
> respuesta al servidor con el mensaje de "Error en el sistema"
>
> Alguien pudo realizar una solución como la que estoy plantando?
>
> Desde ya muchas gracias por la atención
>
> MATIAS GONZALEZ
>
> ____________ _________ _________ __
> Yahoo! Cocina
> Recetas prácticas y comida saludable
> Visitá http://ar.mujer. yahoo.com/ cocina/
>
Mi recomendacion es que utilices un validator para probar la condicion
(de existencia del otro registro asociado) antes de intentar
eliminarlo, de esta manera das un mensaje de validacion y no uno de
error. Saludos, Martin.
2008/11/12 Matias Gonzalez <matias87lp@...>:
> Buenos días
>
> Estoy teniendo un problema en el cual el usuario desea eliminar un dato
> desde un CRUD (utilizando el template de crud del framework) y como el dato
> a eliminar se encuentra referenciado la base de datos dispara una exception
> la cual no puedo capturar y me aparece un feo pop up con "Error en el
> sistema".
>
> Traté de atacar este problema heredando del GenericTableManager y de esa
> forma capturar si es una excepción de la que busco devuelvo un codigo de
> error más manjable para posteriormente devolver una respuesta más acorde con
> el error.
>
> Este es el código:
>
> public class EliminacionGenerica extends GenericTableManager {
>
> @Override
> public int service(Recordset inputParams) throws Throwable {
> int retorno = 0;
> try {
> retorno = super.service(inputParams);
> } catch (Exception e) {
> if (e.getMessage().contains("violates foreign key constraint")){
> retorno = 1;
> } else {
> throw e;
> }
> }
> return retorno;
> }
>
> Y para el config de la acción delete puse lo siguiente
>
> <config>
>
> <summary>
> Tarea - Eliminar registro
> </summary>
>
> <log>false</log>
>
> <transaction>
> <classname>orchour.framework.EliminacionGenerica</classname>
> <validator>true</validator>
> <transaction>false</transaction>
> <jdbc-log>false</jdbc-log>
> </transaction>
>
> <query>delete.sql</query>
>
> <output>
> <classname>dinamica.GenericOutput</classname>
> <template>message.htm</template>
> <set-http-headers>true</set-http-headers>
> <content-type>text/html</content-type>
> <expiration>0</expiration>
> </output>
>
> <on-exit return-code="1" forward-to="${def:actionroot}/notdelete"/>
>
> </config>
>
> El problema es que intento pero el código de la clase EliminacionGenerica
> cuando lanza la excepción no puedo capturarla y en cambio ya me genera la
> respuesta al servidor con el mensaje de "Error en el sistema"
>
> Alguien pudo realizar una solución como la que estoy plantando?
>
> Desde ya muchas gracias por la atención
>
> MATIAS GONZALEZ
>
> ________________________________
> Yahoo! Cocina
> Recetas prácticas y comida saludable
> Visitá http://ar.mujer.yahoo.com/cocina/
>
--
Dinámica - Framework Java/Ajax
100% software libre
http://www.martincordova.com
Estoy teniendo un problema en el cual el usuario desea eliminar un dato desde un CRUD (utilizando el template de crud del framework) y como el dato a eliminar se encuentra referenciado la base de datos dispara una exception la cual no puedo capturar y me aparece un feo pop up con "Error en el sistema".
Traté de atacar este problema heredando del GenericTableManager y de esa forma capturar si es una excepción de la que busco devuelvo un codigo de error más manjable para posteriormente devolver una respuesta más acorde con el error.
Este es el código:
public class EliminacionGenerica extends GenericTableManager {
@Override public int service(Recordset inputParams) throws Throwable { int retorno = 0; try { retorno = super.service(inputParams); } catch (Exception e) {
if (e.getMessage().contains("violates foreign key constraint")){ retorno = 1; } else { throw e; }
} return retorno; }
Y para el config de la acción delete puse lo siguiente
<config>
<summary> Tarea - Eliminar registro </summary> <log>false</log>
El problema es que intento pero el código de la clase EliminacionGenerica cuando lanza la excepción no puedo capturarla y en cambio ya me genera la respuesta al servidor
con el mensaje de "Error en el sistema"
Alguien pudo realizar una solución como la que estoy plantando?
Desde ya muchas gracias por la atención
MATIAS GONZALEZ
Yahoo! Cocina Recetas prácticas y comida saludable Visitá http://ar.mujer.yahoo.com/cocina/
Hola, se acaba de publicar el manual del Administrador de Seguridad,
este es un aporte valioso en tanto que puede formar parte de los
entregables que consignan en un proyecto basado en Dinamica - sin que
implique un costo para ustedes, ademas de ampliar el banco de
documentacion del framework.
Lo pueden ubicar en la seccion de "Documentacion basica del framework".
Saludos,
Martin
--
Dinámica - Framework Java/Ajax
100% software libre
http://www.martincordova.com
Bien, gracias por el dato. Ya veré de activar todas las aplicaciones
para probar.
Saludos
2008/11/5 Martin Cordova <martin.cordova@...>:
> No hemos trabajado con el escenario en que tienes aplicaciones
> instaladas pero inactivas, sorry. Te refieres a eso? dudo que
> funcione, incluso el /action/test fallaria.
>
> Por cierto, ayer probamos en Ubuntu Desktop 8.04, con Java 1.6.07, y
> si bien corrio a la primera, hay dos graficos en los que no aparecia
> nada, tendremos que depurar el programa en Linux a ver que pasa, dudo
> que sea que los recordsets no llegan bien, creo que debe ser algun
> tema del JFreeChart en Linux.
>
> Ya estamos monitoreando servidores de produccion usando un cliente
> Windows, funciona al pelo, pero eso si, con todas las aplicaciones
> activas.
>
> Saludos,
> Martin
>
> 2008/11/5 Gustavo Javier Dottori <gustavo.dottori@...>:
>> Hola Martín, ante todo muy buena la idea del monitor, es una
>> herramiento útil a la hora de evaluar el comportamiento del servidor,
>> el estado en el que se encuentra.
>>
>> Pregunta, respecto al monitor, no lo puedo correr ya me da error por
>> cada aplicación que no está levantada dentro de tomcat, por más que no
>> sean las que esté monitoreando.
>>
>> El error es el siguiente:
>>
>> En la consola de tomcat :
>> 05/11/2008 11:12:00 org.apache.catalina.core.StandardWrapperValve invoke
>> GRAVE: Servlet.service() para servlet Controller lanz� excepci�n
>> javax.management.InstanceNotFoundException:
>> Catalina:type=Manager,path=/manager,host=localhost
>> at
>>
>>
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServe\
rInterceptor.java:1094)
>> at
>>
>>
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanS\
erverInterceptor.java:662)
>> at
>>
>> com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:638)
>> at dinamica.SysInfo.getWebappsInfo(SysInfo.java:121)
>> at dinamica.SysInfo.service(SysInfo.java:80)
>> at dinamica.SysInfo2.service(SysInfo2.java:15)
>> at dinamica.Controller.service(Controller.java:268)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
>> at
>>
>>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt\
erChain.java:290)
>> at
>>
>>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.\
java:206)
>> at
>>
>>
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:2\
33)
>> at
>>
>>
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:1\
75)
>> at
>>
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>> at
>>
>>
org.jstripe.tomcat.probe.Tomcat55AgentValve.invoke(Tomcat55AgentValve.java:20)
>> at
>>
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>> at
>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
>> at
>>
>>
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109\
)
>> at
>>
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>> at
>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
>> at
>>
>>
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Pr\
otocol.java:583)
>> at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
>> at java.lang.Thread.run(Thread.java:619)
>>
>> En la consola dde corrí el monitor:
>> java.lang.Throwable: HTTP Error: 500 - null
>> at TomcatMonitor$DemoPanel.httpGet(TomcatMonitor.java:321)
>> at TomcatMonitor$DemoPanel.updateChartData(TomcatMonitor.java:247)
>> at TomcatMonitor$DemoPanel$MonitorTask.run(TomcatMonitor.java:288)
>> at java.util.TimerThread.mainLoop(Timer.java:512)
>> at java.util.TimerThread.run(Timer.java:462)
>>
>> Alguna idea o sugerencia?
>>
>> Saludos
>>
>> PD: Adjunto script para linux al cual se le indica como parámetro por
>> línea de comando el nombre de la aplicación. Por ejemplo, para una
>> aplicación llamada devel, se invocaría como:
>> ./run.sh devel
>>
>> 2008/11/4 Martin Cordova <martin.cordova@...>:
>>
>>> Hola, se actualizo el repositorio con un nuevo JAR y el /action/test
>>> modificado. Tambien se publico TomcatMonitor, pero para poder usarlo
>>> deben tener el ultimo framework.jar y /action/test. Hay otras mejoras
>>> y correcciones, incluyendo plugin para graficos GANTT, ver changelog
>>> para mas informacion.
>>>
>>> Nota: deben modificar run.nat para poner su propia configuracion para
>>> poder correr TomcatMonitor. Deberia correr en Linux tambien si hacen
>>> un run.sh - es facil.
>>>
>>> Saludos,
>>> Martin
>>> --
>>> Dinámica - Framework Java/Ajax
>>> 100% software libre
>>> http://www.martincordova.com
>>>
>>>
>>
>
> --
> Dinámica - Framework Java/Ajax
> 100% software libre
> http://www.martincordova.com
>
No hemos trabajado con el escenario en que tienes aplicaciones
instaladas pero inactivas, sorry. Te refieres a eso? dudo que
funcione, incluso el /action/test fallaria.
Por cierto, ayer probamos en Ubuntu Desktop 8.04, con Java 1.6.07, y
si bien corrio a la primera, hay dos graficos en los que no aparecia
nada, tendremos que depurar el programa en Linux a ver que pasa, dudo
que sea que los recordsets no llegan bien, creo que debe ser algun
tema del JFreeChart en Linux.
Ya estamos monitoreando servidores de produccion usando un cliente
Windows, funciona al pelo, pero eso si, con todas las aplicaciones
activas.
Saludos,
Martin
2008/11/5 Gustavo Javier Dottori <gustavo.dottori@...>:
> Hola Martín, ante todo muy buena la idea del monitor, es una
> herramiento útil a la hora de evaluar el comportamiento del servidor,
> el estado en el que se encuentra.
>
> Pregunta, respecto al monitor, no lo puedo correr ya me da error por
> cada aplicación que no está levantada dentro de tomcat, por más que no
> sean las que esté monitoreando.
>
> El error es el siguiente:
>
> En la consola de tomcat :
> 05/11/2008 11:12:00 org.apache.catalina.core.StandardWrapperValve invoke
> GRAVE: Servlet.service() para servlet Controller lanz� excepci�n
> javax.management.InstanceNotFoundException:
> Catalina:type=Manager,path=/manager,host=localhost
> at
>
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServe\
rInterceptor.java:1094)
> at
>
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanS\
erverInterceptor.java:662)
> at
> com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:638)
> at dinamica.SysInfo.getWebappsInfo(SysInfo.java:121)
> at dinamica.SysInfo.service(SysInfo.java:80)
> at dinamica.SysInfo2.service(SysInfo2.java:15)
> at dinamica.Controller.service(Controller.java:268)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> at
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt\
erChain.java:290)
> at
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.\
java:206)
> at
>
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:2\
33)
> at
>
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:1\
75)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> at
> org.jstripe.tomcat.probe.Tomcat55AgentValve.invoke(Tomcat55AgentValve.java:20)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
> at
>
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109\
)
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
> at
>
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Pr\
otocol.java:583)
> at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
> at java.lang.Thread.run(Thread.java:619)
>
> En la consola dde corrí el monitor:
> java.lang.Throwable: HTTP Error: 500 - null
> at TomcatMonitor$DemoPanel.httpGet(TomcatMonitor.java:321)
> at TomcatMonitor$DemoPanel.updateChartData(TomcatMonitor.java:247)
> at TomcatMonitor$DemoPanel$MonitorTask.run(TomcatMonitor.java:288)
> at java.util.TimerThread.mainLoop(Timer.java:512)
> at java.util.TimerThread.run(Timer.java:462)
>
> Alguna idea o sugerencia?
>
> Saludos
>
> PD: Adjunto script para linux al cual se le indica como parámetro por
> línea de comando el nombre de la aplicación. Por ejemplo, para una
> aplicación llamada devel, se invocaría como:
> ./run.sh devel
>
> 2008/11/4 Martin Cordova <martin.cordova@...>:
>
>> Hola, se actualizo el repositorio con un nuevo JAR y el /action/test
>> modificado. Tambien se publico TomcatMonitor, pero para poder usarlo
>> deben tener el ultimo framework.jar y /action/test. Hay otras mejoras
>> y correcciones, incluyendo plugin para graficos GANTT, ver changelog
>> para mas informacion.
>>
>> Nota: deben modificar run.nat para poner su propia configuracion para
>> poder correr TomcatMonitor. Deberia correr en Linux tambien si hacen
>> un run.sh - es facil.
>>
>> Saludos,
>> Martin
>> --
>> Dinámica - Framework Java/Ajax
>> 100% software libre
>> http://www.martincordova.com
>>
>>
>
--
Dinámica - Framework Java/Ajax
100% software libre
http://www.martincordova.com
Acá va el script....
2008/11/5 Gustavo Javier Dottori <gustavo.dottori@...>:
> Hola Martín, ante todo muy buena la idea del monitor, es una
> herramiento útil a la hora de evaluar el comportamiento del servidor,
> el estado en el que se encuentra.
>
> Pregunta, respecto al monitor, no lo puedo correr ya me da error por
> cada aplicación que no está levantada dentro de tomcat, por más que no
> sean las que esté monitoreando.
>
> El error es el siguiente:
>
> En la consola de tomcat :
> 05/11/2008 11:12:00 org.apache.catalina.core.StandardWrapperValve invoke
> GRAVE: Servlet.service() para servlet Controller lanz� excepci�n
> javax.management.InstanceNotFoundException:
> Catalina:type=Manager,path=/manager,host=localhost
> at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServe\
rInterceptor.java:1094)
> at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanS\
erverInterceptor.java:662)
> at
com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:638)
> at dinamica.SysInfo.getWebappsInfo(SysInfo.java:121)
> at dinamica.SysInfo.service(SysInfo.java:80)
> at dinamica.SysInfo2.service(SysInfo2.java:15)
> at dinamica.Controller.service(Controller.java:268)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt\
erChain.java:290)
> at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.\
java:206)
> at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:2\
33)
> at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:1\
75)
> at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> at
org.jstripe.tomcat.probe.Tomcat55AgentValve.invoke(Tomcat55AgentValve.java:20)
> at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
> at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109\
)
> at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
> at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
> at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Pr\
otocol.java:583)
> at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
> at java.lang.Thread.run(Thread.java:619)
>
>
> En la consola dde corrí el monitor:
> java.lang.Throwable: HTTP Error: 500 - null
> at TomcatMonitor$DemoPanel.httpGet(TomcatMonitor.java:321)
> at TomcatMonitor$DemoPanel.updateChartData(TomcatMonitor.java:247)
> at TomcatMonitor$DemoPanel$MonitorTask.run(TomcatMonitor.java:288)
> at java.util.TimerThread.mainLoop(Timer.java:512)
> at java.util.TimerThread.run(Timer.java:462)
>
>
> Alguna idea o sugerencia?
>
>
> Saludos
>
> PD: Adjunto script para linux al cual se le indica como parámetro por
> línea de comando el nombre de la aplicación. Por ejemplo, para una
> aplicación llamada devel, se invocaría como:
> ./run.sh devel
>
> 2008/11/4 Martin Cordova <martin.cordova@...>:
>> Hola, se actualizo el repositorio con un nuevo JAR y el /action/test
>> modificado. Tambien se publico TomcatMonitor, pero para poder usarlo
>> deben tener el ultimo framework.jar y /action/test. Hay otras mejoras
>> y correcciones, incluyendo plugin para graficos GANTT, ver changelog
>> para mas informacion.
>>
>> Nota: deben modificar run.nat para poner su propia configuracion para
>> poder correr TomcatMonitor. Deberia correr en Linux tambien si hacen
>> un run.sh - es facil.
>>
>> Saludos,
>> Martin
>> --
>> Dinámica - Framework Java/Ajax
>> 100% software libre
>> http://www.martincordova.com
>>
>>
>
Hola Martín, ante todo muy buena la idea del monitor, es una
herramiento útil a la hora de evaluar el comportamiento del servidor,
el estado en el que se encuentra.
Pregunta, respecto al monitor, no lo puedo correr ya me da error por
cada aplicación que no está levantada dentro de tomcat, por más que no
sean las que esté monitoreando.
El error es el siguiente:
En la consola de tomcat :
05/11/2008 11:12:00 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() para servlet Controller lanz� excepci�n
javax.management.InstanceNotFoundException:
Catalina:type=Manager,path=/manager,host=localhost
at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServe\
rInterceptor.java:1094)
at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanS\
erverInterceptor.java:662)
at com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:638)
at dinamica.SysInfo.getWebappsInfo(SysInfo.java:121)
at dinamica.SysInfo.service(SysInfo.java:80)
at dinamica.SysInfo2.service(SysInfo2.java:15)
at dinamica.Controller.service(Controller.java:268)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt\
erChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.\
java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:2\
33)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:1\
75)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at
org.jstripe.tomcat.probe.Tomcat55AgentValve.invoke(Tomcat55AgentValve.java:20)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109\
)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Pr\
otocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
En la consola dde corrí el monitor:
java.lang.Throwable: HTTP Error: 500 - null
at TomcatMonitor$DemoPanel.httpGet(TomcatMonitor.java:321)
at TomcatMonitor$DemoPanel.updateChartData(TomcatMonitor.java:247)
at TomcatMonitor$DemoPanel$MonitorTask.run(TomcatMonitor.java:288)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
Alguna idea o sugerencia?
Saludos
PD: Adjunto script para linux al cual se le indica como parámetro por
línea de comando el nombre de la aplicación. Por ejemplo, para una
aplicación llamada devel, se invocaría como:
./run.sh devel
2008/11/4 Martin Cordova <martin.cordova@...>:
> Hola, se actualizo el repositorio con un nuevo JAR y el /action/test
> modificado. Tambien se publico TomcatMonitor, pero para poder usarlo
> deben tener el ultimo framework.jar y /action/test. Hay otras mejoras
> y correcciones, incluyendo plugin para graficos GANTT, ver changelog
> para mas informacion.
>
> Nota: deben modificar run.nat para poner su propia configuracion para
> poder correr TomcatMonitor. Deberia correr en Linux tambien si hacen
> un run.sh - es facil.
>
> Saludos,
> Martin
> --
> Dinámica - Framework Java/Ajax
> 100% software libre
> http://www.martincordova.com
>
>
Hola, se actualizo el repositorio con un nuevo JAR y el /action/test
modificado. Tambien se publico TomcatMonitor, pero para poder usarlo
deben tener el ultimo framework.jar y /action/test. Hay otras mejoras
y correcciones, incluyendo plugin para graficos GANTT, ver changelog
para mas informacion.
Nota: deben modificar run.nat para poner su propia configuracion para
poder correr TomcatMonitor. Deberia correr en Linux tambien si hacen
un run.sh - es facil.
Saludos,
Martin
--
Dinámica - Framework Java/Ajax
100% software libre
http://www.martincordova.com
Felicitaciones! Realmente son sorprendentes con el dominio de la tecnologia aportando soluciones a la altura de ambientes corporativos, funcionales y en corto tiempo. No espero el momento en llegar a casa y montar el nuevo ambiente con las actualizaciones, tengo un par de meses sin tocar Dinamica!
Ya lo hicimos! Ante la falta de respuesta, no nos quedo otro remedio que copiar y pegar en Eclipse hasta obtener un resultado rapido.
Le falta uno que otro detalle, pero ya tiene forma, les anexo un screenshot. Es un monitor GUI en "tiempo real" - cada 1 segundo, que
les da informacion importante del proceso Tomcat, y tambien informacion especifica de una aplicacion en particular, que le indican por linea de comando.
El eje X de los graficos se va rodando a medida que pasa el tiempo y
se recibe nueva data. El request a Tomcat es muy rapido, menos de 50ms. Se incluyo un Action /action/test/data que retorna un hashmap con los recordsets, todo serializado via HTTP.
Nos basamos en un ejemplo de DynamicChart que incluye JFreeChart, y
sin saber nada de GUIs en Java, la cosa salio en dos dias.
On Sun, Nov 2, 2008 at 8:48 PM, Martin Cordova <martin.cordova@...> wrote: > Hola, esto de repente le interesa a algun estudiante que este en la
> recta final y necesite un tema para una tesis compacta e interesante, > o para cerrar un semestre. La oferta va dirigida a personas residentes > en Venezuela, por la necesidad de contacto directo y de pagar en
> moneda local. > > Se trata de lo siguiente: > > Las aplicaciones basadas en Dinamica exponen un URL para diagnostico, > muy liviano y que reporta informacion muy util para diagnosticar un
> proceso Tomcat, es /action/test, que por cierto la acabamos de > reescribir para hacerla mas util, ahora incluso genera un Thread Dump > y funciona bien con el conector asincrono de Tomcat (la version actual
> no lo hace). > > Este URL puede exportar HTML, enviar por email y tambien generar un > PDF. Y sin ningun esfuerzo puede generar una respuesta binaria por > HTTP, serializando los recordsets con toda la informacion, y aqui
> viene lo interesante. > > Queremos tener un cliente GUI, con Swing o lo que sea mas light, > contenido en un solo JAR, y que muestre un dashboard dinamico con unos > graficos, que se actualicen cada 1 segundo o por un periodo
> configurable. El cliente seria realmente facil de hacer para alguien > con algo de experiencia haciendo aplicaciones GUI con Java. Los > recordsets llegaran por http(s) con una sola linea de codigo, el resto
> es reflejarlos en los charts, pero en caliente, JFreeChart permite > esto cuando se usa en un GUI. > > Esto seria util para una tesis que combina los temas de Java System > Monitoring (JMX), serializacion sobre http (tunneling), dashboards
> para visualizacion y Dinamica como backend. Las cosas se ensamblan > facil y el marco teorico esta full documentado. Es un mango bajito, un > tiro al piso. De paso tendria una remuneracion atractiva, nosotros
> seriamos el sponsor. > > Los derechos de propiedad y distribucion seran de nuestra empresa, con > debido credito al autor - sera distribuido open source. > > Anexo un PDF de la informacion que esta exportando el /action/test.
> > Si hay algun interesado(a) pueden contactarme directo a mi email. > > La oferta la orientamos a estudiantes, pero si alguien quiere hacerlo > y ganarse una platica, bienvenido sea, eso si, con mas experiencia que
> nosotros haciendo aplicacion GUI por favor. > > Saludos, > Martin > -- > Dinámica - Framework Java/Ajax > 100% software libre > http://www.martincordova.com
>