Crear WebService con Jdeveloper - Oracle SOA Suite, BPEL & SqlServer 2005 ( Mac or Windows )

Nuestro servicio web lo crearemos apartir de un proceso BPEL con Jdeveloper , el cual recibira un parametro, consultará la informacion en una base de datos de SQLServer y nos regresara los campos solicitados.

Este servicio web será deployado en nuestro Oracle Application Server 10g previamente configurado.


Lo primero que debemos hacer es :

1.- Crear conexion SQLServer con Jdeveloper

2.- Crear un Application Server Connection

Una vez realizado estos pasos procedemos a crear el servicio web , verificamos que nuestras conexiones se hayan creado satisfactoriamente. (Application Server y Database)

Creamos el Projecto






















Nos vamos a nuestra pestaña de Applications en nuestro Jdeveloper y seleccionamos New Application.

Application Name: wsSqlServerTest
Application Template : No Template [All Technologies]

click OK














En la siguiente pantalla seleccionamos CANCEL.















Seleccionamos nuestra aplicación y damos boton derecho y damos click en New Project














Ahi en la pantalla seleccionamos:

Categories: General - Projects
Items : BPEL Process Project















Name: BPELProcSQLTest
Namespace: by Default
Type: Template Synchronouns BPEL Process
click - Finish














Asi ya hemos creado nuestro esqueleto de lo que sera nuestra orquestación del webservice.

Agregar PartnerLink para crear un Database Adapter














Nos vamos a la seccion de Services y seleccionamos Create Partner Link
Name : PartnerLinkSQL y oprimimos el boton Define Data Adapter.















Se mostrará el asistente para la configuración de nuestro adaptador de base de datos:


Object : DatabaseAdapter
Name : DAGetSQLResult
Connection: sqlconexion [Anteriormente configurada]
Operation Type : Execute Custom SQL






















































Necesitamos obtener la consulta SQL y verificamos cuales son los datos que nos debe devolver el servicio web y esa consulta SQL es la que debemos utilizar en la configuración de nuestro adaptador.















Una vez que validamos que la consulta SQL funciona necesitamos pegarlo en nuestra configuración de adaptador.

SQL : SELECT PPT_ANIO , PPT_ULT_USU , PPT_INTERCIA FROM SFP_PRESUPUESTOSB WHERE PPT_INTERCIA = #PARAM1














y damos finalizar y despues OK.














Y listo ya hemos creado nuestro Adaptador de Base de Datos que recibe un parametro para realizar la consulta en SQL Server.

Ahora procedemos a realizar la orquestacion , que simplemente es asignar las variables a los objetos de entrada y salida de nuestro BPEL Process.


Agregar un Objeto INVOKE

Agregamos a nuestro proceso un objeto Invoke para mandar llamar a nuestro adaptador de base de datos.















Aqui damos doble click sobre el objeto invoke !















Asignamos nuestro partnerlink que acabamos de crear
DAGetSQLResult














Creamos variables de entrada y de salida.




























Hasta este punto tenemos el adaptador de base de base datos configurado y el objeto invoke que lo mandara ejecutar, ahora es necesario modificar el esquema de entrada y salida de los datos de acuerdo a la consulta SQL que hemos generado.


Modificacion de esquema de entrada y salida de acuerdo a los datos de entrada y salida de nuestra consulta SQL.

Seleccionamos BPELProcSQLTest.xsd de nuestro Application Navigator , este esquema lo tenemos que modifcar para que muestre y solicite los datos que requerimos.


Datos de Entrada
PPT_INTERCIA string


Datos de Salida
PPT_ANIO number
PPT_ULT_USU string
PPT_INTERCIA string

Esquema Original















Esquema ya modificado.





























Listo ahora , regresamos a nuestro Proceso BPEL y asignamos variabes de entrada y salida de nuestro servicio.

Asignacion de Datos de Entrada ( Copy Operation )

























































Asignacion de Datos de Salida (Append Operation)


























































Listo ya tenemos lo esencial para hacer que nuestro servicio web funcione.

Deploy de nuestro proceso bpel como webservice hacia el OAS

Seleccionamos BPELProcSQLTest - Deploy - IServerDesarrollo - Deploy to Default Domain , si no puedes visualizar toda esta seccion asegurate que tengas configurado un Integration Server configurado hacia la conexion del Oracle Application server.




























Procedemos a verificar nuestro servicio web sobre Oracle Application Server - BPEL Console - BPELProcSQLTest






























Listo se ha creado el servicio web y funcionando correctamente.




ERROR en Oracle Application Server 10g - The requested instance is either invalid or not running (SQL Server Express 2005 & Windows Server 2003 )


Error :

Unable to establish connection. Error message: Exception occurred testing connection. Exception:java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]The requested instance is either invalid or not running

Este error ocurre al probar una conexion sobre una base de datos SQL Server Express 2005.












La solucion a este problema es

1.- Descargar Microsoft SQL Server JDBC Driver 2.0
2.- Copiar los archivos en el directorio [DirInstall]\j2ee\oc4j_soa\applib
3.- Reiniciar el Oracle Application Server

[DirInstall]\opmn\bin opmnctl stopall

[DirInstall]\opmn\bin opmnctl startall


Creamos el pool de conexion son los siguientes parametros.

Connection Factory Class : com.microsoft.sqlserver.jdbc.SQLServerDriver
URL: jdbc:sqlserver://[server]\[instancia]:[port];databaseName=[db]


Probamos de nuevo la conexion y deberá funcionar correctamente.









Crear Application Server Connection on Jdeveloper (Mac or Windows)


Abrimos nuestro jdeveloper , nos vamos a la seccion de Connections - Aplication Server , boton derecho - Create New Aplication Server Connection y seguimos el asistente.


Connection name : OAServerConexionTest
Connection Type : Oracle Application Server 10g 10.1.3

UserName: oc4juser
Password : password
DeployPassword : Checked

Host Name : myOASTest.com [Nombre del host donde se encuentra el Oracle Application Server]
OC4J Instance Name : oc4jdefault [El nombre de la instancia OC4J que se desee usar para el deploy del servicio]
OPMN PORT : 6003










































Procedemos a probar nuestra conexion.














Y listo ya tenemos configurado nuestro Application Server Connection

Crear Conexion MS SQL SERVER en Oracle SOA Suite 10.1.3.3.0 (MS Windows Server 2003)

Primero que nada debemos copiar los siguientes archivos msbase.jar, msutil.jar, mssqlserver.jar en el directorio
[soasuiteinstall]\j2ee\oc4j_soa\applib















Hay que reiniciar la instancia oc4j_soa , para que se puedan leer las librerias.

Despues debemos obtener los parametros que corresponden a la conexion a la base de datos , los cuales podemos obtener apartir del algun servicio web que vayamos a deployar en nuestro Oracle Application Server y que use dicha conexion.















location="eis/DB/sqlconexion"
UIConnectionName="sqlconexion" mcf.PlatformClassName="oracle.toplink.internal.databaseaccess.Oracle9Platform" mcf.ConnectionString="jdbc:sqlserver://[server]\[instancia];databasename=Mydb"


Ahora si procedemos a configurar la conexion a SqlServer en nuestro OAS.


1.-Crear Conexion Factory.

Acesamos a nuestro Oracle SOA Suite y seleccionamos Application Server Control






















Despues seleccionamos la instancia OC4J














OC4J - MODULES - DbAdapter , y procedemos a crear una nueva Conexion Factory.



































Aqui procedemos a capturar los valores para la Conexion Factory

dataSourceName= ""
defaultNChar= false platformClassName=oracle.toplink.internal.databaseaccess.Oracle9Platform
sequencePreallocationSize=50
usesBatchWriting=true
usesNativeSequencing=true
xADataSourceName=jdbc/sqlconexion
[Nombre de la conexion obtenida del WSDL que genera el JDeveloper]













Damos aceptar y ya esta lista nuestra Conexion Factory.


2.- Crear Pool de Conexion.


Nos vamos a nuestra instancia OC4J - Administracion - JDBC Resources














Vamos a la seccion de Connection Pools - despues oprimimos Create.












Aqui seleccionamos la aplicacion para la cual vamos a crear el pool de conexion.En este caso orabpel.












Procedemos a capturar los parametros de la conexion.

Name:
sqlconexion_pool
Connection Factory Class : com.microsoft.jdbc.sqlserver.SQLServerDriver
URL:
jdbc:sqlserver://[server]\[instancia];databasename=Mydb
username : usuario
password : password















Procedemos a realizar un test de la conexion y el resultado debe ser que la conexion tuvo exito.









3.- Crear DataSource asociado a un Pool de Conexion

De igual forma nos vamos a Nos vamos a nuestra instancia OC4J - Administracion - JDBC Resources - DataSource y Create

Aplicacion : orabpel
DataSource Type : Managed DataSource











Y procedemos a capturar los datos para nuestro DataSource.

Name : sqlconexion

JNDI Location : jdbc/sqlconexion

Transaction Level : Global & Transactions
Connection Pool : sqlconexion_pool












Procedemos a verificar que nuestra conexion se haya realizado de forma correcta.