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 »