domingo, 28 de abril de 2013

MANEJO WEBLOGIC SHARED LIBRARIES PARA SPRING 3.

El empaquetado de las librerías en JAVA normalmente se realiza de la siguiente manera:

1. Introduciendo los JARs dentro del WEB-INF/lib de la aplicación.
2. Referenciando la ubicación de los JARs a una ruta externa y especifica del servidor de aplicaciones.

Ambas modalidades son aceptadas pero a medida que el número de aplicaciones aumenta se debe de realizar mejoras en cuanto al manejo del número de librerías debido a que muchos de los frameworks que son manejados e integrados requieren de un gran número de JARs diferenciados por versión y muchas veces se puede perder el control de dichas versiones y a la vez se llegar a la sobrecarga del servidor de aplicaciones debido al gran tamaño de los EARs desplegados ya que se insiste en tener los todos JARs embebidos en las aplicaciones.

Para solucionar esto se requiere detallar concepto de las Weblogic Shared Libraries que en si consiste en compartir librerías (grandes cantidades) con las aplicaciones desplegadas en el servidor (EARs y WARs). Esta característica es muy buena que nos permite referenciar entre aplicaciones las librerías desplegadas en el servidor y así no utilizarlas sin la necesidad de recargar las aplicaciones embebiendo todo en WEB-INF/lib.

En esta oportunidad mostraré un ejemplo completo de cómo:

1- Crear una Weblogic Shared Library (Utilizaremos el Framework Spring 3).
2- Desplegar una Weblogic Shared Library.
3- Configurar y referenciar una Weblogic Shared Library usando ECLIPSE y JDEVELOPER.
4- Probar la solución mediante una APP con SOAPUI.


Debido que el tutorial es bien extension he visto conveniente mejor adjuntar el tutorial para que se aprecio mejor el detalle paso a paso de cada configuración:

- Para DESCARGAR el "Tutorial paso a paso", dar click: AQUÍ
- Para DESCARGAR las 3 version es de "Shared Libraries" (WARs) para Spring 3, dar click: Lib_Spring 3.0.5, Lib_Spring 3.1, Lib_Spring 3.2.2


 

domingo, 21 de abril de 2013

CREACIÓN DE SERVICIO WEB CON ‘SERVICE CONTROL’ BASADO EN ‘JAX-RPC’

Hola en esta oportunidad brindaré el siguiente tutorial que mostrará el manejo de SERVICE CONTROLs relacionado a servicios Web con JAX-RPC, desplegados en Servidores de Aplicación Oracle WebLogic 10 y sobre una IDE “Oracle WorkShop  10.4 for Weblogic”.

El escenario a simular es el desarrollo de un WebService que internamente contendrá un flujo para completar la información requerida consumiendo dos servicios web de tipo Proxy.

Estos servicios Proxy son los siguientes y serán iniciados vía un Mock Services con SoapUI:

- http://localhost:8088/mockObtenerDatosBinding?wsdl
- http://localhost:8088/mockObtenerTecnologiaBinding?wsdl

PASOS
:


1. DESPLEGAR SERVICIOS EXTERNOS:

Iniciamos los Mock Services del SoapUI:

•    ObtenerDatosBinding_PROXY.wsdl   (WSDL)
•    obtenerDatos_lib.xsd  (XSD)
•    ObtenerTecnologiaBinding_PROXY.wsdl    (WSDL)
•    obtenerTecnologia_lib.xsd   (XSD)

Con los WS externos ya iniciados procedemos a crear el WS project.


2.  CREAR UN WEB SERVICE PROJECT EN WORKSHOP:

- Abrir la IDE: Oracle workshop for Web Logic.
- Hacer  clic derecho en el explorador de proyectos y seleccionar: 
File/New/Other/Web Service/WebService Project

- Ingresar el nombre del proyecto: DummyExceptionWS, luego en las de la pantalla seleccionar   ‘Annotated Web Service Facets JAX-RPC’  y haga click en el botón siguiente, siguiente y luego Finalizar.
- Vamos a Crear a WebService en modo: Top-Down (Teniendo el .WSDL ya creado), ya que es una buena práctica. Para ello sobre el .WSDL del damos:
click derecho/WebServices/Generate Web Service

Asignamos el nombre del paquete donde se creará la clase pública del  WS: pe.com.dummyException.ws

Se creará la clase:  ControlExceptionPortTypeImpl tendrá una interfaz GRÁFICA donde se mostraran los métodos de dicho WS.

Las librerías COMPARTIDAS (Shared), solo deberán apreciarse 2:  beehide-control y weblogic-controls

Así mismo dentro de:  DummyExceptionWS\WebContect\WEB-INF\lib, se creará un .jar que contendrá  las clases no públicas y no modificables del     WebService creado.


3.  CREANDO UN WEB SERVICE CONTROL:
 En el sourceFolder src creamos 2 paquetes:

 pe.com.dummyException.proxy 
(Dentro se ubicaran los .WSDL y .XSD de los proxy externos)   
 pe.com.dummyException.control  (Dentro de ubicaran los SERVICE CONTROL de cada proxy externo)
 Ahora ubicamos los .WSDL y .XSD de los PROXY externos dentro del paquete: pe.com.dummyException.proxy    

 En base a cada .wsdl de los WS externos, generamos las clases SERVICE CONTROL: Click derecho sobre el:  wsdl/WebService/Generate Service Control
- Asignamos los Types de tipo JAX-RPC:
- Se creará dentro de la carpeta .lib un .jar:
  ObtenerDatosBinding_PROXY_JAXRPC.jar


Dentro del sourceFolder: pe.com.dummyException.control, creamos la clase controladora:  ObtenerDatosControl.java


"Este paso hacerlo para cada WS Externo que se tenga".
       
 4. CREANDO LA CLASE HELPER:
Crearemos una clase Helper de ayuda que contendrá los setters y getters del objeto de control de servicios.

Para ello creamos un SourceFolder llamado:  pe.com.dummyException.helper

Las clases las llamaremos:
•    ObtenerDatosHelper
•    ObtenerTecnologiaHelper



5.  IMPLEMENTAR EL WEB SERVICE:
Con los WebService Externos (Proxy), ya mapeados, con sus Service Control y Hepers ya creados, procedemos a implementar el flujo del ServicioWeb:

Ingresamos a la clase: ControlExceptionPortTypeImpl.java y al método:  controlException y dentro ingresamos toda la lógica:


6.  DESPLEGAMOS EL WEB SERVICE:
- Generamos el .EAR llamado: DummyExceptionWS_EAR.ear
- Ingresamos a la CONSOLA ADMINISTRATICA Weblogic:

http://192.168.1.33:7001/console/login/LoginForm.jsp
-    USER:             weblogic
-    PASSWORD:  weblogic

Ingresamos en el árbol en: Deployments, pulsamos Instalar y buscamos la ruta del .EAR, luego Next:

- Pulsamos Next:
- Pulsamos Finish:
- Ingresamos dentro del .EAR y entramos al Web Service:
- Ingresamos a la pestaña:  Testing:

Mostramos la URL del WS creado es la siguiente:

http://192.168.1.33:7001/DummyExceptionWS/ControlExceptionPortTypeImpl?wsdl



7.    PROBAR EL WEB SERVICE DESPLEGADO:
       Ingresamos los dos datos requeridos y ejecutamos.

       Finalmente, mostramos los LOGs respectivos de los PROXYs consumidos:
--------------- DENTRO DEL MÉTODO: [controlException] - [INICIO] ---------------
vIdTransaccion: [5214952]
vTelefono: [41816133]
--------------- DENTRO DEL MÉTODO: [getObtenerTecnologiaPROXY] - [INICIO] ---------------
URL: [http://localhost:8088/mockObtenerTecnologiaBinding?wsdl]
TIMEOUT: [10000]
XML 'ObtenerTecnologia' [REQUEST]: [externalcompany.com.pe.bean.obtenertecnologiaws.ObtenerTecnologiaInput@ed301f]
XML 'ObtenerTecnologia' [RESPONSE]: [externalcompany.com.pe.bean.obtenertecnologiaws.ObtenerTecnologiaInput@ed301f]
--------------- DENTRO DEL MÉTODO: [getObtenerTecnologiaPROXY] - [FIN] ---------------

--------------- DENTRO DEL MÉTODO: [getObtenerDatosPROXY] - [INICIO] ---------------
URL: [http://localhost:8088/mockObtenerDatosBinding?wsdl]
TIMEOUT: [10000]
XML 'ObtenerDatos' [REQUEST]: [externalcompany.com.pe.bean.obtenerdatosws.ObtenerDatosInput@109efc2]
XML 'ObtenerDatos' [RESPONSE]: [externalcompany.com.pe.bean.obtenerdatosws.ObtenerDatosOutput@10aef1d]
--------------- DENTRO DEL MÉTODO: [getObtenerDatosPROXY] - [FIN] ---------------
--------------- DENTRO DEL MÉTODO: [controlException] - [FIN] ---------------


- Para descargar el tutorial completo paso a paso dar click: AQUÍ
- Para descargar las fuentes del dummy dar click: AQUÍ


martes, 26 de febrero de 2013

MANEJO DE 'SCRIPTS' CON 'WLST'.

 
Buen día en esta oportunidad mostrare una solución para la administración de SERVERs en este escenario de automatización de tareas en Oracle WebLogic, en si de los problemas de tiempo en la instalación y eliminación de .EARs y .WARs mediante la interface que Servidor de Aplicación nos brinda. Otro problema encontrado es que para las instalaciones y eliminación solo permite una aplicación a la vez y esto quita aún más el tiempo de administración por parte de los administradores del server.


La solución que vengo a mostrar es el control en si por medio de Scripts, estos Script son de tipo Jython con WSLT a modo Online (conexión con el servidor). Estos funcionan ya que el lenguaje maneja métodos internos que simulan y ejecutan las acciones conocidas que uno como administrador del server realiza: INSTALL, DEPLOY, ACTIVE, EDIT, SAVE, etc. Y al ponerlos todos dentro de un Script se ejecutan de manera ordenada y rápida.


Básicamente, lo que WLST nos ofrece es un entorno de scripting para gestionar los dominios de WebLogic basado en Jython (implementación de python en java).  Al ejecutar la consola de WLST tendremos un intérprete de Jython con una serie de funciones predefinidas para administrar WebLogic, de forma que podremos arrancar o parar servidores, crear JDBC pools…lo que sea.



REQUERIMIENTOs:

Para poder probar este ejemplo preparado requieren:


     -    IDE ECLIPSE v3.7
-   
PLUGIN PyDev  for ECLIPSE:
     (FIND and INSTALL: '
http://org.python.pydev.jython')
-   
Oracle Enterprise Pack for Eclipse:
      (
FIND and INSTALL: http://download.oracle.com/otn_software/oepe/juno )


El Dummy preparado consta de lo siguiente:


1-      TRES ARCHIVOS (SCRIPT) CON EXTENSIÓN .py:
Estos archivos son los que contienen la lógica para la ejecución de los procesos de INSTALL, DELETE, ALL_IN_ONE (UPDATE) a ejecutar.


·  allinOneAppWLST.py
·  deleteAppWLST.py
·  installAppWLST.py


2-    TRES ARCHIVOS (SHELLS) CON EXTENSIÓN .sh:
Estos archivos son los que requerieren los .py para su ejecución via un entorno UNIX (Los .sh llaman y ejecutan a los .py)


·  allinOneAppWLST.sh
·  deleteAppWLST.sh
·  installAppWLST.sh


3-    UN ARCHIVO (PROPERTIES) CON EXTENSIÓN .properties:
Este archivo en el archivo de configuración de parámetros comunes a reutilizar por los archivos .py.


·   parametros.properties

PASOS:
Los pasos realizados para la prueba desde la IDE, son los mostrados a continuación:

- Importar proyecto a ECLIPSE:
- Verificar Scripts .py:
- Verificar Scripts .sh:

- Verificar el Servidor Weblogic (Que no existan los EAR, para mostrar el ejemplo):

- Ejecutar el Script .py:

- Verificar la traza del LOG  ejecutado correctamente:

- Verificar los .WAR o .EAR desplegados correctamente:

Para descargar el dummy dar click:  AQUÍ
Es todo por el momento.

Saludos.