Sie sind auf Seite 1von 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> &nbsp;

onclick="htmldw.Update()"

value="Update"

<!-- 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

Das könnte Ihnen auch gefallen