martes, 31 de diciembre de 2013

Configurar Webutil para Oracle Application Server 10g

A continuación detallo los pasos necesarios para la configuración de la librería Webutil para un servidor de aplicaciones Oracle Application Server 10g (OAS).
  1. Obtener la versión correcta de Webutil:

  2. Es importante mencionar que la versión de Webutil debe ser igual que la versión de Forms, por ello si tenemos un OAS con versión 10.1.2.3 la versión de Webutil debe ser 10.1.2.3. Es por ello que antes de configurar el Webutil recomiendo que ya se encuentre el servidor parchado a la versión 10.1.2.3 para evitar en un futuro tener que volver a configurar.

    En el OAS por defecto el Webutil no viene integrado como un componente, es por ello que debemos obtenerlo de una instalación de "Developer Suit" el cual debe ser la misma versión que nuestro OAS.

  3. Obtener la versión correcta de Jacob
  4. Si la versión es 10.1.2.0.2 o 10.1.2.2 debes usar el Jacob 1.8
    Si la versión es 10.1.2.3.X debes usar el Jacob 1.10.1

  5. Creamos el directorio "webutil" 
  6. %ORACLE_HOME%\forms\webutil

  7. Copiamos los siguientes archivos a la ruta %ORACLE_HOME%\forms\webutil
  8. jacob.dll --> incluidos en  el jacob que hayamos  descargado según versión requerida.
    d2kwut60.dll --> obtenerlo del Developer Suite en la ruta %ORACLE_HOME%\forms\webutil
    JNIsharedstubs.dll --> obtenerlo del Developer Suite en la ruta %ORACLE_HOME%\forms\webutil
    sign_webutil.bat --> obtenerlo del Developer Suite en la ruta %ORACLE_HOME%\forms\webutil

  9. Copiar el archivo jacob.jar del jacob descargado a la ruta %ORACLE_HOME%\forms\java

  10. Si hemos aplicado el parche 9593176 o 9282569 o 11710576 no debemos realizar este paso, pues ya el frmwebutil.jar se encuentra en la ruta correcta.
  11. Copiamos el frmwebutil.jar que se encuentra en la ruta %ORACLE_HOME%\forms\java del Developer Suite a la misma ruta del OAS:  %ORACLE_HOME%\forms\java

    Nota: Si estamos usando la versión 10.1.2.0.2 se deberá aplicar el parche 5017052 pues éste agrega unos archivos javascript así como modifica los archivos base para el servlet de Forms.

  12. Firmamos el jacob:
  13. Desde linea de comando o la terminal hacemos lo siguiente:
    - Nos movemos a la ruta: %ORACLE_HOME%\forms\java
    - Luego configuramos la variable de ambiente PATH: set PATH=%ORACLE_HOME%\jdk\bin;%PATH%
    - Ejecutamos el siguiente comando:
    %ORACLE_HOME%\forms\webutil\sign_webutil.bat %ORACLE_HOME%\forms\java\jacob.jar




  14. Verificamos que en la ruta %ORACLE_HOME%\forms\server se encuentre el archivo webutil.cfg, de lo contrario lo copiamos de la instalación del Developer Suite.

  15. La siguiente variable debe estar definida en el archivo %ORACLE_HOME%\forms\server\default.env
  16. WEBUTIL_CONFIG=<ORACLE_HOME>\forms\server\webutil.cfg

  17. Los siguientes jars deben ser incluidos a la variable CLASSPATH del archivo %ORACLE_HOME%\forms\server\default.env
  18. %ORACLE_HOME%\forms\java\frmall.jar;%ORACLE_HOME%\forms\java\frmwebutil.jar;%ORACLE_HOME%\forms\java\jacob.jar;%ORACLE_HOME%\jdk\jre\lib\rt.jar




  19. El archivo formsweb.cfg debe contener la siguiente configuración:
  20. [webutil]
    WebUtilArchive=frmwebutil.jar,jacob.jar
    WebUtilLogging=off
    WebUtilLoggingDetail=normal
    WebUtilErrorMode=Alert
    WebUtilDispatchMonitorInterval=5
    WebUtilTrustInternal=true
    WebUtilMaxTransferSize=16384
    baseHTMLjinitiator=webutiljpi.htm
    baseHTMLjpi=webutiljpi.htm
    archive=frmall.jar
    lookAndFeel=oracle




  21. El siguiente directorio virtual debe estar definido en el archivo %ORACLE_HOME%\forms\server\forms.conf:
  22. AliasMatch ^/forms/webutil/(..*) "%ORACLE_HOME%/forms/webutil/$1"




  23. Creamos un usuario de base de datos "webutil" y ejecutamos en él el script que se encuentre en el Developer Suite:
  24. %ORACLE_HOME%\forms\create_webutil_db.sql




  25. Compilamos la librería webutil.pll para obtener su correspondiente archivo compilado plx y lo movemos a una ruta definida en el FORMS_PATH como %ORACLE_HOME%\forms
También podemos compilar la forma de webutil_demo.fmb en caso de tenerla y copiamos su respectivo archivo compilado fmx en la misma ruta %ORACLE_HOME%\forms.

Por ultimo ejecutamos la forma desde el navegador para verificar que todo este bien:

http://host:port/forms/frmservlet?config=webutil&form=webutil_demo&userid=webutil/webutil@db

17 comentarios:

  1. Saludos, Muchas gracias por tomarte el tiempo de redactar una guía de instalación paso a paso. Tengo un problema al tratar de ejecutar cualquier aplicación de Oracle Forms, incluso la demo del WebUtil presenta el error de "No se puede leer el formulario webutil_demo." En un principio estuvo funcionando correctamente pero dejo de funcionar misteriosamente, no se ha realizado ningun cambio en las configuraciones ni tampoco en el equipo pues no estuvo en uso para vaciones de fin de año y no podemos hacer funcionar el servicio.
    Únicamente funciona un par de minutos al reiniciar el equipo y luego empieza a botar las conexiones o a redireccionar al formulario de instalación exitosa. Cualquier ayuda será muy apreciada. Gracias de antemano.

    ResponderEliminar
  2. Hola Mauricio,

    Las causas del comportamiento que presentas pueden ser varias, si ya no te encuentra la forma demo de Webutil se puede deber a que la ruta en donde se encuentra dicha forma ya no se encuentra definida en la variable FORM_PATH del archivo default.env

    De igual manera el otro comportamiento en que mencionas que bota conexiones se puede deber a un bug, que version de parchado tiene tu OAS ??

    ResponderEliminar
  3. Buen Tiempo Carlos:

    Creo que necesitaré de tu ayuda. Necesito configurar webutil en Forms 9i o 10g con un cliente. He estado trabajando en replicar el ambiente del cliente antes de tener el acceso, pero no he conseguido configurarlo como se debe.
    Cuando ejecuto una prueba de forms con webutil el explorer se muere..... Y un montón de otras cosas
    Pensé en que podrías apoyarme via remota con los debido honorarios, te interesa?

    Quedo pendiente

    ResponderEliminar
    Respuestas
    1. Hola,

      Gracias igual buen tiempo!

      Pues con gusto podría ayudarte, sería de ver como comunicarnos.

      Saludos

      Eliminar
  4. Buenas tardes Carlos Cortez, muchas felicidades por este blog es de un gran apoyo, en esta oportunidad necesito ayuda con lo siguiente:
    Tengo en un equipo 8GB de Ram, 1TB de Hdd, Procesador Intel i5 de 64 bits, el detalle es el siguiente, debo aclarar que es para fines de aprendizaje.
    He instalado Oracle DataBase 12c la cual funciona muy bien
    Adicional mente he instalado Oracle WebLogic Server 11g el cual a nivel de consola puedo acceder a la consola de control y monitores, El PROBLEMA surge cuando quiero compilar en Oracle Forms and report utilizando el comando FRMCMP.SH me da el error FRM-91500: Fallo al iniciar/terminar la creación, según y hasta donde he llegado investigando, es a la falta de la declaración de variables de ambiente, es posible que pueda configurar mas de una instancia en la variable ORACLE_HOME o si tienes alguna guía para corregir ese fallo.
    Gracias por tu ayuda

    ResponderEliminar
    Respuestas
    1. Hola Evelio,

      Gracias por tu comentario, intento compartir lo que sé.

      Fíjate que ese error pasa cuando se intenta compilar un objeto y no se posee interfaz gráfica desde donde lo intentas realizar, comúnmente cuando lo haces a través de una terminal SSH.

      Suponiendo que lo estas haciendo con un cliente SSH invoca el comando xclock y si se te abre el relojito sin error esta todo bien, sino tendrás que hacer un export del DISPLAY hacia tu maquina, o también te puedes conectar a la maquina con VNC y compilar desde ahí.

      Saludos!

      Eliminar
  5. Buenas noches Carlos, de verdad que blogs como este deberían multiplicarse, he tenido un problema por mucho tiempo con la webutil para OAS 10g, le daba la vuelta y nada, luego de buscar tanto, conseguí tu blog y me ha resuelto el problema....me faltaban unos pasos en la configuración del archivo default.env con respeto a los .jar....Te felicito y espero que sigas ayudando a las personas a solucionar sus problemas....Gracias y Saludos.....

    ResponderEliminar
    Respuestas
    1. Gracias Nelson por tus comentarios y que bueno que te sirvió. Saludos!!

      Eliminar
  6. Hola que tal buen dia, me ayudas por favor me sale este error when_custom_item_event

    ResponderEliminar
    Respuestas
    1. Hola amigo,

      Si te sale eso al probar la forma con webutil, te recomiendo valides hayas agregado la librería de webutil, el OLB y que el bloque de datos de webutil sea el último en la lista de bloques.

      Saludos

      Eliminar
  7. Hola buenos días.

    tengo un problema con el webutil, ya configure los archivos formsweb.cfg, webutil.cfg y default.env, instale la base de datos webutil siguiendo los pasos en un manual, registre los jar del jacob y del webutil, tambien compile el archivo webutil.pll y lo agregue al proyecto, el archivo webutil.obj de igual forma esta agregado en el proyecto, corro la forma y marca un error de

    oracle.forms.webutil.clientInfo.getClientInfo bean not found. WEBUTIL_CLIENTINFO. GET_SYSTEM_PROPERTY will not work

    espero que alguien me pueda ayudar

    saludos...

    ResponderEliminar
    Respuestas
    1. Asegúrate de haber agregado el OLB de Webutil al módulo de Forms, también deber ver que en el FORMS_PATH se encuentren los objetos de Webutil

      Eliminar
  8. EStimados, tengo una aplicacion en oracle forms 6i que al ejecutarla cliente servidor exporta un archivo excel. Al subirlo al OAS y ejecutar el mismo archivo, me sale este mensaje:
    WUC-12: ERROR DE CACHE DE OBJETOS. EL OBJETO NO ES DEL TIPO ESPERADO JACOBOBJECT, VECTOR

    Ya cambie el OLE2 por CLIENT_OLE2 pero me sigue saliendo el mismo mensaje.
    Necesito su ayuda por favor

    Muchas gracias

    ResponderEliminar
    Respuestas
    1. El error de WUC-12 al escribir en archivos usualmente se debe a que se escriben más de 10,000 lineas... tienes 2 alternativas, escribir con TEXT_IO el archivo en el servidor dónde está el OAS y luego transferirlo a la máquina cliente y la segunda alternativa sería agregar un synchronize luego de cada vez de haber escrito 10,000 lineas.

      Saludos!

      Eliminar
    2. Gracias Carlos
      Pero ahora tengo el sgte problema:
      Este codigo uso para ponerle marco a celdas de un excel que genero. En mi maquina funciona bien, pero al levantar el forms desde el OAS sale error.
      Por favor podrias revisar el codigo y ver que es lo que esta mal?


      PROCEDURE CREA_CELDA
      ( po_worksheet client_ole2.obj_type,
      pn_x number,
      pn_y number,
      pv_valor varchar2,
      pv_format varchar2,
      pn_hori_alig number,
      pn_font_size number,
      pn_bold number

      ) IS

      args client_ole2.obj_type;
      cell client_ole2.obj_type;
      font client_ole2.list_type;--client_ole2.obj_type;
      interior client_ole2.obj_type;
      columna client_ole2.obj_type;
      BEGIN
      args:=client_ole2.create_arglist;
      client_ole2.add_arg(args, pn_y);
      client_ole2.add_arg(args, pn_x);
      cell:=client_ole2.get_obj_property(po_worksheet, 'cells', args);
      client_ole2.destroy_arglist(args);

      client_ole2.set_property(cell, 'NumberFormat', pv_format);
      client_ole2.set_property(cell, 'Value', pv_valor);

      client_ole2.set_property(cell, 'HorizontalAlignment', pn_hori_alig);

      --agregado 20.03.18
      font:=client_ole2.get_obj_property(cell, 'borders');
      client_ole2.Set_Property(font, 'LineStyle', EstiloLine(''));
      client_ole2.Set_Property(font, 'Weight', GrosorLine(''));
      client_ole2.Set_Property(font, 'ColorIndex', Color('BLACK'));
      --fin de agregado 20.03.18

      If pn_font_size Is Not Null Or pn_bold Is Not Null Then
      font:=client_ole2.get_obj_property(cell, 'font');

      If pn_font_size Is Not Null Then
      client_ole2.set_Property(font, 'Size', pn_font_size);
      End If;
      If pn_bold Is Not Null Then
      client_ole2.Set_Property(font, 'Bold', pn_bold);
      End If;
      client_ole2.release_obj(font);
      End If;

      client_ole2.release_obj(cell);
      END;

      Eliminar
  9. Saludos, por favor puedes compartir el archivo webutil.2.2.jar

    ResponderEliminar
  10. HOla Carlos, muchas gracias por la ayuda , una pregunta sabes si hay forma con la webutil de sacar informacion de un archivo que hay en el servidor, me interesa saber la hora de creacion y de modificacion.

    ResponderEliminar