Está en la página 1de 26

Desarrollo Web con EAServer, PowerBuilder y JSP

Primeros Pasos
Autor: Rahul Jain
(Email: rahul.jain@cynergysystems.com)

Propsito: Este artculo le guiar en la configuracin del EAServer y llevar su


primer datawindow a la web.
Audiencia: Se asume que el lector esta familiarizado con la terminologa de
desarrollo (HTML, JavaScript, servidor, cliente, etc) y es un programador con
experiencia en PowerBuilder. Experiencia en Java no es requerida, pero
conocimientos bsicos sern de ayuda.

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

INDICE

DESCARGA E INSTALACION DEL EASERVER ......................................................................................3


DESCARGANDO EAS ERVER ...............................................................................................................................3
INSTALANDO EAS ERVER ...................................................................................................................................3
CONFIGURANDO EASERVER ..............................................................................................................................3
Arrancando el Servidor y revisando la instalacin.....................................................................................3
Arrancando el Jaguar Manager ...................................................................................................................4
Configuracin del Cache de conexin..........................................................................................................4
Creando una aplicacin Web........................................................................................................................6
Archivos Fsicos y carpetas del EAServer ...................................................................................................6
DESARROLLAR EL COMPONENTE PARA LLEVAR EL DATAWINDOW AL NAVEGADOR .8
CREAR DATAWINDOW ......................................................................................................................................8
CREAR NVO .......................................................................................................................................................9
PUBLICAR NVO EN JAGUAR ............................................................................................................................14
GENERAR S TUBS PARA EL COMPONENTE .........................................................................................................21
CREAR EL JSP PARA INVOCAR EL MTODO DEL COMPONENTE NVO...........................................................22
MOSTRAR EL DATAWINDOW EN EL NAVEGADOR...........................................................................................25

Page 2 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

Descarga e Instalacin de EAServer


Descargando EAServer
La ltima versin del EAServer Developer Edition puede ser descargada del website
de Sybase. La versin mas actualizada del EAServer es la 4.2 (a la fecha de
redaccin del artculo Marzo 31, 2003), la cual puede ser descargada desde:
http://www.sybase.com/easerver4dev
(Deber suscribirse a SDN gratis).
Sybase:
Sybase EAServer Developer Edition es de gratis descarga, no es una versin de
evaluacin que expirar. sela tanto como guste para el desarrollo de aplicaciones, y
adquiera una licencia deployment edition cuando la aplicacin este lista para su
implantacin.

Instalando EAServer
Luego de descargar EAServer (el cual probablemente sea un archivo comprimido),
doble click en setup.exe para instalar EAServer.
Notas para
usuarios de
Windows XP

v Instale Sun Java VM antes de instalar EAServer. Puede encontrar


la ltima versin de Sun JRE en http://java.sun.com.
v Instalar con compatibilidad para Windows 2000.
v Instalar desde el CD puede ser un problema. Tendr que copiar el
instalador en su equipo y luego instalarlo. Si descargo el
instalador, entonces probablemente es mejor instalarlo
directamente desde su disco duro, en lugar de quemar un CD y
luego instalarlo.

Configurando EAServer
Arrancando el Servidor y revisando la instalacin
Despus de instalar el EAServer, puede querer revisar si el servidor trabaja
correctamente. Inicie el Servidor Jaguar (Inicio | Programas | Sybase | EAServer |
Jaguar Server). Luego la ventana de consola mostrar el mensaje: Aceptando
conexiones. (Ver imagen a continuacin), podr probar desde su navegador y
verificar.

Page 3 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

Digite esta URL en la barra de direcciones de su navegador (reemplace SuMaquina


con el nombre de su equipo):
http://SuMaquina:8080/
Si se despliega la pgina inicial de Jaguar en el navegador significa que su instalacin
fue exitosa. Si no se despliega la pgina inicial, verifique el nombre de su equipo.

Arrancando el Jaguar Manager


El icono del Jaguar Manager puede ser encontrado en Inicio | Programas | Sybase |
EAServer | Jaguar Manager. Para establecer una conexin con el Servidor Jaguar
desde el Jaguar Manager, debe estar ejecutndose el Servidor Jaguar. Mire el paso
arrancando el servidor Jaguar en la seccin como arrancar el servidor.
Luego de arrancar el Jaguar Manager, necesita conectarlo al servidor. Para hacerlo,
en el Jaguar Manager seleccione en el men Tools | Connect | Jaguar Manager. Esto
abrir la ventana de Login. Ingrese la siguiente informacin en esta ventana y de
click en el botn Connect.
Nombre de Usuario:
Contrasea:
Host:
Puerto:

Jagadmin
Dejar en blanco.
SuMaquina
9000

Configuracin del Cache de Conexin


Para configurar el cache de conexin, arranque el Jaguar Manager y establezca la
conexin con el Servidor Jaguar. En la raz del rbol del Jaguar Manager, ah
encontrar un tem llamado Connection Caches (ver imagen inferior). Al hacer click

Page 4 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

en este tem se le mostrar todos los caches de conexin disponibles para el Servidor
Jaguar en el panel derecho.

Busque el cache de conexin llamado EASDemo. Este cache esta conectado a la


base de datos EAS Demo DB v4 que se instala de manera predeterminada en su
equipo cuando instala PB, a menos que haya seleccionado no instalarla.
De click derecho en EASDemo y seleccione Ping. Usted debera recibir este
mensaje:

Si no recibe este mensaje, revise el nombre del DSN ODBC en el perfil del cache de
conexin. Si el nombre es correcto revise el nombre de base de datos y la ubicacin
del archivo.
Tip:

Nuevamente el newsgroup de Sybase puede ser de ayuda si encuentra


dificultades.

Page 5 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

Creando una Aplicacin Web


Ahora procederemos a crear una aplicacin web en Jaguar. Para esto, damos click
derecho en el tem Web Applications en el rbol del Jaguar Manager (ver imagen a
continuacin). Seleccione New Web Application en el men emergente. Al hacer
esto, se desplegar una ventana preguntando por el nombre de la aplicacin web.

Para este tutorial, usaremos el nombre sample.

Nota:

El nombre de la aplicacin web es sensible a maysculas y minsculas.

Presione OK en la ventana de creacin de la aplicacin Web. A continuacin se


desplegar la ventana de detalles de la aplicacin web. No hay nada especial que
configurar para esta aplicacin web, as que solamente presione OK en esta ventana.
Ahora encontrar un nuevo tem en el panel derecho sample. Este es nuestra
nueva aplicacin web. Aunque esta aplicacin web ha sido creada, nuestro servidor
no la conoce todava. Para informarle al servidor de la nueva aplicacin web, es
necesario instalar la aplicacin web en el servidor. Expanda Servers | Jaguar en el
Jaguar Manager. De click derecho en Installed Web Applications y seleccione
Install Web Application. Esto mostrar una ventana con 2 botones. Presione Install
and existing web application. En la ventana que se muestra, se encuentra la
aplicacin web sample, seleccinela y presione OK. El Jaguar Manager le pedir
actualizar el Jaguar Server, presione Yes. Su aplicacin web esta lista para atender
peticiones.
Archivos Fsicos y Carpetas del EAServer
En el ejercicio anterior al crear la aplicacin web, se crean algunas carpetas y
archivos en su disco. Ahora daremos un vistazo a esos archivos y carpetas fsicos.
Abra el explorador de Windows. Vaya a la carpeta de instalacin del EAServer (la
cual por defecto es C:\Program Files\Sybase\EAServer a menos que la haya
cambiado durante la instalacin).
Revisaremos las carpetas mas importantes bajo EAServer.
\bin: Los archivos de inters en esta carpeta son:
serverstart.bat
jagmgr.bat
Jaguar.log

Arranca el servidor
Arranca el Jaguar Manager
Este es el archivo de log mas importante. Este es el
archivo que usaremos para registrar los mensajes de log
desde nuestro PB NVO o componentes de Java.

Page 6 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

Jaguarhttpservlet.log

Jaguarhttperror.log
Jaguarhttprequest.log

Este es el segundo archivo importante de log. Este


archivo registra las peticiones al servlet HTTP. Si existe
un error al compilar un JSP/ servlet, el mensaje en
detalle se registrar aqu.
Este archivo de log registra los errores de HTTP, como la
peticin de un archivo HTML inexistente.
Este archivo registra la informacin de log de las
peticiones HTTP de cada peticin.

\html: Esta carpeta tiene acceso publico desde su servidor web. Sea cuidadoso
con el contenido que se coloca en esta carpeta. Puede usar esta carpeta para
guardar archivos JavaScript comunes y archivos HTML comunes. Puede notar que la
pgina de inicio de Jaguar index.html tambin esta en esta carpeta.
Jaguar usa esta carpeta para guardar los stubs para los componentes.
\java: Esta carpeta debera ser usada para guardar sus clases de Java. No use la
carpeta HTML de la que hablamos antes para guardar los archivos Java, esta es la
carpeta correcta.
Jaguar usa esta carpeta para guardar la estructura de sus componentes.
Nota: Los componentes de PB no necesitan estructuras.
\Repository\Component\: Jaguar almacena todos sus archivos de components
en esta carpeta con versiones. Los componentes en esta carpeta son almacenados
por paquete. Hablando especficamente acerca de los componentes de PB, cada NVO
recibe su propia carpeta con el mismo nombre del NVO. Dentro de la carpeta del
NVO, Jaguar crea carpetas separadas con versiones del NVO. La primera vez que
implementa un NVO llamado n_sample en el paquete pkg_sample, tendr una
jerarqua de carpetas como esta:
Repository
n Component
n pkg_sample
n n_sample
n c1
File: sample.PBD
La carpeta c1 es el nmero de versin. La siguiente vez que implemente n_sample,
encontrar 2 carpetas c1 y c2. Puede borrar de manera segura c1.
Si encuentra una carpeta llamada SurfSideVideoPB, expandala. EAServer instala
este paquete por defecto como un ejemplo. Busque los 3 componentes que este
contiene y encontrar una jerarqua de carpetas similar a la que se habl
anteriormente.
\Repository\WebApplication\: Esta es la carpeta donde Jaguar guarda todas
las aplicaciones web. Si se cre exitosamente la aplicacin web sample como se
indic, debe ver una carpeta llamada sample bajo esta carpeta. Puede colocar
manualmente los archivos en esta carpeta e inmediatamente estarn accesibles a
travs de su aplicacin web. Probemos esto.
Cree un archivo HTML simple (simple.htm) y guardelo en la carpeta de la aplicacin
web sample. Ahora digite esta url desde su navegador:

Page 7 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

http://SuMaquina:8080/sample/simple.htm
Debe ver su pgina en el navegador. De lo contrario, reinicie su servidor. Esto
tambin verifica que nuestra aplicacin web esta trabajando apropiadamente.
Esta es la carpeta a la que estar ingresando la mayora del tiempo durante el
desarrollo de sus pginas web (JSP, html, etc.). Si esta usando PowerJ, no es
sugerido que cambie los archivos directamente en esta carpeta porque no hay
manera, AFAIK, de sincronizar de vuelta los cambios en el repositorio de PowerJ.
Para nuestro ejemplo, no debo usar PowerJ. Personalmente me agrada TextPad, pero
puede usar cualquier editor de texto de su preferencia.

Desarrollar el componente para llevar el DataWindow al


Navegador
En esta seccin aprenderemos a desarrollar un componente que recuperar los datos
en un datastore y generara HTML para los datos recuperados y lo enviar de vuelta
al servidor. Pasos:
1. Crear datawindow.
2. Crer NVO para conectarse a la base de datos, recuperar datos, generar HTML y
enviar el HTML de vuelta al JSP.
3. Publicar el NVO al Jaguar.
4. Generar Stubs para el componente.
5. Crear JSP para invocar al mtodo del componente del NVO.
6. Mostrar el datawindow en el navegador.

Crear DataWindow
Vamos a crear un datawindow de la tabla employee. Crear un datawindow de estilo
tabular de la tabla employee y guardarlo como d_employee.
Nota:

Recuerde que estamos usando el cache de conexin EASDemo entonces es


necesario que usemos la base de datos EAS Demo DB para el desarrollo de
nuestros objetos de PB. Si desea usar otra base de datos asegrese de usar
el cache de conexin correspondiente.

Propiedades importantes del DataWindow a tener en cuenta:


1. La casilla de seleccin HTML Datawindow en la pestaa General. Debe estar
activada.
2. Las 6 casillas de seleccin en la pestaa HTML Generation (Generate
JavaScript, Client Events, Client Validations, Client Computed Fields,
Client Formatting, Client Scriptable). Deben estar activadas.
3. La propiedad Object Name en la pestaa HTML Generation. Ponga el nombre
htmldw. Este es el nombre del objeto datawindow del cliente (JavaScript
datawindow control).
4. Self Link debe estar con la URL de la pgina actual. Esta vez no tenemos que
construir JSP, pero todava podemos escribir el nombre aqu. Nombraremos
nuestro JSP Sample.jsp.

Page 8 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

Crear NVO
Usaremos el asistente de componentes del EAServer para crear el componente. Click
File | New en PowerBuilder. Vaya a la pestaa PB Object y de doble click en el
icono EAServer Component Wizard. Siga las instrucciones en el asistente y guarde
el NVO como n_sample.
Una vez que haya concluido con el asistente y haya guardado el NVO, esta listo para
la codificacin. Por si todava no lo nota este componente NVO-Jaguar es casi igual
que un PB NVO. La nica diferencia que encontrar es el nmero de eventos. Este
NVO tiene 2 eventos mas: activate y deactivate. Estos eventos se disparan cuando el
componente es activado (trado del pool/ construido) y cuando el componente se
desactiva (enviado de vuelta al pool/ destruido). Para mas informacin sobre el tema
consulte la ayuda de PB.
Existen algunas restricciones en cuanto a lo que pueden y no pueden aceptar los
mtodos del componente de PB. Puesto que este NVO va a ser implementado en el
EAServer, es obvio que debe hablar el lenguaje del EAServer, el cual es CORBA.
Entonces, su NVO solo podr aceptar argumentos y retornar valores que CORBA
comprenda. No podr pasar un datastore a un mtodo pblico el datastore es una
clase de PB.
Los Tipos de datos autorizados como argumentos son:
v
v
v
v

Tipos de dato estndar ( a excepcin de any)


Estructuras
Arreglos de Estructuras
Componentes Jaguar (referencia al objeto proxy)

Valores de retorno de mtodos vlidos:


v
v
v
v

(None)
Tipos de dato estndar ( a excepcin de any)
Estructuras
Componentes Jaguar (referencia al objeto proxy)

Existen algunas otras restricciones que no se describen. Si desea mas informacin


revise los manuales de PB.
OK, ahora escribamos algo de cdigo. Necesitamos un mtodo que establezca la
conexin, recupere informacin, genere HTML y lo enve de vuelta. Llamemos al
mtodo getHTML. Definicin del mtodo:

String getHTML (arg_browser, arg_action, arg_context)

No se preocupe ahora por los argumentos, su propsito ser explicado mas tarde.
Lo primero que haremos desde el mtodo es registrar la invocacin del mtodo. Esto
no es necesario, pero es una buena tcnica para seguir luego la ejecucin del
programa. Tambin le dar una mejor comprensin de como registrar mensajes en
el archivo de log del Jaguar.

Page 9 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

errorlogging

lerr_log

// to log errors in the Jaguar log

// Get the context of error logging object.


ll_rc = GetContextService("ErrorLogging", lerr_log)
IF ll_rc < 0 THEN
RETURN "Error in getting context of ErrorLogging."
END IF
// Just for debug purpose
lerr_log.Log ("----- Start of getHTML method -------")

Establezcamos la conexin a la base de datos. Este es el mismo cdigo que se usara


para conectarse a la base de datos en una aplicacin cliente-servidor de PB. La nica
diferencia aqu es el DBParm. Este usa el cache de conexin en lugar del usuario y
contrasea y el nombre del DSN.

Transaction

lt_demo

// to connect to the database

// Connect to database
lt_demo = CREATE Transaction
lt_demo.DBMS = "ODBC"
lt_demo.DBParm = "UseContextObject='Yes',CacheName='EASDemo'"
CONNECT USING lt_demo;
IF lt_demo.SQLCode <> 0 THEN
lerr_log.log( METHOD_NAME + &
"Error connecting
connection cache")
END IF

to

databse

using

EASDemo

Estamos listos para la recuperacin de datos. Creemos un datastore y traigamos los


datos. Nuevamente, no hay diferencia con lo que se hace en una aplicacin de PB en
Windows.
datastore
long

lds_working // to create datawindow


ll_rc
// Return code

// Create our datastore


lds_working = create datastore
lds_working.dataobject = "d_employee"
lds_working.SetTransObject( lt_demo )
// Retrieve
ll_rc = lds_working.Retrieve()
IF ll_rc = 0 THEN
lerr_log.log( METHOD_NAME + "No row retrieved.")
ELSEIF ll_rc < 0 THEN
lerr_log.log( METHOD_NAME + &
"Error in retrieving rows from database.")
END IF

Page 10 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

Ahora tenemos los datos. Necesitamos preparar nuestro datawindow antes de que
generemos el HTML.

// Tell datawindow about the browser in use


lds_working.object.datawindow.htmlgen.browser = arg_browser
// Apply action and context if requested
IF len( arg_action ) > 0 THEN
ll_rc = lds_working.SetHTMLAction( arg_action, arg_context )
IF ll_rc < 0 THEN
lerr_log.log( METHOD_NAME + &
"Error
in
SetHTMLAction.
String(ll_rc))
END IF
END IF

Error

Code

"

Acerca de la generacin del HTML: Para que un datawindow sea capaz de generar
HTML correctamente, necesita conocer algo del cliente. Quin es el? el DataWindow
genera diferente HTML para IE y para NS. Esto es exactamente lo que el primer
argumento le dice al mtodo.
El Segundo argumento es la accin requerida por el usuario al datawindow. Esto nos
dice que es lo que quiere hacer con el datawindow, por ejemplo Actualizar, Eliminar
Fila, Insertar Fila, Ordenar, Filtrar, etc. Cuando se hace la peticin de la pgina por
primera vez no se realiza ninguna accin. Esa es la razn por la que no invocamos el
mtodo SetHTMLAction si no hay una accin.
El tercer argumento lleva los cambios hechos a los datos en el navegador que
pueden ser aplicados al datawindow en el componente.
Ahora el bebe DW esta listo para entregar el HTML. Solamente una lnea de cdigo
nos dar el HTML que el navegador al otro lado comprender.

// Generate HTML
ls_dwhtml = lds_working.object.datawindow.data.html

Finalmente, limpia y retorna el HTML.

DISCONNECT USING lt_demo ;


lerr_log.Log ( METHOD_NAME + "----- End of getHTML method -------")
Return ls_dwhtml

Page 11 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

Eso es todo. Es todo el cdigo que necesitamos para generar HTMLDW. Veamos el
cdigo completo.
/////////////////////////////////////////////////////////////////
//
Description:
//
Apply action to the datawindow
//
Generate Datawindow HTML
//
Return HTML
//
Arguments (name - explanation):
//
arg_browser
- Browser type passed from the client
//
arg_action
- Action to be applied on datawindow
//
arg_context
- Context of datawindow to be applied on
datawindow
//
Returns:
//
String
- HTML generated
////////////////////////////////////////////////////////////////
// Rahul Jain
// March 27 2002
////////////////////////////////////////////////////////////////
constant string METHOD_NAME = "getHTML "
// Local Variables
transaction
lt_demo
datastore
lds_working
string
ls_dwhtml
errorlogging lerr_log
long

// to connect to the database


// to create datawindow
// to hold datawindow HTML
// to log errors in the Jaguar log
ll_rc
// Return code

// Get the context of error logging object.


// Note:
We do not "create", errorLogging object, instead we get reference
//
from context
ll_rc = GetContextService("ErrorLogging", lerr_log)
IF ll_rc < 0 THEN
RETURN "Error in getting context of ErrorLogging."
END IF
// Just for debug purpose
lerr_log.Log ( METHOD_NAME + "----- Start of getHTML method -------")
lerr_log.Log ( METHOD_NAME + "arg_browser=" + arg_browser)
lerr_log.Log ( METHOD_NAME + "arg_action=" + arg_action)
lerr_log.Log ( METHOD_NAME + "arg_context=" + arg_context)
// Just for debug purpose
// Connect to database
lt_demo = CREATE Transaction
lt_demo.DBMS = "ODBC"
lt_demo.DBParm = "UseContextObject='Yes',CacheName='EASDemo'"
CONNECT USING lt_demo ;
IF lt_demo.SQLCode <> 0 THEN
lerr_log.log( METHOD_NAME + "Error connecting to databse using EASDemo
connection cache")

Page 12 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

END IF
// Create our datastore
lds_working = create datastore
lds_working.dataobject = "d_employee"
lds_working.SetTransObject( lt_demo )
// Retrieve
ll_rc = lds_working.Retrieve()
IF ll_rc = 0 THEN
lerr_log.log( METHOD_NAME + "No row retrieved.")
ELSEIF ll_rc < 0 THEN
lerr_log.log( METHOD_NAME + "Error in retrieving rows from database.")
END IF
// Tell datawindow about the browser in use
lds_working.object.datawindow.htmlgen.browser = arg_browser
// Apply action and context if requested
If len( arg_action ) > 0 Then
lerr_log.log( METHOD_NAME + "Just before setHTMLAction")
ll_rc = lds_working.SetHTMLAction( arg_action, arg_context )
lerr_log.log( METHOD_NAME + "Just after setHTMLAction")
IF ll_rc < 0 THEN
lerr_log.log( METHOD_NAME + "Error in SetHTMLAction. Error Code =
" + String(ll_rc))
END IF
End If
// Generate HTML
ls_dwhtml = lds_working.object.datawindow.data.html
disconnect using lt_demo ;
lerr_log.Log ( METHOD_NAME + "----- End of getHTML method -------")
Return ls_dwhtml

Bueno, parte del cdigo puede ser reubicada a lugares mas apropiados, como el
comando disconnect puede ser (debera?) movido al evento deactivate. Esto es
porque cuando se desconecta, de destruye el componente. Si no se desconecta en el
mtodo, Jaguar enviar el componente de vuelta al pool (asumiendo que esta
activada la opcin Instance Pooling) y entonces cuando la instancia se agote, se
destruir automticamente. Para mas informacin sobre instance pooling, revisar la
ayuda de EAS.

Page 13 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

Publicar NVO en Jaguar


Antes de publicar el componente, se debe configurar un perfil de EAServer. Para
esto, seleccionar Tools | EAServer Profile del men y configure un perfil de Jaguar
para su servidor.
Ahora, publiquemos el componente. Seleccione File | New del men. Vaya a la
pestaa Project y de doble click en EAServer Component Wizard. Observe los
pasos siguientes en las figuras a continuacin.

Page 14 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

Seleccione la librera en donde el objeto project debe almacenarse.

Page 15 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

Indique un nombre para el objeto project.

Seleccione el NVO que necesitamos publicar en la lista, en este caso n_sample.

Page 16 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

Esta lista le mostrar todas las configuraciones de los perfiles de EAServer. Debe
configurar un perfil de EAServer antes de crear un proyecto.

La lista de paquetes contiene los paquetes actuales en el servidor Jaguar.


Obviamente el paquete sample no estar disponible. Tiene que digitar sample en el
campo.

Page 17 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

Lea mas acerca de los tipos de componentes en la ayuda.

Esta opcin har que nuestro componente vaya al pool si no lo desconectamos de la


base de datos o si es que no ejecutamos los comandos COMMIT o ROLLBACK.

Page 18 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

Esta es una opcin importante. Auto Demarcation/ Deactivation har que nuestro
componente se quede sin un estado definido. Para leer mas acerca de los estados
revise las ayudas de PB-EAS o pregntenos J.

Page 19 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

Recuerde activar la tercera casilla de verificacin Include unreferenced objects.

El proceso del asistente crear un proyecto. Solamente ejecute el proyecto y este


publicar el componente en el Servidor Jaguar. Debe tener el Servidor Jaguar en
ejecucin antes de ejecutar el proyecto.

Page 20 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

Generar Stubs para el componente

Para ser capaz de invocar al componente de PB desde Java/ JSP, necesitamos crear
stubs para el componente. Para hacer esto, abra el Jaguar Manager y conctese al
servidor. De click en el item Package del rbol. En el panel derecho, estar el

Page 21 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

paquete sample, de click sobre el. Seleccione File | Generate Stubs and Skeletons
en el men. Seleccione las opciones que se muestran en la figura.
No se debe digitar nada en esta pantalla. Solamente active las casillas apropiadas y
presione Generate. Luego de esto, de click derecho en Jaguar bajo el tem
servers del rbol y seleccione Refresh.
Eso es todo. Nuestro componente de PB componente esta listo para ser invocado
desde Java/ JSP.

Crear el JSP para invocar el mtodo del componente NVO


Muy Bien! Esta es la parte interesante donde la mayora de nosotros nos trabamos.
Antes de avanzar, por favor copie un archivo de la fuente adjunta con este tutorial.
Archivo: CompWrapper.class
Destino de la copia: %EAServer%\java\classes\com\rahul\utility\
v Donde %EAServer% es el directorio de instalacin de EAServer.
v Tiene que crear las carpetas: rahul y utility.
Una vez que la clase esta en el lugar indicado, reinicie/ actualice el Servidor Jaguar.
Ahora estamos listos para crear JSP. Queremos que nuestro JSP invoque al mtodo
getHTML en el NVO y retorne el HTML resultante de vuelta al navegador. Si fuera
una aplicacin de PB se necesitara un cdigo como este:

n_sample lnv_sample
lnv_sample = CREATE n_sample
lnv_sample.GetHTML(, , )

El proceso en caso de invocar el NVO desde JSP, aunque luce similar involucra mas
cdigo que solamente la creacin de una instancia del NVO. Para simplicidad del
tutorial, omitir los detalles del cdigo que va en la clase CompWrapper. Si desea
puede revisar la fuente CompWrapper.java y ver la ayuda de EAServer:
http://sybooks.sybase.com/onlinebooks/groupeag/eag0420e/jagpg/@Generic__BookView
(Part 3, chapter 12, topic: Instantiating proxy instances)
De esta manera es como se referencia el componente en JSP:

sample.n_sample
lnv_sample
=
sample.n_sampleHelper.narrow
com.rahul.utility.CompWrapper.getComponent ( "sample/n_sample" ) );

Page 22 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

En donde:
sample
n_sample
n_sampleHelper
lnv_sample
Nota:

Paquete
NVO
Stub
Variable

El nombre de la clase auxiliar es siempre NVONameHelper.

Para sus componentes, tendr que cambiar el nombre del paquete, nombre de NVO
y nombre de la clase auxiliar.
La clase CompWrapper tiene un mtodo llamado getComponent, el cual obtiene la
referencia del componente. Una vez que tenemos la referencia del componente,
podemos invocar al mtodo del componente tal como invocamos el mtodo de
cualquier otro objeto.

String
String
String

ls_action ;
ls_context ;
ls_browser ;

ls_action = (String)request.getParameter( "htmldw_action" ) ;


if ( ls_action == null )
{
ls_action = "" ;
}
ls_context = (String)request.getParameter( "htmldw_context" ) ;
if ( ls_context == null )
{
ls_context = "" ;
}
ls_browser
= (String)request.getHeader( "User-Agent" );
if ( ls_browser == null )
{
ls_browser = "" ;
}
String ls_html = lnv_sample.gethtml(ls_browser, ls_action, ls_context);

Los parmetros htmldw_action y htmldw_context son generados por el datawindow.


Nosotros dimos la palabra htmldw recuerda la propiedad Object Name en el
datawindow?
A continuacin, solamente necesitamos escribir este HTML en el navegador.

<%=ls_html%>

Page 23 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

El listado del cdigo final:

<%@ page autoFlush="true" %>


<%
// TO AVOID CACHING
response.setDateHeader("Expires", 0);
response.setHeader("Cache-Control", "no-cache");
response.addHeader("Cache-Control", "no-store");
response.addHeader("Cache-Control", "max-age=1");
response.addHeader("Cache-Control", "must-revalidate");
response.setHeader("Pragma", "no-cache");

String
String
String

ls_action ;
ls_context ;
ls_browser ;

ls_action = (String)request.getParameter( "htmldw_action" ) ;


if ( ls_action == null )
{
ls_action = "" ;
}
ls_context = (String)request.getParameter( " htmldw_context" ) ;
if ( ls_context == null )
{
ls_context = "" ;
}
ls_browser
= (String)request.getHeader( "User-Agent" );
if ( ls_browser == null )
{
ls_browser = "" ;
}

sample.n_sample
lnv_sample
=
sample.n_sampleHelper.narrow
(
com.rahul.utility.CompWrapper.getComponent ( "sample/n_sample" ) );
String ls_html = lnv_sample.gethtml ( ls_browser, ls_action,
ls_context );
%>
<html>
<head>
<title>EMPLOYEE SAMPLE</title>
</head>
<body bgColor="#EFEFEF" leftmargin="10" topmargin="10">
<!-- HEADER -->
<strong>Employees from EAS Demo DB</strong>
&nbsp;&nbsp;&nbsp;&nbsp;

Page 24 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

<!-- UPDATE BUTTON -->


<input
type="button"
name="b_update"></input>

onclick="htmldw.Update()"

value="Update"

&nbsp;
<!-- DELETE BUTTON -->
<input
type="button"
onclick="htmldw.DeleteRow(htmldw.GetRow())"
value="Delete" name="b_delete"></input>
<br/>
<br/>
<!-- DATAWINDOW -->
<%=ls_html%>
</body>
</html>

Guarde este JSP en la carpeta de la aplicacin web sample como Sample.jsp.


Recuerde que se estableci la propiedad Self Link en el datawindow como
Sample.jsp, por lo tanto es necesario usar el mismo nombre del JSP.

Mostrar el datawindow en el navegador


La direccin de su navegador debera ser:

http://SuMaquina:8080/sample/Sample.jsp

Nota: Las maysculas y minsculas son importantes, revise el nombre de su


aplicacin web y el nombre del JSP.
Vea la imagen a continuacin de como se ver el datawindow en el navegador:

Page 25 of 26

Desarrollo Web con EAServer, PowerBuilder y JSP Primeros Pasos

Nota: Su datawindow podr lucir diferente por el formato.

Page 26 of 26

También podría gustarte