Diferencia entre revisiones de «Web Services Con Oracle»
(→Crear un Web Service) |
|||
(No se muestran 3 ediciones intermedias de otro usuario) | |||
Línea 1: | Línea 1: | ||
− | + | [[Category:Web Service]] | |
+ | [[Category:Oracle]] | ||
Vamos a ver como ejecutar un web service deployado en un Application Server desde Oracle SQL o PL/SQL. | Vamos a ver como ejecutar un web service deployado en un Application Server desde Oracle SQL o PL/SQL. | ||
Línea 12: | Línea 13: | ||
'''NOTA''': Renombrar la operacion Add por Suma, porque ADD es una palabra reservada en Oracle y luego hay problemas al intentar ejecutar el Web Service desde la base de datos. | '''NOTA''': Renombrar la operacion Add por Suma, porque ADD es una palabra reservada en Oracle y luego hay problemas al intentar ejecutar el Web Service desde la base de datos. | ||
− | == Verificar Oracle == | + | == Verificar JVM Oracle == |
En segundo lugar vamos a verificar si Oracle esta preparado para ejecutar un Web Service. | En segundo lugar vamos a verificar si Oracle esta preparado para ejecutar un Web Service. | ||
Línea 29: | Línea 30: | ||
Bajar Oracle DBWS Callout Utility 10.1.3.1 desde la siguiente URL: | Bajar Oracle DBWS Callout Utility 10.1.3.1 desde la siguiente URL: | ||
− | [http://www.oracle.com/technology/sample_code/tech/java/jsp/dbwebservices.html] | + | [http://www.oracle.com/technology/sample_code/tech/java/jsp/dbwebservices.html Database Web Services Samples and How-To] |
Deszipear el archivo de la siguiente manera: | Deszipear el archivo de la siguiente manera: | ||
− | + | % unzip dbws-callout-utility-10131.zip sqlj/* -d $ORACLE_HOME | |
− | % unzip dbws-callout-utility-10131.zip sqlj/* -d $ORACLE_HOME | + | % unzip dbws-callout-utility-10131.zip samples/* -d $ORACLE_HOME/sqlj |
− | % unzip dbws-callout-utility-10131.zip samples/* -d $ORACLE_HOME/sqlj | + | % unzip dbws-callout-utility-10131.zip README* -d $ORACLE_HOME/sqlj |
− | % unzip dbws-callout-utility-10131.zip README* -d $ORACLE_HOME/sqlj | ||
'''Oracle JPublisher 10.2''' | '''Oracle JPublisher 10.2''' | ||
Bajar JPublisher 10.2 desde la siguiente URL: | Bajar JPublisher 10.2 desde la siguiente URL: | ||
− | [http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html] | + | [http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html JDBC, SQLJ, Oracle JPublisher and Universal Connection Pool (UCP)] |
Deszipear el archivo de la siguiente manera: | Deszipear el archivo de la siguiente manera: | ||
− | % unzip jpub_102.zip sqlj/* -d $ORACLE_HOME | + | % unzip jpub_102.zip sqlj/* -d $ORACLE_HOME |
En Unix modificar el CLASSPATH en el script $ORACLE_HOME/sqlj/bin/jpub de la siguiente manera: | En Unix modificar el CLASSPATH en el script $ORACLE_HOME/sqlj/bin/jpub de la siguiente manera: | ||
− | + | TMPCLASSPATH=$ORACLE_HOME/sqlj/lib/dbwsa.jar:$ORACLE_HOME/jdk/lib/dt.jar:\ | |
− | + | $ORACLE_HOME/jdk/lib/tools.jar:$ORACLE_HOME/jlib/javax-ssl-1_2.jar:\ | |
− | + | $ORACLE_HOME/jlib/jssl-1_2.jar:$ORACLE_HOME/jdbc/lib/ojdbc14.jar:\ | |
− | + | $ORACLE_HOME/sqlj/lib/runtime12.jar:$ORACLE_HOME/jlib/orai18n.jar:\ | |
− | + | $ORACLE_HOME/sqlj/lib/translator.jar:$ORACLE_HOME/javavm/lib/aurora.zip:\ | |
− | + | $ORACLE_HOME/rdbms/jlib/xdb.jar:\ | |
− | + | $ORACLE_HOME/lib/xsu12.jar:$ORACLE_HOME/rdbms/jlib/jndi.jar:\ | |
− | + | $ORACLE_HOME/rdbms/jlib/aqapi.jar:$ORACLE_HOME/rdbms/jlib/jmscommon.jar:\ | |
− | + | $ORACLE_HOME/lib/xmlparserv2.jar:$CLASSPATH | |
− | + | export TMPCLASSPATH | |
− | |||
En Windows agregar a la variable de ambiente CLASSPATH lo siguiente: | En Windows agregar a la variable de ambiente CLASSPATH lo siguiente: | ||
− | + | set CLASSPATH=%ORACLE_HOME%\sqlj\lib\dbwsa.jar;%ORACLE_HOME%\jdk\lib\dt.jar; | |
− | + | %ORACLE_HOME%\jdk\lib\tools.jar;%ORACLE_HOME%\jlib\javax-ssl-1_2.jar; | |
− | + | %ORACLE_HOME%\jlib\jssl-1_2.jar;%ORACLE_HOME%\jdbc\lib\ojdbc14.jar; | |
− | + | %ORACLE_HOME%\sqlj\lib\runtime12.jar;%ORACLE_HOME%\jlib\orai18n.jar; | |
− | + | %ORACLE_HOME%\sqlj\lib\translator.jar;%ORACLE_HOME%\javavm\lib\aurora.zip; | |
− | + | %ORACLE_HOME%\rdbms\jlib\xdb.jar; | |
− | + | %ORACLE_HOME%\lib\xsu12.jar:%ORACLE_HOME%\rdbms\jlib\jndi.jar; | |
− | + | %ORACLE_HOME%\rdbms\jlib\aqapi.jar;%ORACLE_HOME%\rdbms\jlib\jmscommon.jar; | |
− | + | %ORACLE_HOME%\lib\xmlparserv2.jar:%CLASSPATH% | |
'''Version de Java''' | '''Version de Java''' | ||
Línea 75: | Línea 74: | ||
Por lo tanto antes de continuar aseguremonos que esta version es la que esta en el PATH: | Por lo tanto antes de continuar aseguremonos que esta version es la que esta en el PATH: | ||
− | + | % export PATH=$ORACLE_HOME/jdk/bin:$ORACLE_HOME/sqlj/bin:$PATH | |
Línea 82: | Línea 81: | ||
Si estamos en Oracle Database Server 10g Release 1 (10.1) | Si estamos en Oracle Database Server 10g Release 1 (10.1) | ||
− | + | % loadjava -u usuario/password -r -v -f -genmissing -s -grant public dbwsclientws.jar dbwsclientdb101.jar | |
Si estamos en Oracle Database Server 10g Release 2 (10.2) | Si estamos en Oracle Database Server 10g Release 2 (10.2) | ||
− | + | % loadjava -u usuario/password -r -v -f -genmissing -s -grant public dbwsclientws.jar dbwsclientdb102.jar | |
'''NOTA''': usuario/password | '''NOTA''': usuario/password | ||
Línea 116: | Línea 115: | ||
sqlplus scott/tiger | sqlplus scott/tiger | ||
− | |||
SQL> select jpub_plsql_wrapper.suma(37,30) from dual; | SQL> select jpub_plsql_wrapper.suma(37,30) from dual; | ||
− | |||
Resultado: 67 | Resultado: 67 |
Revisión actual del 18:06 26 ago 2009
Vamos a ver como ejecutar un web service deployado en un Application Server desde Oracle SQL o PL/SQL.
Crear un Web Service
En primer lugar vamos a crear y deployar un Web Service sencillo utilizando el IDE NetBeans 6.5. Para realizar esto, seguir los pasos indicados en el siguiente tutorial: Getting Started with JAX-WS Web Services
Como resultado obtendremos el Web Service CalculatorWS con la operacion Add, que recibe 2 parametros numericos y devuelve como resultado la suma de ambos numeros.
NOTA: Renombrar la operacion Add por Suma, porque ADD es una palabra reservada en Oracle y luego hay problemas al intentar ejecutar el Web Service desde la base de datos.
Verificar JVM Oracle
En segundo lugar vamos a verificar si Oracle esta preparado para ejecutar un Web Service.
Como primer medida tenemos que verificar que la JVM este instalada dentro de la base de datos con la que vamos a trabajar.
Conectarse a la base de datos como un usuario DBA (puede ser SYS o SYSTEM) y realizar la siguiente consulta.
SQL> SELECT status, count(*) FROM DBA_OBJECTS WHERE OBJECT_TYPE='JAVA CLASS' GROUP BY status;
Como resultado deben estar todos los objetos VALID y la cantidad ser mayor que 0.
En Oracle Database 10g
Oracle DBWS Callout Utility
Bajar Oracle DBWS Callout Utility 10.1.3.1 desde la siguiente URL: Database Web Services Samples and How-To
Deszipear el archivo de la siguiente manera:
% unzip dbws-callout-utility-10131.zip sqlj/* -d $ORACLE_HOME % unzip dbws-callout-utility-10131.zip samples/* -d $ORACLE_HOME/sqlj % unzip dbws-callout-utility-10131.zip README* -d $ORACLE_HOME/sqlj
Oracle JPublisher 10.2
Bajar JPublisher 10.2 desde la siguiente URL: JDBC, SQLJ, Oracle JPublisher and Universal Connection Pool (UCP)
Deszipear el archivo de la siguiente manera:
% unzip jpub_102.zip sqlj/* -d $ORACLE_HOME
En Unix modificar el CLASSPATH en el script $ORACLE_HOME/sqlj/bin/jpub de la siguiente manera:
TMPCLASSPATH=$ORACLE_HOME/sqlj/lib/dbwsa.jar:$ORACLE_HOME/jdk/lib/dt.jar:\ $ORACLE_HOME/jdk/lib/tools.jar:$ORACLE_HOME/jlib/javax-ssl-1_2.jar:\ $ORACLE_HOME/jlib/jssl-1_2.jar:$ORACLE_HOME/jdbc/lib/ojdbc14.jar:\ $ORACLE_HOME/sqlj/lib/runtime12.jar:$ORACLE_HOME/jlib/orai18n.jar:\ $ORACLE_HOME/sqlj/lib/translator.jar:$ORACLE_HOME/javavm/lib/aurora.zip:\ $ORACLE_HOME/rdbms/jlib/xdb.jar:\ $ORACLE_HOME/lib/xsu12.jar:$ORACLE_HOME/rdbms/jlib/jndi.jar:\ $ORACLE_HOME/rdbms/jlib/aqapi.jar:$ORACLE_HOME/rdbms/jlib/jmscommon.jar:\ $ORACLE_HOME/lib/xmlparserv2.jar:$CLASSPATH export TMPCLASSPATH
En Windows agregar a la variable de ambiente CLASSPATH lo siguiente:
set CLASSPATH=%ORACLE_HOME%\sqlj\lib\dbwsa.jar;%ORACLE_HOME%\jdk\lib\dt.jar; %ORACLE_HOME%\jdk\lib\tools.jar;%ORACLE_HOME%\jlib\javax-ssl-1_2.jar; %ORACLE_HOME%\jlib\jssl-1_2.jar;%ORACLE_HOME%\jdbc\lib\ojdbc14.jar; %ORACLE_HOME%\sqlj\lib\runtime12.jar;%ORACLE_HOME%\jlib\orai18n.jar; %ORACLE_HOME%\sqlj\lib\translator.jar;%ORACLE_HOME%\javavm\lib\aurora.zip; %ORACLE_HOME%\rdbms\jlib\xdb.jar; %ORACLE_HOME%\lib\xsu12.jar:%ORACLE_HOME%\rdbms\jlib\jndi.jar; %ORACLE_HOME%\rdbms\jlib\aqapi.jar;%ORACLE_HOME%\rdbms\jlib\jmscommon.jar; %ORACLE_HOME%\lib\xmlparserv2.jar:%CLASSPATH%
Version de Java
La base de datos Oracle 10g tiene embebida una JVM version 1.4, por lo tanto todas las clases que carguemos en la base de datos deben ser compiladas con JDK 1.4
Por lo tanto antes de continuar aseguremonos que esta version es la que esta en el PATH:
% export PATH=$ORACLE_HOME/jdk/bin:$ORACLE_HOME/sqlj/bin:$PATH
Load WebService Client en la Base
Si estamos en Oracle Database Server 10g Release 1 (10.1)
% loadjava -u usuario/password -r -v -f -genmissing -s -grant public dbwsclientws.jar dbwsclientdb101.jar
Si estamos en Oracle Database Server 10g Release 2 (10.2)
% loadjava -u usuario/password -r -v -f -genmissing -s -grant public dbwsclientws.jar dbwsclientdb102.jar
NOTA: usuario/password Podríamos cargar el WebService Client en el usuario SYS, pero si en algun momento queremos borrarlo, nos conviene que este separado en otro esquema, por ejemplo DBWSCLI.
Permisos
Con SQL*Plus dar los privilegios necesarios con un usuario DBA:
SQL> call dbms_java.grant_permission( 'SCOTT', 'SYS:java.lang.RuntimePermission', 'shutdownHooks', ); SQL> call dbms_java.grant_permission( 'SCOTT', 'SYS:java.util.logging.LoggingPermission', 'control', ); SQL> call dbms_java.grant_permission( 'SCOTT', 'SYS:java.lang.RuntimePermission', 'setFactory', );
Si al ejecutar el JPublisher da error, mirar los trace de la base de datos para ver como solucionarlo. En el caso del ejemplo que vamos a ejecutar, dio un error, y tuve que agregar el siguiente privilegio:
SQL> call dbms_java.grant_permission( 'SCOTT', 'SYS:oracle.aurora.security.JServerPermission', 'LoadClassInPackage.java.lang.StringBuilder', );
Usando el JPublisher
Tener seteadas las variables de ambiente. ORACLE_HOME; ORACLE_SID; PATH; CLASSPATH segun se detallo mas arriba.
jpub -u scott/tiger -sysuser system/****** -proxywsdl=http://localhost:8080/CalculatorWSApplication/CalculatorWSService?WSDL -endpoint=http://localhost:8080/CalculatorWSApplication/CalculatorWSService -package=prueba -dir=prueba
NOTA: si con localhost no funciona reemplazar por el hostname.
Ejecutando el Test
sqlplus scott/tiger SQL> select jpub_plsql_wrapper.suma(37,30) from dual; Resultado: 67