Hoy vamos a crear un WS que diga Hola sobre Weblogic con su ditribución de Eclipse OEPE.
Creamos Nuevo proyecto > Web Service 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:

Para acceder al WSDL: http://localhost:7001/wsc/HelloService?WSDL
Para hacer test de cualquier WSDL publicado: http://localhost:7001/wls_utc/begin.do
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:

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/

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… :

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

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.
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:

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:

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:

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.
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 »
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 »
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 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/:

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:

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:

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 »
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:

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.
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 »
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 »
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 »
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: 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.
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.
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:




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 »