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:

miércoles, 30 de abril de 2008

easymock: IllegalStateException y matchers

Una excepcion arrojada frecuentemente por EasyMock es la siguiente:
java.lang.IllegalStateException: 2 matchers expected, 1 recorded.
En particular, esto ocurre cuando un metodo de un objeto es invocado sin configurar previamente un matcher para cada argumento.
En general, para un metodo que posee n argumentos, EasyMock espera n matchers, en caso que, para alguno de esos argumentos, un matcher sea utilizado.

Observe el siguiente codigo:
public class Prueba {
public void metodo(String arg1, int arg2) {}
}
Al crear un mock para la clase prueba, se configurar la invocacion del unico metodo que posee, de la siguiente manera:
Prueba p = EasyMock.createControl().createMock(Prueba.class);
p.metodo(isA(String.class), 0);
Al ejecutar el codigo anterior, EasyMock arrojara una IllegalStateException, como la descripta al comienzo. Esto se debe a que isA es un matcher y no todos los argumentos en la configuracion del metodo utilizan matchers.
Modificando la configuracion para la invocacion del metodo de la siguiente manera:
p.metodo(isA(String.class), anyInt());
el codigo ejecutara sin inconvenientes, ya que todos los argumentos del metodo estan configurados empleando matchers.

Vinculos:

jueves, 24 de abril de 2008

jmx: Ejemplo con "Hola mundo!"

MBean para Hola Mundo!

En principio, es necesario crear una interfaz, que comience con el nombre de la clase que se desea administrar, seguida por el sufijo MBean. Esto permite generar un MBean estandar, el cual es inspeccionado por JMX mediante reflexion para exponer aquellos que. El codigo presentado a continuacion corresponde a la clase HelloMBean.java:
package test.jmx.sample1;

public interface HelloMBean {

public void setMessage(String message);

public String getMessage();

public void sayHello();
}
A continuacion, es necesario crear la clase que implementa la interfaz antes presentada. El siguiente codigo corresponde a la clase Hello.java:
package test.jmx.sample1;

public class Hello implements HelloMBean {

private String message;

public Hello() {
this.message = "Hello there";
}

public Hello(String message) {
this.message = message;
}

public String getMessage() {
return this.message;
}

public void sayHello() {
System.out.println(this.message);
}

public void setMessage(String message) {
this.message = message;
}
}
Agente empleando HtmlAdaptorServer



Administrando el HelloMBean

Iniciar el agente creado, SimpleAgent
Acceder, mediante navegador web, a la direccion http://localhost:8000


El MBean correspondiente a Hola Mundo! aparece listado como un MBean registrado a traves del agente SimpleAgent con el nombre "hellothere". Al seleccionar el vinculo se puede observar la siguiente pagina, que los datos y la funcionalidad disponible del objeto administrado:

Al final de la descripcion del bean, se encuentra el listado de operaciones que som administradas. En este caso, el objeto administrado solo dispone de un metodo sin parametros, por lo cual invocarlo es tan simple como presionar el boton:

Al presionar el boton "sayHello" podra observar en la consola que aparece el mensaje "Hola, Mundo!", lo cual indica que el metodo del objeto administrado fue ejecutado.

Vinculos:

jmx: JConsole

La distribucion de Java 5 incluye la implementacion de referencia de JMX asi como tambien la JConsole, que permite administrar

Para iniciar JConsole desde la lines de comando, acceda al directorio $JAVA_HOME/bin y corra el ejecutable jconsole:
$ cd $JAVA_HOME/bin
$ jconsole
Debera aparecer entonces una ventana como la siguiente:


El mismo resultado se obtiene ejecutando la clase JConsole, de la siguiente manera:
java -cp "$JAVA_HOME\lib\jconsole.jar" sun.tools.jconsole.JConsole
Para iniciar JConsole desde Eclipse IDE, utilice External Tools. Para configurar JConsole en Eclipse debera seleccionar la opcion del menu principal Run -> External Tools -> Open External Tools Dialog, y la siguiente ventana de dialogo aparecera:


Busque el ejecutable de JConsole inspeccionado el sistema de archivos y luego presione el boton "Run". En la imagen anterior puede observarlo.

Tambien puede ejecutar JConsole como una aplicacion Java desde Eclipse IDE. Para hacerlo acceda al menu Run -> Open Run Dialog and the following window should appear:

Seleccione el item Java Application de la lista de configuraciones, presione el boton que le permite crear una nueva configuracion y dele un nombre. En el cuadro llamado Main class, escriba o seleccione la clase de JConsole que contiene el bloque main, tenga en cuenta que el fully qualified name es necesario, asi como puede ver en la imagen.

El nombre de la clase es:
sun.tools.jconsole.JConsole
Luego, configure el classpath utilizado para ejecutar JConsole, de manera que la clase especificada sea encontrada:


La librearia requerida se encuentra en el directorio $JAVA_HOME/lib/jconsole.jar.

Vinculos:

martes, 22 de abril de 2008

dvd: Eliminar menu no deseado con PgcEdit y FixVTS

Eliminacion de PGC usando PgcEdit

Descargue PgcEdit y FixVTS, que son las herramientas necesarias para alterar el contenido del DVD. Debera disponer de los archivos del DVD, utilice DVDDecrypter o alguna aplicacion similar para copiarlos a su disco duro.

Luego ejecute PgcEdit y cargue los archivos del DVD accediendo a la opcion del menu principal File -> Open DVD, o mediante la combinacion Ctrl-O.

En el panel izquierdo puede observar el listado de los pgc en el DVD. Seleccione el pgc correspondiente al menu que desea eliminar, por ejemplo:

VTSM1, LU1 (en), 9 (0:36) 2b

En este caso debera eliminar los botones que contiene el menu, antes de proceder a eliminar el pgc. Si necesita ayuda para hacerlo, vea aqui.

Una vez eliminados los botones del menu, el pgc debera aparecer listado de la siguiente manera:

VTSM1, LU1 (en), 9 (0:36)

Con el pgc seleccionado, elija la opcion del menu principal PGC -> Kill PGC Playback y la siguiente ventana de advertencia aparecera:


Aqui se le advierte que PgcEdit verificara que es realmente posible eliminar el pgc y que el VOB en el cual se encuentra no sera modificado mediante esta accion. En mas, tampoco sera modificado al grabar el DVD, debera luego hacer uso de FixVTS para eliminar el pgc no utilizado del DVD.

Una vez que acepta el mensaje de advertencia en la ventana anterior, uno nuevo le avisa que el proceso se completo y que eliminar referencias al pgc hara que programas como FixVTS puedan mas tarde quitar del VOB correspondiente el contenido no utilizado:


Quitar contenido no referenciado con FixVTS

Ahora el momento de procesar el VOB donde el pgc fue eliminado para quitar el contenido del DVD que ya no se utiliza, y asi liberar espacio.

Ejecute entonces FixVTS, debera aparecer la siguiente ventana:


Seleccione el archivo VOB a procesar, presionando el boton "Open":


Una vez seleccionado el archivo, presione el boton "Cleanup!" y comenzara el proceso de correccion. FixVTS creara una copia del archivo que procesa para permitir volver atras los cambios.

Una vez finalizado el proceso, verifique que el DVD modificado funciona.

Vinculos:

lunes, 21 de abril de 2008

dvd: Eliminar un boton de menu con PgcEdit

Para comenzar, descargue PgcEdit.exe desde el sitio oficial y ejecutelo. Podra observar que la aplicacion inicia rapidamente, mostrando un menu muy completo y dos paneles vacios:


Primero debe cargar el DVD que desea modificar. Para esto debe disponer de los archivos que componen el DVD, los cuales puede obtener empleando el programa DVDDecrypter o uno similar. Seleccione del menu principal la opcion File -> Open DVD o presione la combinacion de teclas Ctrl-O.
Seleccione el directorio donde se encuentran los archivos del DVD, comunmente en el directorio VIDEO_TS. Una nueva ventana aparecera indicandole que PgcEdit analiza los archivos:


Seleccione del panel izquierdo el pgc que desea alterar. Por ejemplo, en el listado se encuentra el siguiente:

VTSM1, LU1 (en), 12 (0:31) 1b.

El anteultimo elemento muestra la duracion del pgc, mientras que el ultimo la cantidad de botones que contiene. Por este ultimo es posible inferir que se trata de algun tipo de menu.


Seleccione la opcion del menu principal Menu -> Show/Edit Menu Buttons or BOVs y aparecera una nueva ventana mostrando el menu en cuestion:


Ahora puede seleccionar el boton que desea eliminar, en este caso puede observar que el rectangulo verde que rodea a la palabra "Extras" es un boton. Sino, simplemente presione el boton "Edit" y una nueva ventana aparecera:


Si no selecciono el boton en el paso anterior, entonces utilice la barra deslizante con el nombre "Edit button". Al moverla podra activar el boton que desea eliminar, ya que aparecera resaltado en la ventana anterior.
Seleccione del menu principal la opcion Button -> Delete button. En este caso, como se trata de el unico boton en el menu, observara un mensaje de advertencia:


Acepte el mensaje para continuar, la ventana de "Edit" se cerrara y el boton quedara parcialmente borrado. Volvera entonces a la ventana "Menu buttons" donde debera presionar el boton "Close".
Finalmente seleccione del menu principal la opcion File -> Save DVD o presione la combinacion Ctrl-S y los cambios realizados quedaran salvados.

Vinculos: