Escolar Documentos
Profissional Documentos
Cultura Documentos
Septiembre 2012
Calle 125 # 19-89 oficina 502 PBX: (571) 6582568 - Fax: (571) 6792536 www.axentriacg.com - info@axentriacg.com
Tabla de contenido
Definiendo Programas Concurrentes y Ejecutables en la EBS utilizando programas JAVA 3 Existen diferentes formas de trabajar con programas Java en la EBS, describimos algunas de stas. .......................................................................................................................... 3 Escribiendo un Programa Concurrente en Java ....................................................................... 3 Formato genrico para escribir un Programa Concurrente Java ....................................... 3 Recomendaciones ..................................................................................................................... 4 Trasladando Libreras ................................................................................................................... 5 Registrar Pograma Concurrente y Ejecutable ....................................................................... 5 Programa Concurrente .................................................................................................... 5
Navegue a la pantalla ............................................................................................................... 6 Utilizando Wappers ....................................................................................................................... 7 Creacin de Objetos Java en la Base de datos Oracle ........................................................ 7 Ejecucin de programas Java con PL/SQL ............................................................................ 8 Trasladando Libreras ................................................................................................................. 10 Registrar Programa Concurrente y Ejecutable ................................................................... 10 Programa Concurrente .................................................................................................. 11
Calle 125 # 19-89 oficina 502 PBX: (571) 6582568 - Fax: (571) 6792536 www.axentriacg.com - info@axentriacg.com
//Obtiene la referencia del archive Output para el programa (Visualiza Output en pantalla Solicitudes) OutFile out = ctx.getOutFile();
//Obtiene la refencia para el log del programa concurrente (Visualizar Registro en pantalla Solicitudes) LogFile log = ctx.getLogFile();
try{
Calle 125 # 19-89 oficina 502 PBX: (571) 6582568 - Fax: (571) 6792536 www.axentriacg.com - info@axentriacg.com
ParameterList lPara = ctx.getParameterList(); while (lPara.hasMoreElements()) { NameValueType aNVT = lPara.nextParameter(); if ( aNVT.getName().equalsIgnoreCase("My Name") ) myName = aNVT.getValue();); }
//Solicita completion de este programa concurrente //Este paso envia la senal de final de ejecucin del programa concurrente ctx.getReqCompletion().setCompletion(ReqCompletion.NORMAL, "Completed."); } //Manejo de excepciones catch(Exception e){ StackTraceElement ste[] = e.getStackTrace(); for(int i=0; i<ste.length; i++){ log.writeln(ste[i].toString(), 0); } } } }
Recomendaciones
Recomiendan usar Jdeveloper con la version de Patched Number: 6012619. Se puede bajar de Metalink. Esta version tiene todas los package FND y otros requisites usados para crear pogramas concurentes en Java. Se pueden utiliza otras herramientas como Eclipse,
Calle 125 # 19-89 oficina 502 PBX: (571) 6582568 - Fax: (571) 6792536 www.axentriacg.com - info@axentriacg.com
pero esas no tienen todo los package FND, y tendan que copiarse manualmente de Oracle Apps Server y referenciarlas en el Project.
Trasladando Libreras
Se debe solicitar al DBA que ubique las libreras en la ruta $JAVA_TOP. Para asegurar que las libreras estn disponibles para su JCP.
Programa Concurrente
Calle 125 # 19-89 oficina 502 PBX: (571) 6582568 - Fax: (571) 6792536 www.axentriacg.com - info@axentriacg.com
/dv00/oracle/product/DEV1110/java:/dv00/oracle/apps/DEV1110/11.5/au/11.5.0/java/apps borg.zip:/dv00/oracle/product/DEV1110/java/thirdParty1.jar:/dv00/oracle/product/DEV1110 /java/thirdParty2.jar Nota:- Si su JCP no usa ninguna librera de terceros , No ingrese informacin aqu Las opciones que se especifiquen deben estar completas.
/dv00/oracle/product/DEV1110/java Este es el path de mi $JAVA_TOP /dv00/oracle/apps/DEV1110/11.5/au/11.5.0/java/appsborg.zip Este es el path para mi desarrollo $AU_TOP/java/appsborg.zip /dv00/oracle/product/DEV1110/java/thirdParty1.jar Este es el path JAR referenciado para la primera dependencia de libreras. /dv00/oracle/product/DEV1110/java/thirdParty2.jar El path de las segunda librera Los parmetros deben estar bien referenciados y separados por dos puntos :
Calle 125 # 19-89 oficina 502 PBX: (571) 6582568 - Fax: (571) 6792536 www.axentriacg.com - info@axentriacg.com
Utilizando Wappers
Crear el programa Java y cargarlo en la base de datos. (Ya lo tienen) Crear un programa de recubrimiento (Wrapper) de PL/SQL.
CREATE [OR REPLACE] AND COMPILE JAVA SOURCE NAMED <JavaSourceName> AS public class <className> { <java code> ... };
El siguiente ejemplo crea y compila una clase Java OracleJavaClass en el interior de JAVA SOURCE FuentesJava. Un aspecto muy a tener en cuenta es que los mtodos de la clase java que queramos invocar desde PL/SQL deben ser estaticos.
CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED FuentesJava AS public class OracleJavaClass { public static String Saluda(String nombre) { return ("Hola desde Java" + nombre); }
Calle 125 # 19-89 oficina 502 PBX: (571) 6582568 - Fax: (571) 6792536 www.axentriacg.com - info@axentriacg.com
} ;
CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED FuentesJava AS public class OracleJavaClass { public static String Saluda(String nombre) { return ("Hola desde Java" + nombre); } } public class OracleJavaMejorada { public static String SaludoMejorado(String nombre) { return ("Saludo mejorado desde Java para:" + nombre); } } ;
La otra opcin sera guardar el cdigo java en el archivo OracleJavaClass.java, compilarlo y cargarlo en ORACLE con LoadJava. A continuacin se muestran ejemplos del uso de la utilidad LoadJava
Calle 125 # 19-89 oficina 502 PBX: (571) 6582568 - Fax: (571) 6792536 www.axentriacg.com - info@axentriacg.com
CREATE [OR REPLACE] FUNCTION|PROCEDURE <name> [(<params>,...)] [RETURN <tipo>] IS|AS LANGUAGE JAVA NAME '<clase>.<metodo> [return <tipo>]' ;
CREATE OR REPLACE FUNCTION Saluda_wrap (nombre VARCHAR2) RETURN VARCHAR2 AS LANGUAGE JAVA NAME 'OracleJavaClass.Saluda(java.lang.String) return java.lang.String';
Una vez creado el wrapper, podremos ejecutarlo como cualquier otra function o procedure de PL/SQL. Debemos crear un wrapper por cada funcin java que queramos ejecutar desde PL/SQL. Cuando ejecutemos el wrapper, es decir, la funcin "Saluda_wrap", internamente se ejecutar la clase java y se invocar el mtodo esttico "OracleJavaClass.Saluda". Un aspecto a tener en cuenta es que es necesario proporcionar el nombre del tipo java completo, es decir, debemos especificar java.lang.String en lugar de nicamente String.
Calle 125 # 19-89 oficina 502 PBX: (571) 6582568 - Fax: (571) 6792536 www.axentriacg.com - info@axentriacg.com
Una recomendacin de diseo sera agrupar todos los Wrapper en un mismo paquete. En el caso de que el programa Java necesitase de packages Java adicionales, se deberan cargar en la base de datos con la utilidad LoadJava. Despus de esto se debe crear un Package o procedimiento almacenado en la base de datos haciendo el llamado al wrapper principal. O bien crear un scipt .sql
Trasladando Libreras
Se solicita al DBA copiar el script en la ruta XX_TOP/sql (XX depende la aplicacin a la que se asocie el concurrente).
: : : :
Programa Concurrente
Calle 125 # 19-89 oficina 502 PBX: (571) 6582568 - Fax: (571) 6792536 www.axentriacg.com - info@axentriacg.com