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.
martes, septiembre 14, 2010
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
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
Guia de uso del Shell para principiantes
Tomado de: Guia Shell
SHELL BASH – GUIA DE USO – Nivel Principiante
- Introducción
- II. ¿Qué es el Shell?
- III. Cómo acceder a la línea de comandos
- IV. Las consolas virtuales
- V. Conexión en una consola virtual
- VI. El prompt del shell después de la conexión
- VII. Regresar al modo gráfico desde una consola virtual
- VIII. El entorno shell
- IX. Variables de entorno importantes
- X. Archivos de configuración
- XI. ¿Por qué utilizar la línea de comandos?
- XII. Nociones de comando
- XIII. ¿Dónde se encuentran los comandos?
- XIV. La documentación (las páginas "man")
- XV. La estructura de una página man
- XVI. Algunas reglas para comprender SYNOPSYS y/o OPTIONS
- XVII. Comandos básicos
- XVIII. Ejecución de un comando
- XIX. Cambiar de identidad (cambiar de usuario)
- XX. La raíz
- XXI. Los directorios "." y ".."
- XXII. ¿Dónde estoy? (posición en el árbol de directorios)
- XXIII. La ruta absoluta
- Ejemplo:
- XXIV. La ruta relativa
- XXV. Cómo desplazarse en el árbol de directorios
- XXVI. Historial
- XXVII. El auto-completado de comando
- XXVIII. Edición de archivos (vi,vim)
- XXIX. Los alias
- XXX. Las redirecciones y los pipelines
- XXXI. Los meta-caracteres del Shell
- XXXII. Trucos y Tips
- XXXIII. Midnight Commander (alias mc)
- XXXIV. Error: comando not found
- XXXV. Error: Ningún archivo o directorio de este tipo
- XXXVI. Error: Permiso denegado
- XXXVII. Consejos de redacción
lunes, septiembre 06, 2010
WAR deployment para Tomcat 6.x
Tomado de.: War Deployment para Tomcat 6.x
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Descripción :WAR deployment para Tomcat 6.x |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
[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.
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:
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.
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)
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.
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.
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:
2.- En el Source debe contener lo siguiente:
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.
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);
//--------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------
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
&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.
Suscribirse a:
Entradas (Atom)