domingo, 22 de junio de 2008

oo: ObjectOry y OOSE

ObjectOry es una metodologia basada en el paradigma de orientacion a objetos, creada por la compania Objectory Systems, fundada en 1987 por Jacobson. Es una extension de lo que se conoce como Metodo Ericsson, un lenguaje de modelado de objetos creado por la compania Ericsson.

Durante 1991, Ericsson adquiere gran parte de Objectory Systems, creando la subsidiaria Objectory AB. En 1995, Rational Software Corporation adquiere dicha subsidiaria.

Object-Oriented Software Engineering (OOSE) es la metodologia para el analisis y diseno de software desarrollada por Jacobson en 1992 durante su participacion en la compania Objectory AB. Es la primera metodologia que emplea Casos de Uso en el analisis de software.

Cuando en 1995 Rational Software Corporation adquiere Objectory AB, OOSE es empleado como parte de la base que funda lo que se conoce como Rational Unified Process (RUP).

Vinculos:

oo: Object Modelling Technique (OMT)

OMT es un lenguaje de modelado de objetos orientado al analisis y diseno de software. Fue creado durante 1991 por Rumbaugh, entre otros, como una herramienta para el desarrollo de sistema basados en el paradigma de orientacion a objetos.

OMT es el predecesor de Unified Modelling Language (UML) y muchos elementos introducidos por OMT fueron heredados por UML.

Vinculos:

jueves, 19 de junio de 2008

ws: Mecanismo de invocacion de un Web Service

Invocacion en el servidor
  1. El mensaje SOAP es recibido desde el transporte (HTTP, JMS).
  2. Los manejadores de mensajes que se encargan del preprocesamiento de los mismos son invocados (persistir mensajes, analizar el encabezado, etc.).
  3. Determinar el servicio del mensaje (que operacion del WSDL invoca el mensaje).
  4. Para la operacion del WSDL, determinar el metodo a invocar en la clase Java apropiada. A esta clase se la llama Java target y a este proceso se lo conoce como dispatching.
  5. Entregar el mensaje SOAP al sub-sistema encargado de la serializacion para que lo deserialice en objetos Java que seran pasados como parametros al Java target.
  6. Invocar el Java target usando los parametros generados por el sub-sistema de serializacion y obtener el objecto Java retornado.
  7. Entregar el objeto Java retornado al sub-sistema de serializacion para ser serializado en XML segun lo especificado por el WSDL para el mensaje de retorno.
  8. Encapsular en un mensaje SOAP el XML generado a partir del objeto Java retornado, segun lo especificado por el WSDL para el mensaje de retorno.
  9. Entregar el mensaje SOAP al transporte para ser enviado al cliente.
Nota: Si ocurre una excepcion durante este proceso, la misma debe ser encapsulada en un mensaje SOAP del tipo fault y enviada al cliente.

Invocacion en el Cliente
  1. Se crea una instancia de la clase que implementa la interfaz Java para el endpoint del Web Service (SEI). El sub-sistema de invocacion emplea algun factory para crear instancias de SEI (Service Endpoint Interface). Las instancias se crean en el momento de ejecucion o se obtienen mediante JNDI. Las instancias SEI son implementadas usando proxies Java y manejadores de invocacion (invocation handler).

jax-ws: Que es y que mejora sobre JAX-RPC

Que es JAX-WS?

JAX-WS no es un entorno para el desarrollo de aplicaciones SOA sino que es un conjunto de herramientas que facilitan las tareas requeridas para consumir y desarrollar Web Services, los componentes de un entorno distribuido basado en SOA.

Mejoras introducidas por JAX-WS

Algunas de las mejoras introducidas por JAX-WS sobre su predecesor JAX-RPC son las siguientes:
  • Especificacion simplificada
  • Mejoras en el mapeo WSDL a Java
  • Soporte para endpoints REST
  • Reemplazo del data binding de XML Schema a Java por JAXB 2.0
  • Uso de annotations para controlar la creacion del WSDL a partir de la interfaz Java
  • Deployment descriptors eliminados por el uso de annotations
  • Introduccion de las interfaces Dispatch y Provider para manejo directo de XML salteando el data binding de JAXB
Los datos presentados en este articulo fueron extraidos del libro "SOA Using Java Web Services" by Mark D. Hansen.

viernes, 6 de junio de 2008

agile: Introduccion a metodologias agiles

Los comienzos de lo que hoy son las metodologias agiles se fundan en XP (Extremme Programming) a fines de la decada del 90.
XP pone enfasis en:
  • Pruebas de unidad (Unit testing)
  • Programacion de a pares (Pair programming)
  • Simplificacion de la recopilacion de requerimientos
XP surgio como alternativa a la dupla UML/RUP, ya que el analisis y modelado requerian demasiado esfuerzo, y los resultados no eran satisfactorios, en el promedio de los casos.

XP fue gratamente recibido por:
  • Programadores/Desarrolladores: Menos demoras, productos utilizables y cercanos a las necesidades de los usuarios
  • Marketing/Duenos del Producto: Menor tiempo de desarrollo, aumento en la calidad del producto
Partiendo de la base de XP, Agile busca:
  • Incrementar la frecuencia de las iteraciones
  • Permitir que el equipo de trabajo defina las fechas de entrega
  • Producir software utilizable
  • Incorporar requerimientos en forma paulatina
Vinculos:

martes, 27 de mayo de 2008

spring: Publicar miembros static

La documentacion de Spring framework explica claramente como hacerlo. Lo que debe hacer es utilizar el FieldRetrievingFactoryBean, que es un FactoryBean especifico para realizar esta tarea.
< id="field" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
< name="staticField" value="">
o
< id="" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
A partir de Spring 2.0 es posible hacerlo tambien de la siguiente manera:
< field="">
Vinculos:

soapui: Cliente para consumir un Web Service con Apache CXF

SoapUI ofrece una interfaz a la herramienta de consola wsdl2java incluida en la distribucion de Apache CXF.

Configuracion de Apache CXF en SoapUI

Asegurece de disponer de SoapUI y Apache CXF instalados en su sistema. Verifique que SoapUI dispone de la configuracion requerida para ejecutar las herramientas provistas por CXF. Para hacerlo, acceda al menu File -> Preferencies en SoapUI y aparecera la ventana de preferencias. Active la solapa con el nombre "Tools" como se muestra en la imagen:

Para el item CXF 2.x ingrese la ubicacion donde se encuentra instalado Apache CXF y luego presione el boton "Ok".

Una vez que CXF esta configurado en SoapUI es posible comenzar con el proceso de generacion de codigo.

Generacion de codigo con CXF mediante SoapUI

En SoapUI, seleccione el menu Tools -> Apache CXF y la siguiente ventana aparecera:

La solapa que aparece activa es la primera, con el nombre "Basic". Introduzca la ubicacion del WSDL, local o remoto, y especifique la ruta donde el codigo generado es alojado. Seleccione la ultima opcion, "All Code", para generar todo el codigo posible.
Luego active la solapa "Advanced" que tiene la siguiente apariencia:

Asegurese de seleccionar la opcion "Compile" y especifique la ubicacion donde las clases compiladas seran alojadas.
Solo resta presionar el boton "Generate" y una ventana mostrando el progreso de la generacion de codigo aparecera:

Al finalizar el proceso, aparecera un mensaje informandolo:

Podra encontrar en las ubicaciones configuradas el codigo fuente generado a partir del WSDL y la compilacion.

Vinculos:

jueves, 22 de mayo de 2008

soapui: Configurar Apache TcpMon en SoapUI 2.0

Configurar SoapUI para ejecutar TcpMon

Seleccione el menu File -> Preferencies y podra observar la ventana de preferencias de SoapUI. Active la solapa "Tools", para poder configurar la ubicacion de TcpMon:

Para definir la ubicacion de TcpMon, presione el boton "Browse" y busque en el sistema de archivos. Puede observar en la figura como TcpMon fue configurado en la ubicacion:
C:\tcpmon-1.0-bin
En la version 2.0 de SoapUI la forma de configurar TcpMon es igual, solo cambiar la distribucion de las solapas en la ventana de preferencias:

Luego, para ejecutar TcpMon desde SoapUI seleccion el menu Tools -> Launch TcpMon.

Vinculos:

miércoles, 14 de mayo de 2008

wtp: Configurar Tomcat como Server Runtime en Eclipse

Instalar WTP

Para comenzar, debera disponer de WTP instalado en su entorno Eclipse. De no ser asi, hagalo antes de continuar.

Instalar Tomcat

Debido a que se agregara Tomcat como Server Runtime, es necesario que tambien disponga de alguna de las versiones disponibles de este contenedor de servlets. De no ser asi, instale una primero. En este caso se trabajara con la version 6.

Configurar Tomcat como Server Runtime

Acceda al menu Window -> Preferencies para comenzar con la configuracion de Tomcat como Server Runtime:


Localice el item "Server" y expandalo. Seleccione entonces la opcion "Installed Runtimes":


Presione el boton "Add..." para agregar un nuevo Server Runtime, una nueva ventana aparecera:


Localice el item "Apache" y expandalo, seleccione luego la opcion "Apache Tomcat v6.0" y presione el boton Next. La siguiente pantalla del wizard aparecera:


Configure el directorio de instalacion de Tomcat presionando el boton "Browse..." y buscando en el arbol de directorios la ubicacion. Luego presione el boton "Finish". Podra observar entonces en la ventana de Preferencias que Tomcat 6 aparece listado como un Server Runtime instalado.
Presione "OK" para finalizar y proceder a comprobar la instalacion.

Ejecutar Tomcat desde Eclipse

Acceda al menu Window -> Show View -> Other para seleccionar la vista de servidores:


Una vez que la ventana "Show View" aparece, localice en la lista de vistas la que tiene el nombre "Server" y expandala. Seleccione alli la opcion "Servers" y presione el boton "OK":


Podra observar que la vista de servidores aparece en la parte inferior de Eclipse:


Presione luego el boton de inicio para ejecutar Tomcat desde Eclipse. La barra de estado mostrara el progreso de la tarea mientras que la columna "State" de la vista de servidores mostrara la leyenda "Starting...".
Si Tomcat se ejecuta exitosamente, podra observar que la columna "State" muestra la leyenda "Started".
En la vista "Console" debera encontrar la salida generada por Tomcat durante el proceso de inicio. La ultimas lineas deberan ser similares a las siguientes:
May 15, 2008 1:19:29 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 2577 ms
Vinculos:

lunes, 12 de mayo de 2008

soa: Que es y porque

SOA es el paradigma que permite crear sistemas distribuidos escalables y mantener su flexibilidad a medidad que crecen. Ademas permite acortar la brecha entre quienes estan mas cerca del negocio y quienes estan mas cerca de la tecnologia.

SOA se nutre de los siguientes elementos:
  • Servicios
  • Infraestructura
  • Politicas y procesos
Los sistemas distribuidos integrados mediante SOA tienen las siguientes caracteristicas:
  • Contienen codigo legacy: SOA no implica empezar de nuevo
  • Son heterogeneos: Diversas plataformas, lenguajes de programacion, etc. conviven
  • Son maduros: El sistema y los datos que administra han evolucionado con el tiempo
  • Son complejos
  • Tiene diversos duenos: Distintos equipos, organizaciones, presupuestos, calendarios, etc.
  • Son redundantes: Parte necesaria, parte accidental.
Los conceptos presentados en este articulo fueron extraidos del libro "SOA in Practice: The Art of Distributed System Design (Theory in Practice)" by Nicolai M. Josuttis.

Vinculos:

tptp: Instalacion del runtime de TPTP en Eclipse

Descargue el runtime de TPTP desde el sitio de Eclipse. Luego emplee la facilidad de Eclipse llamada "Software Updates" para instalar el runtime. Mediante el menu principal seleccione Help -> Software Updates -> Find and Install..., como se muestra en la imagen:


Debera definir un nuevo sitio local, presionando el boton "New Local Site". Seleccione la ubicacion donde se encuentra el runtime de TPTP y agreguele al sitio un nombre significativo, como se observa en la imagen:


Luego presione el boton "OK" para continuar y que Eclipse detecte las dependencias a instalar. Seleccione el runtime de TPTP, como se muestra en la imagen:


Seleccionando la opcion "Filter features included in other features on the list" puede eliminar aquellas dependencias que ya se encuentran instaladas en Eclipse. Luego debera presionar el boton "Next" para continuar con el wizard. En la siguiente ventana, que es la que se muestra en la imagen, debera aceptarlos terminos de uso del software que esta instalando:


Continue con el wizard presionando la boton "Next" nuevamente para acceder a la siguiente ventana en la cual se muestra un resumen de las dependencias de TPTP que se instalaran, asi como la ubicacion y el espacio disponible en la unidad, como se muestra en la siguiente imagen:


El ultimo paso consiste en presionar el boton "Finish", Eclipse instalara las dependencias y luego debera reiniciarlo para que los cambios tomen efecto.

Vinculos:

jueves, 8 de mayo de 2008

pde: Ejemplo sencillo de plug-in para Eclipse

Crear el proyecto

Para comenzar, es necesario crear un nuevo proyecto en Eclipse. Para hacerlo acceda al menu File -> New -> Other. Busque el item "Plug-in Development", expandalo y seleccione la opcion "Plug-in Project", como se muestra en la imagen:


Una vez que haya efectuado la seleccion mencionada, presione el boton "Next", para continuar con el wizard.
Ahora es necesario darle un nombre al proyecto. Puede utilizar el nombre que mas le guste, pero lo usual es usar la convencion empleada para nombrar paquetes. En este caso el nombre del proyecto sera: org.sample.plugin.helloworld, como puede observar en la imagen:


Las opciones restantes en la ventana de "Plug-in Project" pueden quedar con los valores por defecto. Presione entonces el boton "Next" para continuar adelante con el wizard.
Podra observar entonces la ventana para especificar el contenido del plug-in, llamada "Plug-in Content". De las opciones presentadas, solo es necesario que complete el correspondiente a "Plug-in Provider", ya que no es autocompletado por el wizard:


Seleccione el valor "No" para la opcion "Would you like to create a rich client application". Excepto esta option, las demas pueden ser alteradas posteriormente.
En el marco de "Plug-in Options" aparece algo llamado "activator". Esto es una clase que controla el ciclo de vida del plug-in, permitiendo inicializar el plug-in con los recursos que requiere, asi como liberarlos cuando el plug-in ya no es utilizado. El activator es generado por Eclipse, y por defecto extiende la clase "AbstractUIPlugin", ofreciendo como interfaz los metodos start y stop, entre otros.

Continue con el wizard presionando el boton "Next". Observara entonces la ventana "Templates":


Asegurece que la opcion "Create a plug-in using one of the templates" este activada y seleccione de la lista de templates el que tiene el nombre "Hello, World", como se muestra en la imagen anterior. En el cuadro de la derecha podra observar una breve explicacion de que contenidos agrega el template seleccionado. Para continuar con el wizard presione el boton "Next".

Ahora debera definir el "action" que sera ejecutado cuando alguno de los controles introducidos por el template sea utilizado. En la siguiente ventana del wizard, llamada "Sample action Set", podra especificarlo:


Todos los campos son autocompletados por Eclipse, pero puede cambiarlos a gusto. Luego debera presionar el boton "Finish" para terminar con el wizard y acceder al proyecto.

Podra observar que el proyecto queda conformado de la siguiente manera:


Configuracion del plug-in

El proyecto recien creado consta de un directorio llamado META-INF donde podra encontrar el archivo MANIFEST.MF. Al abrirlo podra observar una serie de solapas, siendo la activa la solapa "Overview". Alli puede modificar datos generales asociados al plug-in y tambien realizar una ejecucion de prueba.


Active la solapa "Extensions" y observe que la unica extension que aparece en el marco "All Extensions" es "org.eclipse.ui.actionSets":

Expanda todos los elementos que la componen y asegurece que cada uno de ellos tenga asignado los valores que usted desea. Si no los cambia el plug-in funcionara igual, pero el nombre del menu y de la opcion de menu, asi como el contenido del tooltip, seran los definidos por defecto.

Configure el nombre del menu, correspondiente a la propiedad "label", activando el item "(menu)" del "(actionSet)", como se muestra en la figura:


Configure el nombre de la accion, correspondiente a la propriedad label, y el contenido del tooltip, activando el item "(action)" del "(actionSet)", como se muestra en la figura:


Probando el plug-in

El plug-in recien configurado puede ser ejecutado sin necesidad de exportarlo e instalarlo. Para hacerlo active la solapa "Overview" y ejecute la opcion "Launch an Eclipse application" que se encuentra en el marco llamado "Testing":

Observara que una nueva instancia de Eclipse se inicia. Podra ver en el menu principal un nuevo item llamado "Hello Menu" y un nuevo boton, con el icono de Eclipse, en la botonera principal:


Tanto al presionar el boton, como al seleccionar el item "Hello Action" del menu "Hello Menu", la accion configurada es ejecutada. En este caso podra observar que una nueva ventana aparece:


Finalmente, apoye el puntero del raton sobre el nuevo boton y podra observar como se depliega el tooltip asociado al mismo:


Eclipse requiere de un espacio de trabajo para ejecutarse correctamente. La instancia de Eclipse que es iniciada para la prueba del plug-in crea en el directorio "home" del usuario un directorio de trabajo cuyo nombre incluye el nombre dado al proyecto para el desarrollo del plug-in. En este caso el directorio generado tiene el nombre runtime-com.example.helloworld.application.

Conociendo las bases del desarrollo de plug-ins para Eclipse, ya puede comenzar a crear plug-ins mas sofisticados para automatizar las tareas diarias.

Vinculos: