Forms Websocket JavaScript Integration (WJSI) con Eclipse Jetty
18/09/2018 -
Presente desde la versión 11g, la integración con JavaScript es una funcionalidad que nos permite, por ejemplo, integrar un formulario con la API de Google Maps, o con contenido HTML.
Con la llegada de Oracle Forms 12c y las nuevas implementaciones en el lado cliente (Java Web Start y FSAL), al no poder utilizar un navegador “padre” dejó de ser posible temporalmente usar esta integración. Esta cuestión se ha solucionado en la última versión de Oracle Forms (12.2.1.3).
A partir de este momento, vuelve a ser posible comunicarse con el contenido HTML incluso cuando ejecutamos nuestra aplicación a través de Java Web Start o Forms Standalone Launcher sin navegador. Para realizar esta integración en la nueva versión, nos aprovecharemos del uso de un Web Listener extremadamente ligero:
Con Jetty, nuestra aplicación se puede comunicar vía conexiones Web Socket con la página web.
Para realizar esta integración con JavaScript necesitaremos:
En el lado del servidor:
- Copiar a la carpeta donde tengamos nuestras fuentes las librerías WebSocketJSI.pll y WebSocketJSI.olb. Copiar y generar de la forma habitual. Se deberían usar las versiones instaladas en el servidor de aplicaciones, dentro de la carpeta $ORACLE_HOME/forms
- En el fichero HTML que estemos usando, se debe referenciar frmwebsocketjsi.js
<script type="text/javascript" src="/forms/java/frmwebsocketjsi.js"
- Añadir firmado el fichero jar correspondiente a Eclipse Jetty. Copiar en el directorio forms/java del servidor y añadir en el fichero de configuración. Este JAR lo podemos descargar del repositorio central Maven.
En la estación de desarrollo:
- Localizar y abrir WebSocketJSI.olb. Se puede encontrar en la nueva instalación de Oracle Forms 12.2.1.3 de la estación de desarrollo, dentro de $ORACLE_HOME/forms.
- Subclaseamos o copiamos el objeto WEBSOCKETJSI en el formulario que nos interese.
- Si es un formulario que ya usaba JavaScript, cambiaremos:
web.javascript_eval_expr –> websocketJSI.javascript_eval_expr
- Ya podemos probar nuestro formulario
En esta página de Oracle podemos ver un tutorial de la integración con JavaScript.