miércoles, 25 de marzo de 2009

Nuevos Elementos del Blog!!

Hola amigos, esta semana he agregado dos nuevos elementos al blog, uno que nos permite ver que visitantes tenemos y otro un chat dinamico, espero seguir teniendo sus comentarios, ah mi proxima entrega sera sobre reportes, saludos!
Gracias!

jueves, 12 de marzo de 2009

Web Services y ADF (part 2 cliente)

En este segundo post respecto de web services, veremos la parte del cliente, que mecanismos debemos hacer para poder invocar una web service.
La aplicacion cliente en este caso es swing y cada cierto tiempo, dependiendo de la necesidad, el usuario utilizara esta web service.

1. En nuestro proyecto anterior(el de la web service part 1) generamos un archivo descriptor llamado AppModuleService.wsdl , este archivo debemos copiarlo desde este proyecto y pegarlo en un directorio de nuestro proyecto cliente, preferible en el view.

2. Teniendo este archivo descriptor en una carpeta de nuestro proyecto, procedemos a darle clic derecho al proyecto view / new , seleccionar Web Services/Web Services Proxy, tal como aparece en la figura:



















3. Seguir el asistente, en el siguiente paso solicita carga el archivo AppModuleService.wsdl:



































4. En el siguiente paso podemos seleccionar la opcion, si es el caso, que nuestra web service se esta ejecutando desde un servidor externo.

















5. Luego de finalizado el asistente, el ide nos cargara directamente una clase( la clase AppModuleServiceSoapHttpPortClient ) con un public static void main, que esta invocando a la web service.










Se puede notar en la imagen como es que sea crea el objeto myPort mediante este objeto invocamos los procedimientos de la web service, por ejemplo : myPort.miMetodoWebService(parametros).

sábado, 21 de febrero de 2009

Web Services y ADF

Hola de nuevo, que dias de verano intensoss, hace falta una tarde de playa y viento fresco, me espera cerro azul.
Bien a lo que vinimos, las web services, al principio pense que seria uno de esos temas largos, pero realmente es sencillo, tanto la programacion de la web service en si, como tambien la invocacion posterior de este servicio en un cliente.
Para este caso, primero les explico el contexto del problema y la solucion urgente que me solicitaron, si no el negocio se venia abajo.

Teniamos problemas con nuestro proveedor de internet, asi que en este caso nuestro portal iba y venia y en el camino se detenia, bueno y tenemos muchos locales(clientes) que necesitan del portal para poder registrar su informacion.

Asi que era necesario desarrollar una aplicacion local para cada cliente que permitira registrar la data, en una base mysql(cada cliente tendria su propia bd), claro , tambien debia de actualizarse mediante web services el inventario de estas bases de datos locales mysql.
Bueno al final del dia, el aplicativo local de cada cliente, debia de subir todo lo registrado desde la bd mysql hacia la base de datos central oracle.Claro nuestra base de datos central es Oracle, entonces la web service debia ser invocada por cada cliente para subir toda esta data.

Solucion.
1. Herramientas y Framework
IDE JDeveloper 10
Oracle 10g (para servidor central)
Mysql 5 (para clientes externos)
ADF BC (inevitable el blog trata sobre esto, pero realmente se podria tambien desarrollar con DAO o EJB).
Swing (El aplicativo local para cada cliente lo desarrolle en swing)

2. Procedimiento.
Bueno a desarrollar la web service:
2.1 Crear un proyecto con el template de ADF BC, colocarle de nombre WebService:





2.2 Ahora, debemos crear las EntityObject y ViewObjects que creamos convenientes, para esta demo solo creare una ViewObject en tiempo de ejecucion que se encargara de leer un campo de una tabla determinada, y luego almacernarlo en un array. Todo este procedimiento debemos programarlo en el AppModule, tal como sigue:

public ArrayList getTraerDatos(){

ArrayList lista=new ArrayList();

String sqlsec="select miCampo from miTabla";

ViewObject vsec = this.createViewObjectFromQueryStmt("",sqlsec);

while(vsec.hasNext()){
Row row=vsec.next();
lista.add(row.getAttribute(0));
}

vsec.clearCache();
return lista;

}


2.3 Bueno ahora debemos de colocar este procedimiento como visible por los clientes a nivel de AppModule, por ello:






2.4 Ahora vamos a crear la web service, darle clic al check de "remoteable Application Module" y luego darle doble clic al AppModule y en la opcion Remote, seleccionar "J2EE WebService", debera tener finalmente la siguiente vista:




2.5 Luego de darle aceptar, vamos a notar que aparece los siguientes elementos claves:



a) El deploy (WebServices.deploy) necesario que subiremos a nuestro servidor web.
b) El archivo XML (AppModuleService.wsdl) que tiene la especificacion de nuestra web service y que necesitara el cliente para poder recibir los servicios.

2.6 Debemos levantar el OC4J embebido que tenemos por defecto, (otra opcion seria ya levantarlo directamente en un servidor web), ir a la carpeta raiz de nuestro JDeveloper,clic a JDEV y luego al bin!, para terminar darle doble clic start_ocj4.bat

2.7 Se levanta una consola, que solicita una contraseña, escribir "welcome" y listo, el servicio esta levantado.

2.8 Bueno crearemos una conexion a nuestro oc4j desde el JDeveloper, vamos a la seccion de "Connections", clic derecho a la carpeta "Application Server", nuestra conexion la vamos a nombrar "CNLocal" luego seguimos el asistente, en el paso 2 nos solicita un user y un password, el user por defecto es "oc4jadmin", de contraseña le colocamos "welcome":




Dar next, al siguiente asistente , dar clic al boton "test" y si todo ha sido correcto en nuestra configuracion nos dara un success!!, finalmente clic al boton terminar

2.9 Para deployar nuestra web service en el oc4j, volvemos a nuestro proyecto en JDeveloper y le damos clic derecho al archivo WebServices.deploy, seleccionamos Deploy to/ "CNLocal".

Luego de este paso ya nuestro servicio web debe estar publicado y visible por los usuarios de nuestra red.

2.10 Como paso final vamos a visualizar la web service, darle doble clic al archivo: AppModuleService.wsdl , en la parte final del codigo xml aparece:





Ese atributo location nos muestra una direccion web que debemos copiar y pegar en nuestro navegador:


miércoles, 28 de enero de 2009

Aplicacion completa en ADF BC utilizando JDeveloper

En este apartado aprenderemos a crear una aplicacion completa web, partiremos del hecho de crear una plantilla general para todas las paginas y luego iremos armando los procedimientos que tendran, utilizando el asistente de ADF BC, asi como tambien procedimientos personalizados que ya hemos revisado antes.
Para descargar el archivo pdf da click al siguiente link:

Mantenimiento de una aplicacion en ADF BC

Esta segunda parte de transacciones explica como realizar transacciones, pero a diferencia del anterior post, esta vez realizaremos las transacciones a traves de ViewObjects.
Para descargar la aplicacion da click al siguiente link:
http://uploading.com/files/78a7a74m/lab-03-jc.pdf/

Insercion de registro personalizada en ADF BC

Bueno ahora en este pdf tratare de explicar como realizar una transaccion (esta transaccion puede ser una insercion, actualizacion o eliminacion) personalizada instanciando a una Entity Object y seteandole parametros en un procedimiento del AppModule.
Para descargar el pdf da click al siguiente link:
http://uploading.com/files/fb1dca83/lab-02-jc.pdf/

martes, 27 de enero de 2009

Manejo de Backing Bean en JDeveloper

Hoy me di cuenta que hace casi un año habia creado este blog y no habia posteado aun los articulos que tenia pendientes, este es un pdf que realice para explicar de manera sencilla como manejar los backing bean en JSF, en un entorno JDeveloper 10g.
Espero que pueda ayudarlos.
Javier.
Saludos!

Para bajar el pdf da click al siguiente link: