lunes, septiembre 06, 2010

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.

No hay comentarios: