martes, septiembre 14, 2010

Instalacion de FONTS en Centos 5.5

Lo que posiblemente pasa es que no has instalado los fonts en Linux, busca en la red algún tutorial, o no has ajustado la configuración en el archivo PDFReport.ini que en si estas en Web lo encontraras en el directorio WEB-INF

Por ejemplo
en win:

[Fonts Location (Sun)]
Verdana= c:\windows\fonts\verdana.ttf
Arial Narrow= c:\windows\fonts\ARIALN.TTF

En linux
[Fonts Location (Sun)]
Verdana= /usr/share/fonts/truetype/windowsfonts/verdana.ttf
Arial Narrow= /usr/share/fonts/truetype/windowsfonts/ARIALN.TTF 


Tambien se puede copiar desde c:\windows\fonts a /usr/share/fonts/windowsfonts/, modificar el archivo PDFREPORT.INI, donde se detalle la ubicacion de los nuevos fonts, de lo contrario al ejecutar en el browser reporta un error que no puede ubicar estos fonts.

lunes, septiembre 13, 2010

Trabajar CSS en GX Ev1 y modificar el Objeto Theme

Tomado de: Modificar Objeto Themes

Es importante que cuando se vaya a crear un TEXTBLOCK para que se consideren link, con la opcion hover y visited debe crearse primero el TAG visited y luego hover, de tal forma que las CSS quede de la siguiente forma:

.cs_enlaces
       A:active{color:#009EDF;}
.cs_enlaces
       A:visited{color:#009EDF;}
.cs_enlaces
       A:hover{color:#F9AB42;}

Mas Informacion sobre HOJAS DE ESTILO

viernes, septiembre 10, 2010

Enviar Correo CON snddst

Tomado de: Correo con SNDDST

Guia de uso del Shell para principiantes

Tomado de: Guia Shell

SHELL BASH – GUIA DE USO – Nivel Principiante

lunes, septiembre 06, 2010

WAR deployment para Tomcat 6.x

Tomado de.:  War Deployment para Tomcat 6.x


SAC  #
21759
Tipo :
Feature
04/01/2007 IMPRIMIR Consultar a Soporte sobre este SAC
Descripción :WAR deployment para Tomcat 6.x
Abstract
Se agregó un type descriptor para la versión 6.x de Tomcat al momento de armar un WAR.
Descripción Detallada
  • Hasta ahora, era necesario seleccionar la opcion ‘Generic Servlet 2.4′ del combo para que funcione bien en Tomcat 6. Según la documetación es la servlet spec. es 2.5, de todas maneras seleccionando la opción ‘generic servlet 2.4′ en el wizard, el armado y despliegue de este WAR en el Tomcat 6.x funciona. 
  • A partir del U4 de la Version X , se agregó la opción ‘Tomcat 6.x’ al combo del war deployment wizard. NOTA: Si se seleccionaba Tomcat 5.x, al instalar el WAR en un Tomcat 6, se presentará un error de este tipo: “java.lang.SecurityException: El Servlet de clase org.apache.catalina.servlets.InvokerServlet es privilegiado y no puede ser cargado mediante esta aplicación web”.
  •  Según la documentación de Tomcat en la versión 6 el invoker fue deshabilitado por temas de seguridad. Esto es pensando en ambientes de producción en los cuales es riesgoso usar el invoker. Para ambientes de desarrollo para poder utilizar el invoker se tiene que modificar el archivo context.xml (en <dir_tomcat>/conf/) agregando al comienzo el tag <Context privileged=”true”>.
  • Links:
    • http://tomcat.apache.org/faq/misc.html#invoker
    • http://www.nabble.com/tomcat-6—invoker-servlet–t3978310.html
    • En resumen, por el momento para poder hacer un WAR deployment para Tomcat 6.x puede optarse por:
      • 1) Elegir como type descriptor ‘Generic Servlet 2.4′ al hacer el WAR (recomendable para Producción)
      • 2) Modificar el archivo context.xml (en <dir_tomcat>/conf/) agregando al comienzo el tag <Context privileged=”true”>. (recomendable para Prototipo).
   
 
 
 
 
SAC Relacionados  Text Block
SAC Descripción
23638 Deployment en JBoss con Tomcat 6
Información de Productos Asociados
Producto Reportado en Versión Estimada corr. en versión Liberado en versión Suscribirse al SAC
Gen. JAVA 90 upg: 0
Producto Reportado en Versión Estimada corr. en versión Liberado en versión Suscribirse al SAC
Gen. JAVA X upg: 3 X upg: 4
X upg: 4

[SQL0227] FETCH no válida, cursor CRSR0001 en posición desconocida.

Problemas con Bloqueo de Registros.

Cuando se esta consultando un registro da este error porque internamente en el ISERIES existe un trabajo que esta bloqueando el registro para poder leerlo, revisar con el comando WRKACTJOB  y ver que trabajo tiene un MSGW, que indica que esta esperando un mensaje, no se supera el problema hasta cuando se conteste este mensaje.

Problemas con el SBMJOB en el ISERIES V6R1

Se registraba un problema cuando desde un procedimiento del ISERIES creado con GX, enviaba al BATCH CON EL COMANDO SBMJOB de la siguiente manera.

  submit(PREVCOR, 'JOB(&xTrabajo) JOBD(RECAUDAP/RECAUDAJD)', &qFacturaNumo)   

En el Iseries reportaba en el JOBLOG el Siguiente error:

Trabajo :   QZDASOINIT    Usuario  :   QUSER         Número . . . :   383644
     Trabajo 383644/QUSER/QZDASOINIT arrancado el 06/09/10 a las 10:44:31 en el
       subsistema QUSRWRK en QSYS. Trabajo introducido en el sistema el
       06/09/10 a las 10:44:31.
     ACGDTA para 383644/QUSER/QZDASOINIT no registrado por diario; código de
       razón 1.
     ACGDTA para 383644/QUSER/QZDASOINIT no registrado por diario; código de
       razón 1.
     El usuario RECAUDADOR del cliente 192.168.204.24 está conectado a un
       servidor.
     Biblioteca QTEMP duplicada en la lista.
     Biblioteca XXX no encontrada.
     Biblioteca GX añadida a la lista de bibliotecas.
     Biblioteca RECAUDA añadida a la lista de bibliotecas.
     Biblioteca RECAUDAP añadida a la lista de bibliotecas.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Se ha duplicado la biblioteca QTEMP.
     Errores producidos en el mandato SBMJOB.
     Error de función. CPF1338 no supervisado por PWNVCOR en la sentencia 500,
       instrucción X'000F'.
     PENVCOR ha recibido CPF1338 en la sentencia 500. (C D I R)

Como se puede notar existe un mensaje de error ESCAPE que indica que la biblioteca QTEMP esta duplicada, esto en las versiones anteriores del ISERIES no reportaba ningun error, para ello tuvimos que MODIFICAR EL JOBD eliminando de la lista de bibliotecas la BIBLIOTECA QTEMP.
Con esto se supero el PROBLEMA. 

Ahora tenemos el JOBLOG de la siguiente manera, donde se indica que se pudo superar el problema.


Trabajo :   QZDASOINIT    Usuario  :   QUSER         Número . . . :   384601
     Trabajo 384601/QUSER/QZDASOINIT arrancado el 06/09/10 a las 11:03:53 en el
       subsistema QUSRWRK en QSYS. Trabajo introducido en el sistema el        06/09/10 a las 11:03:53.
     ACGDTA para 384601/QUSER/QZDASOINIT no registrado por diario; código de        razón 1.
     El usuario RECAUDADOR del cliente 192.168.204.24 está conectado a un        servidor.
     Biblioteca XXX no encontrada.
     La biblioteca GX ya existe en la lista de bibliotecas.
     La biblioteca RECAUDA ya existe en la lista de bibliotecas.
     La biblioteca RECAUDAP ya existe en la lista de bibliotecas.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Control de compromiso ya activo.
     Trabajo 384657/RECAUDADOR/PREVCOR sometido a la cola de trabajos QBATCH en la biblioteca QGPL.
     Control de compromiso ya activo.
     Archivo FR2Y803 alterado temporalmente.
     Miembro WS09 del archivo WS09 en RECAUDA abierto.
     Se han ignorado las opciones de apertura para la apertura compartida del miembro WS09.
     Miembro WS09 del archivo WS09 en RECAUDA cerrado.
     Archivo FR2Y802 alterado temporalmente.
     Miembro WS09 del archivo WS09 en RECAUDA abierto.
     Se han ignorado las opciones de apertura para la apertura compartida del miembro WS09.
     Miembro WS09 del archivo WS09 en RECAUDA cerrado.
     Control de compromiso ya activo.

El mensaje en ROJO nos indica que se realizo exitozamente el SBMJOB, sin errores como mencionaba en el texto anterior.
Lo extraño del tema es que en la V5R4 , no reportaba ningun error, empezo a dar este error solo en la V6R1.


Aplicacion GX9 con Before Connect en ISERIES

Se requiere que exista una conexion de usuario al ISERIES, debidamente autentifcado, anteriormente se tomaba los datos del DBMS OPTIONS para realizar la conexion, esto evidenciaba un problema ya que inicialmente hacia login con este usuario, pero como se requeria que se haga Login con los datos que venian de la peticion de un servicio web, entonces siempre se hacia dos conexiones y complicaba el seguimiento de los trabajos en el ISERIES.

Para ello se implemento en modelo la PROPIEDAD BEFORE CONNECT.

Se debe tener en cuenta las siguientes indicaciones.

1.- Crear un Procedimiento, No Main Program.
En las Reglas debe tener lo siguiente:

//Parametros
//--------------------------------------------------------------------------------------
Parm(InOut:&Conexion);
//--------------------------------------------------------------------------------------


2.- En el Source debe contener lo siguiente:


&UsuCod    = &tSesion.Get('USUARIO')
&UsuCla    = &tSesion.Get('CLAVE')
&BaseDatos = &tSesion.Get('BASE-DATOS')
&Servidor  = &tSesion.Get('SERVIDOR')

&Url = 'jdbc:as400://' + TRIM(&Servidor) + '/' + Trim(&BaseDatos)

&Conexion                   = GetDataStore("Default")
&Conexion.Disconnect()
&Conexion                   = GetDataStore("Default")
&Conexion.UserName          = trim(&UsuCod)
&Conexion.UserPassword      = trim(&UsuCla)

&Conexion.JDBCDriverName    = 'com.ibm.as400.access.AS400JDBCDriver'
&Conexion.JDBCDriverURL     = &Url

&Conexion.ShowPrompt        = 1
&Ret                        = &Conexion.Connect()
Return


3.- En Objeto que Principal debe contener lo siguiente:
Para WebPanels en el Event Start, para Procedimientos en el Source, esto permitira compilar cada vez que se modifique el Objeto principal junto con el Objeto que hace la conexion.

&tSesion.Set('USUARIO', 'QSYSOPR')
&tSesion.Set('CLAVE'  , 'OPERADOR')
&tSesion.Set('BASE-DATOS', 'QGPL')
&tSesion.Set('SERVIDOR' , '192.168.209.10')

If 1 = 3
   Call(PCONECTAR ,&Conexion) // Parámetro Tipo de Dato DB Conecction
EndIf






4.- En las propiedades del Modelo debe ubicar lo siguiente como nos indica la imagen:

Asumiendo que el Objeto se llamase WS85C.
De esa manera cada vez que se requiere hacer una conexion invocar al PROCEDIMIENTO PWS85C con los datos del websesion.

Esto funciona con el Generador Web de Java en la version GX 9.