JAX-WS: Hello World!!

Hoy vamos a crear un WS que diga Hola sobre Weblogic con su ditribución de Eclipse OEPE.
Creamos Nuevo proyecto > Web Service Project:

Create project

Hemos creado la siguiente clase:

package services;import javax.jws.*;
@WebService
public class Hello {
@WebMethod
    public String sayHello(String name) {
        return "Hello, "+name+".";
    }
}

Con estas dos anotaciones podemos servir el WS, con botón derecho sobre la clases y Run as > Run on Server. Con esto aparece la interfaz de test en el navegador del WS:

WS Test

Para acceder al WSDL: http://localhost:7001/wsc/HelloService?WSDL
Para hacer test de cualquier WSDL publicado: http://localhost:7001/wls_utc/begin.do

Puesta a punto de Google App Engine

Voy a ver como instalar el plugin de GAE en mi Eclipse, y a hacer y subir mi primera aplicación sencilla para ver como gestiona el ciclo de vida básico de las aplicaciones dicho plugin.

Nos basaremos en el paquete Eclipse Galileo R2 para JEE projects de 64 bits. Y en el Google Plugin for Eclipse, que soporta las tecnologías GWT y GAE, en su versión para Galileo.

Instalar Eclipse es inmediato, se descarga y se descomprime en la carpeta que gustemos. Luego lo ejecutamos.

Para instalar el plugin de Google, Help > Install New Software … > Add, añadimos la url  Google Plugin for Eclipse for Galileo. E instalamos el plugin y las dos SDK.

Creamos la aplicación Web File > New > Web Application Project:

Creating project

Para probarla en modo local, en el menú conextual Debug As > Web Application. Así vemos como se debuguea la aplicación con el debuger de Eclipse de forma normal.

Para desplegarla en el servidor tenemos que tener cuenta en https://appengine.google.com,  y crear un ID (pe: firstapp-lebrijo). Este lo introduciremos a través del menú contextual Google > App Engine Settings… De esta forma Eclipse sabrá donde desplegarla cuando hagamos Google > Deploy to App Engine.

Tengo mi primera aplicación en: http://firstapp-lebrijo.appspot.com/

My First GAE App

Arquitectura: capa de servicios con Spring

Para implementar la capa de servicios y aprovechar su inyección de dependencias vamos a utilizar Spring.

Con Spring 2.5.6, que es la versión soportada por OEPE, para acomodar nuestro desarrollo.

Primero añadimos la Facet de Spring a nuestro proyecto. En el menu contextual del proyecto > Properties… :

Add Spring Facet

Luego generamos las clases ORM. Se generan con el menú contextual del proyecto > Spring > Generate Spring ORM Classes …

Creating new ORM Services

Como se observa, sobre las entidades JPA definidas en nuestro paquete de persistencia, se definen las clases de acceso y las de servicio. Os recomiendo echarle un buen vistazo a los paquetes lebrijo.school.services y lebrijo.school.dao.

Lo normal es que debamos limpiar estas clases de métodos, ya que genera todas las posibilidades (remove, persist, findById,…). Por ejemplo, si una entidad de nuestro modelo es una vista, no tendrá sentido mantener un DAO con los métodos persist y remove.

Aquí os dejo el zip del proyecto eclipse tras estas modificaciones.

JPA: Implementando la persistencia con EclipseLink

Veamos como implementar la persistencia en un proyecto de Eclipse con el estándar JPA implementado por EclipseLink.

Nos basaremos en el proyecto de Eclipse creado en el artículo anterior.  En las propiedades (botón derecho) del proyecto añadimos el “poder” de manejar Entidades JPA, añadiendo el Facet:

Adding JPA facet

Utilizaremos EclipseLink 1.1.2 ya que es la implementación de JPA por defecto en WebLogic 11g.

Generar Entidades desde las tablas

Sobre el proyecto en el menu contextual (botón derecho), JPA > Generate Entities from Tables… Elegimos la conexión SCHOOL creada anteriormente, y las tablas REGISTRY y SCHOOLCERTIFICATES. Generando las entidades en el paquete lebrijo.school.model:

Generating entities from tables

Para mantener la coherencia de JPA debemos añadir un Identificador a todas las clases, Registry lo tiene, pero a SchoolCertificates hay que añadírselo:

Add Identifier

Es muy interesante observar el fichero src/META-INF/persistence.xml, como se configura la conexión y se mapean las entidades.

<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="school" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
 	<class>lebrijo.school.model.Registry</class>
 
 	<class>lebrijo.school.model.Schoolcertificate</class>
		<properties>
			<property name="eclipselink.target-server" value="WebLogic_10"/>
			<property name="eclipselink.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
			<property name="eclipselink.jdbc.url" value="jdbc:oracle:thin:@192.168.0.7:1521:xe"/>
			<property name="eclipselink.jdbc.user" value="school"/>
			<property name="eclipselink.jdbc.password" value="school"/>
			<property name="eclipselink.logging.level" value="FINEST"/>
		</properties>
 </persistence-unit>
</persistence>

Aquí os dejo el zip del proyecto eclipse tras estas modificaciones.

OEPE: Creando proyecto en Eclipse para WebLogic

En capitulos anteriores hemos definido la arquitectura Oracle EE, hemos instalado Oracle XE y la conectamos con nuestro Eclipse, y diseñamos el modelo de datos para nuestra aplicación de Ejemplo.

Ahora toca crear un proyecto básico en Eclipse para Weblogic.

Read the rest of this entry »

Plantillas básicas con JSP

Existe una forma de crear plantillas muy básica con JSP a base de includes, que nos puede servir para salir del paso, para un proyecto muy pequeño, por que no queramos utilizar tecnologías más pesadas, o queramos desplegar nuestro proyecto en cualquier servidor de aplicaciones.

La técnica trata de crear pequeños trozos de código en JSP (jsf, tags,…) para cabecera y pie. Y luego crear todas las páginas del proyectos a partir de una plantila.

Read the rest of this entry »

Diseñando el Modelo de Datos con JDeveloper

Considero JDeveloper como una buena herramienta para el diseño de bases de datos por algunas razones:

  • Es capaz de navegar muy bien las bases de datos Oracle.
  • Tiene un editor de esquema ER muy bueno.
  • Es capaz de modificar la base de datos cuando estás modificando el esquema.

De la misma web de Oracle podemos descargar la última versión de JDeveloper para nuestro sistema operativo. Instalarlo no implica mucha dificultad, basta con tener la JDK de Java.

Read the rest of this entry »

Oracle XE: Instalación y puesta a punto de la Base de Datos

Oracle XE es la implementación ligera de la Base de Datos versión 10g para desarrolladores y DBAs que quieran hacer pruebas en local.

Se instala descargando un ejecutable de la web de Oracle. Yo he instalado la versión Windows, virtualizando Windows XP sobre VirtualBox (>>) en mi Ubuntu.

Para administrar la Base de Datos tenemos una aplicación web en http://192.168.0.7:8080/apex/:

OracleXE administration web application

Para que os hagáis una idea de los requisitos de hardware, en la instalación básica en mi sistema, la base de datos ocupa 605 MB de RAM y 880 MB de disco duro. Se ve en la figura anterior.

Ahora crearemos la base de datos que va a alojar los datso de nuestra aplicación. Sobre la misma aplicación web vamos a Administration > Database Users > Create User, y creamos el usuario school con la misma passsword, seleccionando todos los privilegios del sistema:

Creating DB Schema

Con esto hemos creado el esquema school con un usuario que tiene todos los privilegios para desarrollar sobre la base de datos.

Antes de hacer una conexión remota debemos activar la opción Administration>Manage HTTP Access > Available from local server and remote clients, en la aplicación web de administración.

Una vez hecho esto podemos conectarnos desde cualquier aplicación: Eclipse, JDeveloper, PL/SQL Developer, SQLDeveloper,… En la siguiente figura muestro como conectarse desde eclipse ya que es nuestro IDE de cabecera, y además de un pantallazo muestra todos la configuración necesaria para la conexión:

Eclipse DB connection

Aplicación ejemplo: Certificación de cursos

Nos hemos propuesto definir varias arquitecturas para el desarrollo de aplicaciones web. Para ello nos vamos a apoyar en un ejemplo extremadamente fácil que nos ayudará a ver como se desarrolla con las tecnologías elegidas y como se integran estas.

Para un desarrollador es muy importante ver algo funcionando aunque sea muy sencillo, para luego armar la complejidad de tu propia aplicación.

Read the rest of this entry »

Arquitectura Java empresarial de Oracle

Este post tiene su origen en el anterior de definición genérica de una Arquitectura para el desarrollo de Aplicaciones Web.

Basándome en la documentación de Oracle, investigando por internet, y tratando de ver cual es la situación más realista, os propongo la siguiente arquitectura basada en WebLogic:

Oracle Architecture

En la figura vemos la estructura genérica enfrentada a la concreta de Oracle:

  • JSF: en la capa de presentación para estructurar con MVC, y tratar de evitar el Javascript con los problemas de crossbrowsing.
  • JAX-WS: el estandar  para hacer Web Services
  • Jasper: herramienta para generar informes en muchos formatos (PDF,XSL,DOC,..) y desde muchas fuentes (SQL, XML, XLS,….)
  • Spring: para crear capas de servicio y utilizar la inyección de dependencias en las otras capas
  • EclipseLink: implementación de JPA
  • Weblogic: Servidor JEE de referencia (de momento) de Oracle.
  • Java 6: Utilizando las ventajas de la versión 6 del lenguaje Java.
  • Eclipse OEPE: distribución de Oracle de Eclipse con sus herramientas más destacadas para este IDE.

Definiendo la arquitectura de las aplicaciones web

Después de largo tiempo sin escribir, y más tiempo aún siendo un poco inconstante, le he dado un pequeño lavado de cara al blog, y sobre todo a mis objetivos profesionales.

En sucesivos artículos voy a tratar de definir una arquitectura de desarrollo de aplicaciones web empresarial (grandes volúmenes de datos, desarrolladores heterogéneos, grandes servidores, grid,…), y una arquitectura start-up (bajos costes, desarrollo rápido y ágil, escalable, …).

Read the rest of this entry »

Maven: Herramienta de Gestión de Proyectos (en Eclipse)

Siguiendo con nuestro objetivo de crear un entorno de desarrollo de software Extremo, hoy añadimos esta herramienta a la caja.

Maven es una herramienta de gestión de proyectos de software con las siguientes características: Read the rest of this entry »

Generando código a partir de UML con Eclipse

Eclipse tiene un proyecto llamado EMF (Eclipse Modeling Framework) muy majo para dibujar diagramas UML2. Pero mi objetivo en este artículo es dibujar un diagramas de clases UML2 y generar el esqueleto de clases correspondiente.

En la arquitectura de la aplicación se recomienda tener tus modelos de dominio separados de servicio, lógica de negocio etc. EMF te permite crear tu diagrama de clases y luego generarte el código correspondiente.

Read the rest of this entry »

Streaming de video en Apache

En este artículo muestro como me he montado un servidor de streaming tipo youtube con mi Apache. En realidad es una de las posibilidades de hacer pseudostreaming que existen . La idea era insertar un video en la página de un cliente, y mostrar mi video curriculum en mi servidor.

Read the rest of this entry »

Instalando Subversion en Debian

Con el fin de construirme mi propio entorno XP, voy a empezar por un Sistema de Control de Versiones. He elegido Subversion por su madurez, buena integración con Eclipse via Subclipse, y por que tengo experiencia usándolo en mi trabajo.

Read the rest of this entry »

IZPACK.org: Empaquetando tus aplicaciones

IZPACK: Es una solución OpenSource para empaquetar y automatizar las instalaciones de tus aplicaciones en los ordenadores de tus clientes.

  • Cross-platform: es Java, asi que solo necesitas una JVM en el cliente sobre cualquier sistema operativo.
  • Traducciones: instalaciones en varios lenguajes.
  • Desinstalador: desarrolla el script de desinstalación al mismo tiempo.
  • Licencias: Aviso de licenciamiento de tu software en plena instalación.

No más paquetes comprimidos con README.txt, si necesitas automatizar la instalación de tu software.

Eclipse para Oracle

OEPE (Oracle Enterprise Pack for Eclipse), es una distribución de Eclipse afinada por Oracle para conectarse a sus bases de datos y desarrollar con sus tecnologías.

  • Trae ya configurado el plugin para que la perspectiva de Administración de la BBDD sea capaz de ver todos los tipos de objetos (paqetes, vistas, sinónimos,…).
  • Predescargado Weblogic, para instalarlo de un clic. Y con facilidades para desarrollar planes de despliegue sobre el.
  • Sus librerías de JSF, y los conectores SCA con Spring.

Si desarrollas Java sobre Eclipse, con los productos de Oracle detrás (SGBD y WebLogic), está bien por lo menos conocer que existe esta distro de Eclipse.

Probando Chrome OS

Gentileza de Lifehacker y @Tweakt.

Podeis descargar el torrent de Chrome OS.

Os montais la imagen en vuestra aplicación de virtualización favorita:

  • Os creais una máquina virtual con el VMPlayer….Poneis como imagen del disco duro (.vmdk), lo que os habeis descargado del torrent.
  • Aunque siempre os recomiendo VirtualBox. Basta con crearos un disco virtual con el fichero vmdk y construiros una máquina con él.

El nombre de usuario es mark y no tiene contraseña de entrada.

Dentro os podeis conectar a vuestra cuenta de Gmail, y trastear a gusto.

El sistema parece muy sencillo (como los linux de los netbooks), y totalmente orientado a ser cliente de aplicaciones web únicamente.

Os dejo abajo cuatro instantáneas del sistema:

chromeos00.jpgchromeos01.jpgchromeos02.jpgchromeos03.jpg

iWeekend Madrid, nace emprendemas.com

iWeekend es un evento en el que durante un intenso fin de semana se concentra un buen número de gente interesada en el proceso de emprender una empresa en internet, para llevar a cabo el plan de negocio, marketing, la programación y el diseño de la idea.

emprendemas.com: nace en el iWeekend de Madrid, y es una iniciativa web cuyo fin es facilitar a microinversores invertir en start-ups tecnológicas.


Me gustaría felicitar a iWeekend por esta iniciativa tan bien organizada, divertida, y muy necesaria en la actualidad.

Me encantó compartir un divertido fin de semana con gente tan interesante que aporto muchas ideas y conocimientos. Al final logramos dar forma a esta gran iniciativa de Philippe Lardy para todos los emprendedores.

!!!Nos vemos en el próximo iWeekend¡¡¡¡

Fotos del fin de semana

Agile Open 2009, pasión por el Agilismo

Felicitar tanto a la organización de Agile Spain, a la escuela de informática que presto sus instalaciones, como a los ponentes que amablemente se prestaron a iniciar la conversación.

El formato Open Space, fue un gran acierto. Permitió elegir los temas en los que los asistentes estaban más interesados, y crear un tablón con multitud de ellos (hasta 30):

Fue posible crear la jornada que más se adaptara a tu nivel, intereses, curiosidades,…. Además, dada la profesionalidad de la gente, normalmente el que tenía algo que aportar hablaba, y el que no escuchaba y aprendía.

Read the rest of this entry »