En este laboratorio aprenderás como configurar Java web start, este es un feature exclusivo de Oracle forms 12c por lo que para versiones anteriores de forms no funcionará su implementación.

Java web start nace con la finalidad de eliminar el despliegue tradicional de forms en los navegadores que soportan el plugin NPAPI, actualmente solo es soportado por Internet Explorer, por lo que para las empresas esto genera una dependencia total de este navegador.

La idea es acceder a la aplicación usando únicamente un url como el siguiente, ejecutandose desde un cmd:

javaws http://10.0.1.100/forms/frmservlet?config=pruebas

Para la configuración de java web start tenemos instalado un ambiente con lo siguiente:

  • Oracle Linux 7
  • Weblogic 12.2.1.4
  • Oracle forms and reports 12.2.1.4
  • Jdk 1.8u202

Debemos ir a la siguiente ruta:

cd $DOMAIN_HOME/config/fmwconfig/components/FORMS/instances/forms1/server

Dentro crearemos un archivo llamado sistemas.jnlp y le colocaremos lo siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0"
      xmlns:jfx="http://javafx.com"
      %jnlp_param%="%jnlp_param_value%">
    <information>
        <title>Oracle Forms Services</title>
        <vendor>Oracle Corporation</vendor>
        <homepage href="http://www.oracle.com"/>
        <description>Oracle Forms Services with WebUtil applet launcher.</description>
        <description kind="short">Oracle Forms Applet with WebUtil</description>
    </information>
    <security>
        <all-permissions/>
    </security>
    <update check="always" policy="prompt-run"/>
    <resources>
        <!-- Application Resources -->
        <j2se version="%java_version%" href="http://java.sun.com/products/autodl/j2se"/>
        <jfx:javafx-runtime version="2.2+"/>
        <jar href="%contextRoot%/java/frmall.jar" download="eager" main="true" />
        <jar href="%contextRoot%/java/frmwebutil.jar" download="lazy" main="false" />
        <jar href="%contextRoot%/java/jacob.jar" download="lazy" main="false" />
        <jar href="%contextRoot%/java/images.jar" download="lazy" main="false" />
        <extension name="Extensions" href="%contextRoot%/java/extensions.jnlp"/>
    </resources>
    <applet-desc
    name="Oracle Forms"
    main-class="oracle.forms.engine.Main"
    height="1"
    width="1">
    <param name="serverURL" value="%appletServerURL%"/>
    <param name="height" value="%height%"/>
    <param name="width" value="%width%"/>
    <param name="networkRetries" value="%networkRetries%"/>
    <param name="separateFrame" value="%separateFrame%"/>
    <param name="splashScreen"  value="%splashScreen%"/>
    <param name="background"  value="%background%"/>
    <param name="lookAndFeel"  value="%lookAndFeel%"/>
    <param name="colorScheme"  value="%colorScheme%"/>
    <param name="customColorScheme"  value="%customColorScheme%"/>
    <param name="serverApp" value="%serverApp%"/>
    <param name="logo" value="%logo%"/>
    <param name="imageBase" value="%imageBase%"/>
    <param name="formsMessageListener" value="%formsMessageListener%"/>
    <param name="recordFileName" value="%recordFileName%"/>
    <param name="EndUserMonitoringEnabled" value="%EndUserMonitoringEnabled%"/>
    <param name="EndUserMonitoringURL" value="%EndUserMonitoringURL%"/>
    <param name="heartBeat" value="%heartBeat%"/>
    <param name="MaxEventWait" value="%MaxEventWait%"/>
    <param name="allowAlertClipboard" value="%allowAlertClipboard%"/>
    <param name="disableValidateClipboard" value="%disableValidateClipboard%"/>
    <param name="enableJavascriptEvent" value="%enableJavascriptEvent%"/>
    <param name="digitSubstitution" value="%digitSubstitution%"/>
    <param name="legacy_lifecycle" value="%legacy_lifecycle%"/>
    <param name="JavaScriptBlocksHeartBeat" value="%JavaScriptBlocksHeartBeat%"/>
    <param name="highContrast" value="%highContrast%"/>
    <param name="disableMDIScrollbars" value="%disableMDIScrollbars%"/>
    <param name="clientDPI" value="%clientDPI%"/>
    <param name="applet_stop_timeout" value="800"/>
    <param name="guiMode" value="%guiMode%"/>
    <param name="idleTimeout" value="%idleTimeout%"/>
    <param name="ssoLogoutRedirect" value="%ssoLogoutRedirect%"/>
    <param name="ssoMode" value="%ssoMode%"/>
    <param name="ssoLogout" value="%ssoLogout%"/>
    <param name="logoutTargetURLParamname" value="%logoutTargetURLParamname%"/>
    <param name="mediaBase" value="%mediaBase%"/>
    <param name="webstartRequest" value="%webstartRequest%"/>
 
    <param name="WebUtilLogging" value="%WebUtilLogging%"/>
    <param name="WebUtilLoggingDetail" value="%WebUtilLoggingDetail%"/>
    <param name="WebUtilErrormode" value="%WebUtilErrorMode%"/>
    <param name="WebUtilDispatchMonitorInterval" value="%WebUtilDispatchMonitorInterval%"/>
    <param name="WebUtilTrustInternal" value="%WebUtilTrustInternal%"/>
    <param name="WebUtilMaxTransferSize" value="%WebUtilMaxTransferSize%"/>
    </applet-desc>
</jnlp>

Las líneas en negrita, donde dice resource es donde se modifican los jar que la aplicación necesitará para levantarse, es ahí donde se pueden agregar o quitar jars estos se encuentran en la siguiente ruta:

$ORACLE_HOME/forms/java

Después el archivo creado se debe copiar a la siguiente ruta:

$DOMAIN_HOME/config/fmwconfig/servers/WLS_FORMS/applications/formsapp_12.2.1/config

Luego de esto, debemos ir a la siguiente ruta:

cd $DOMAIN_HOME/config/fmwconfig/servers/WLS_FORMS/applications/formsapp_12.2.1/config

Aquí modificaremos el archivo formsweb.cfg

Crearemos un nuevo enviroment llamado pruebas y le agregaremos las siguientes 2 líneas, esto habilita Java Web Start en el enviroment:

basejnlp=sistemas.jnlp
webstart=enabled

Posterior a ello, es necesario que todos los jars esten firmados usando el mismo keystore, ya que para que el JNLP funcione se necesita que todos los jars mantengan la misma firma.

Luego de haber válidado la firma de los jars, debemos realizar una configuración en el java de la máquina de los clientes, es necesario habilitar la opción de Mantener archivos temporales en mi computadora, lo podemos encontrar en General > Settings:

De esta forma el usuario ya podrá ejecutar la aplicación usando java web start, esto se debe colocar en todas las máquinas de los clientes que vayan a ejecutar la aplicación.

Para realizar la ejecución, en un cmd podemos escribir el siguiente url:

javaws http://10.0.1.100/forms/frmservlet?config=pruebas

En mi caso, la configuración de forms tiene el acceso por medio del puerto 80 por lo que en caso de ser otro puerto simplemente se debe colocar luego de la ip.

De esta manera hemos logrado el despligue de la aplicación de forms sin necesidad de un navegador, luego podemos guardar el .cmd o .bat en el escritorio de nuestra computadora y siempre abrir la aplicación desde ahí.

Si se ejecuta el siguiente url desde el navegador:

http://10.0.1.100/forms/frmservlet?config=pruebas

Se descargará un archivo .jnlp, en caso de no querer usar el método del cmd, siempre es necesario descargar este archivo cuando se vaya a desplegar la aplicación, ya que actualiza la información nueva que venga en los jars.

Mi recomendación es crear un archivo .bat o .cmd con el siguiente url:

javaws http://10.0.1.100/forms/frmservlet?config=pruebas

Y siempre descargar la aplicación utilizando este método.

7 respuestas a «Cómo configurar Java Web Start en Oracle forms 12c»

  1. Agradezco la información, es muy buena, tengo la siguiente pregunta: como puedo firmar los nuevos jar que tengo para poder realizar la practica que mencionas?

  2. Muy bueno el aporte. Quería preguntarte si se puede usar esta modalidad para ejecutar forms, teniendo conexión de usuarios con sesión única. Gracias

    1. Sí se puede realizar, sin embargo, para eso sería necesario establecer una variable de sesión JSESSION para mantener una única concurrencia a una sola conexión, ya sea un nodo o una única instancia al managed donde esté el WLS_FORMS.

  3. D:\Oracle12c\fmw\P_FRM\forms\java>D:\Oracle12c\fmw\P_FRM\oracle_common\jdk\bin\jarsigner -signedjar jacob.jar jacob.jar jacob
    Enter Passphrase for keystore:
    jarsigner error: java.lang.RuntimeException: keystore load: C:\Users\oscovie\.keystore (El sistema no puede encontrar el archivo especificado)

    No he podido firmar el jacob.jar, he visto uno ejemplos pero no se que es eso de keystore, qué puedo hacer?

    Gracias

    1. El keystore es el almacén donde se encuentran los certificados para firmar los jars de Oracle forms, en el archivo sign_webutil.bat se específica la ruta donde se creó el archivo y con este mismo archivo el sign_webutil.bat es con el que firmas los jars.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *