Bueno, para todos los que seguimos usando forms 10g, últimamente se nos está complicando la vida con las actualizaciones de JAVA, somos una especie de foragidos tecnológicos que nos reusamos a seguir el camino de los upgrades, muchas veces super costosos.
Si eres de esos foragidos y necesitas hacer que tu aplicación en forms 10g siga funcionando, acá te dejo unos tips:
- Verifica siempre la consola de java, para que puedas ver el detalle del error.
- Después de cada cambio, siempre procura cerrar completamente el browser o navegador de internet y seguidamente borrar el caché JAVA del equipo donde estés realizando las pruebas, antes de repetir las mismas.
- Si tienes el error «ExceptionInInitializerError: java.security.AccessControlException: access denied (java.util.PropertyPermission java.home read)» Lo que debes hacer es buscar el archivo o fichero java.policy en el directorio donde instalaste el JAVA, en mi caso «C:\Program Files (x86)\Java\jre1.8.0_144\lib\security»
Una vez que lo encontraste, lo abres con un editor de texto y buscas la sección grant, y agregas la siguiente línea:
permission java.util.PropertyPermission «java.home», «read»;
Este es mi ejemplo del archivo java.policy:
// Standard extensions get all permissions by default
grant codeBase «file:${{java.ext.dirs}}/*» {
permission java.security.AllPermission;
};
// default permissions granted to all domains
grant {
// Allows any thread to stop itself using the java.lang.Thread.stop()
// method that takes no argument.
// Note that this permission is granted by default only to remain
// backwards compatible.
// It is strongly recommended that you either remove this permission
// from this policy file or further restrict it to code sources
// that you specify, because Thread.stop() is potentially unsafe.
// See the API specification of java.lang.Thread.stop() for more
// information.
permission java.lang.RuntimePermission «stopThread»;
// allows anyone to listen on dynamic ports
permission java.net.SocketPermission «localhost:0», «listen»;
// «standard» properies that can be read by anyone
permission java.util.PropertyPermission «java.home», «read»;
permission java.util.PropertyPermission «java.version», «read»;
permission java.util.PropertyPermission «java.vendor», «read»;
permission java.util.PropertyPermission «java.vendor.url», «read»;
permission java.util.PropertyPermission «java.class.version», «read»;
permission java.util.PropertyPermission «os.name», «read»;
permission java.util.PropertyPermission «os.version», «read»;
permission java.util.PropertyPermission «os.arch», «read»;
permission java.util.PropertyPermission «file.separator», «read»;
permission java.util.PropertyPermission «path.separator», «read»;
permission java.util.PropertyPermission «line.separator», «read»;
permission java.util.PropertyPermission «java.specification.version», «read»;
permission java.util.PropertyPermission «java.specification.vendor», «read»;
permission java.util.PropertyPermission «java.specification.name», «read»;
permission java.util.PropertyPermission «java.vm.specification.version», «read»;
permission java.util.PropertyPermission «java.vm.specification.vendor», «read»;
permission java.util.PropertyPermission «java.vm.specification.name», «read»;
permission java.util.PropertyPermission «java.vm.version», «read»;
permission java.util.PropertyPermission «java.vm.vendor», «read»;
permission java.util.PropertyPermission «java.vm.name», «read»;
};
Al otorgar el permiso se debe quitar este error.
- Busca el archivo o fichero java.security en el directorio donde instalaste el JAVA, en mi caso «C:\Program Files (x86)\Java\jre1.8.0_144\lib\security»
Una vez que lo encontraste, lo abres con un editor de texto y buscas la siguiente línea:
jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
Debes eliminar el texto «MD5,» para que webutil funcione correctamente, debe quedar así:
jdk.jar.disabledAlgorithms=MD2, RSA keySize < 1024
- Si tienes el forms con el último patchset, verifica siempre que estás usando el mismo webutil que viene dentro del patchet, esto aplica tanto con tu equipo de desarrollo donde instalaste forms y reports, como en el servidor de aplicaciones Oracle OAS. Siempre debes procurar que el equipo de desarrollo y el OAS estén con el mismo patchset. Te das cuenta que tienes este problema cuando te aparecen en la consola java los siguientes errores:
oracle.forms.handler.IHandler.getApplet()Ljava/applet/Applet;
at oracle.forms.webutil.common.VBeanCommon.init(VBeanCommon.java:281)
java.lang.ClassNotFoundException: oracle.forms.webutil.clientInfo.GetClientInfo
En mi caso, yo estoy usando el pachset p5983622_10123_WINNT, por lo tanto, debo extraer de este patchset el webutil.2.2. el cual lo encuentras con un programa extractor tipo winrar en la ruta: disk1\stage\patches\oracle.developer.forms.builder\10.1.2.3.0\1\Datafiles\webutil.2.2.jar
- Una vez que determines que tienes el mismo webutil que viene con el patchset, siempre es recomendable firmar el frmwebutil.jar y el jacob.jar con el sign_webutil.bat y dejarlos en la ruta [ORACLE_HOME]\forms\java Esto aplica tanto para el equipo donde desarrollas con oracle forms, como en el servidor donde está instalado OAS.
- Verificar que los archivos o ficheros jacob.jar y frmwebutil.jar están dentro del classpath, tanto del sistema operativo como en los ficheros de configuración .env por ejemplo [ORACLE_HOME]\forms\server\default.env
Filed under: Oracle, Uncategorized | Tagged: 10.1.2.3, access denied, AccessControlException, ClassNotFoundException, Exception, ExceptionInInitializerError, forms 10g, java, java 8, java.home, NoSuchMethodError, oas, Oracle, PropertyPermission, security, util, VBeanCommon, webutil, webutil.2.2 | Leave a comment »