Mostrando entradas con la etiqueta Java. Mostrar todas las entradas
Mostrando entradas con la etiqueta Java. Mostrar todas las entradas

lunes, 8 de agosto de 2016

Aplicación Java no despliega sobre Tomcat 8 en Genexus

Bueno hoy tocó hacer algunas pruebas sobre Java y Tomcat 8 con Genexus y me encuentro con la sorpresa de qué no se desplegaba mi app en el servidor de aplicaciones.

Tengo el servicio de tomcat levantado en forma manual asi que debo ingresar a la página de administración y arrancar la aplicación, al hacerlo me doy cuenta de un error en la app que no permite arrancarla:



Revisando el log de Tomcat ([path de instalación]/logs) me encuentro con un error relacionado con el GAM de Genexus, el cual no estoy usando:


Caused by: java.lang.NoClassDefFoundError: artech/security/api/gamrefreshtoken

pero googleando un poco me topo con el SAC#31566 que explica las configuraciones pertinentes para Tomcat 7, asi que a probar un poco las mismas para ver si funcionan sobre Tomcat 8.

Se editó justo lo que piden las configuraciones:
  • Asegurarse que la propiedad "use annotations for servlet definition" en web information se habilita (valor "Yes"). Propiedad ubicada en el Generador del ambiente Java correspondiente.

  • Utilizar la propiedad Java Package name y especificar un valor. (Por defecto ya venía configurada)


Y arrancando la app y accediendo al path correspondiente ya se despliega correctamente.

PD: Antes tocó solucionar otro error de clases no encontradas para la libreria gxscanner.jar:

java.lang.ClassNotFoundException: com.genexus.webpanels.GXJarScanner

o

Caused by: java.lang.ClassNotFoundException: com.genexus.webpanels.GXJarScanner

Que se solucionó incorporando la librería correspondiente en la carpeta lib de la aplicación en Tomcat descargada del site oficial de Genexus. Download. Les dejó tambien el acceso al SAC#36031  correspondiente (deben estar registrados en el site de Genexus para su descarga)

miércoles, 27 de noviembre de 2013

Imprimir un string en varias lineas de un reporte PDF

Bueno no se si les haya pasado, pero en mi caso me ocurrió que tenía un string o varchar o como le llamen de un tamaño de 500 caracteres, y que al momento de enviarlo a imprimir a un reporte PDF se salía de los márgenes del mismo y no como uno esperaba que se recorra automáticamente hacia abajo. Así que a buscar la manera de solucionar el inconveniente. (Me olvidaba, aclaro estaba trabajando en ambiente Web para el Generador Java)

Es aquí cuando me enteré de la función GXGetMLi, y en base a un poco de programación se consiguió que se imprima todo el string hacia abajo sin que salga de los márgenes del reporte PDF.

La función GXGetMLi recibe el string, el número de línea y el número de caracteres a imprimir por esa línea y devuelve el resto del string especificado por los parámetros mencionados. Todo esto más un contador y un for y una que otra validación con un if y listo.

For &contadorlinea = 1 to 5
    &lineaImprimir = GXGetMLi(&Descripcion, &contadorlinea, 100)
    if NOT &lineaImprimir.IsEmpty() AND &contadorlinea = 1
        print LineaDescripcion
    else
        if NOT &lineaImprimir.IsEmpty()
            print LineaDescripcion1
        endif
    endif
Endfor

A tomar en consideración:
  1. No es lo mismo imprimir minúsculas que Mayúsculas, por lo que recomiendo tomar en cuenta la impresión como si se lo estuviera haciendo solo con mayúsculas para no llevarse sorpresas cuando el usuario ingrese solo este tipo de caracteres.
  2. Tomar en cuenta el número de caracteres a imprimir, porque puede ser el caso de tener varias descripciones a imprimir y en forma de columna. Por lo que se debe tomar en cuenta el ancho y por ende el número de caracteres que calzarán en ese ancho de columna.
  3. Si se dieron cuenta el número de repeticiones del for por el número de caracteres enviado a la función explicada es igual a 500 que es el tamaño del string.
  4. Y me olvidaba si tienen saltos de línea la función hará los saltos de línea correspondiente así que esto puede alterar el número de líneas a imprimir por lo que al menos yo elimino los saltos de lìnea del string ( para saber cómo eliminar saltos de línea de un string click aquí ).
Nota:

Para .Net me dijeron, pero ustedes pueden comprobarlo, que no hace falta esta codificación sino simplemente configurar en las propiedades de la variable a imprimir en la pestaña de Layout aquella que dice Alignment y colocar MiddleJustify. Si no les funciona ya saben que hacer.