Después del rodeo inicial que me he marcado, intentando cubrir la capa de negocio con Spring/Eclipse y luego con EJB 3. Si queremos desarrollar con el framework de Oracle ADF, nuestra mejor opción es ADFbc (business components). La razón es simple, está mucho mejor integrada con las capas superiores (Data Controls y Vistas) que EJB, ya que es la solución de referencia de la casa (Oracle).
Read the rest of this entry »
VeÃamos en un post anterior como crear un proyecto básico para Weblogic. A partir de este vamos a crear una vista muy básica con JSF.
JSF tiene varias ventajas:
- Cross browsing limpio: nos permite abstraernos de javascript y los estilos, y las peculiaridades de cada navegador
- Encapsula en componentes la vista
- Es xml de forma que es editable siempre
- Basado en estándares = XHTML + JavaScript + JSP + Java (JEE5+)
- Algunas librerÃas (oracle-ADF, richfaces, icefaces) permiten el desarrollo de Rich Inernet Applications
Read the rest of this entry »
En este post nos ocuparemos de como resuelve JDeveloper la capa de negocio. EJB 3.0 es el estándar para resolver esta capa. Se trata de construir los procesos de negocio, que luego serán llamados por la vista, los servicios web, ….
Nos basaremos en el post anterior, donde creamos la capa de persistencia para nuestra pequeña aplicación.
Read the rest of this entry »
En un artÃculo anterior vimos como asegurar un Web Service con autenticación básica (esto podrÃa servir para cualquier página en nuestra aplicación). Esto lo hacÃamos creando usuarios en el DefaultAuthenticator de Weblogic (user).
Hoy vamos a crear un SQLAuthenticator en Weblogic, de forma que tome esos usuarios y grupos de la base de datos.
Read the rest of this entry »
Abrimos JDeveloper con al opción “Default role”, para que active todas las caracterÃsticas del entorno. A nosotros nos interesan las de JEE Development y las de base de datos.
File > New > Java EE Web Appliation, con lo que creamos una nueva estructura de aplicación:

Llamamos a la aplicación HRApplication, y nos va a crear dos projectos dentro de ella:
- ViewController: que contendrá la capa de vista de nuestra applicación, correspondiente con la tecnologÃa ADF basada en el estandar JSF.
- Model: contendrá los beans EJB y las entidades JPA
Para crear la conexión a la BBDD en la pestaña Database Navigator con botón derecho > New, introducimos los datos:

Y arrastramos la conexión a nuestra aplicación:

Con esto tenemos la aplicación para empezar a modelarla y a construirla.
Parece una obviedad que la mejor herramienta para desarrollar sobre Weblogic/OracleDB es JDeveloper. Pero para mi, hasta ahora, no era tan obvio, ya que Eclipse es mi IDE preferido, ya que es el estándar para el desarrollo JAVA (Jboss, Spring, Android,…).
Si tu arquitectura es Oracle/Weblogic, no tienes miedo al cambio y tu obsesión es incrementar tu productividad, tu herramienta es JDeveloper. Voy a hacer una serie de artÃculos tratando de demostrar este punto. Pero si quieres ir abriendo boca te recomiendo que veas este video, veras como puede ser realmente sencillo hacer aplicaciones RIA en entornos empresariales muy complejos.
Read the rest of this entry »
Para el post de hoy vamos a ver como se asegura un Servicio Web con HTTP Auth, básica, en Weblogic. Para ello nos podemos basar en un proyecto anterior en el que creamos un WS muy básico: Hello World.
En el Security Realm > MyRealm tenemos que crear:
- Usuario: user/12345678
- Grupo: TutorialUser
- Añadir el usuario al grupo
En la consola de Weblogic, como vemos en la figura:

En el web.xml hay que añadir la configuración de seguridad pertinente (path, tipo básico,….):
<!--
SECURITY
-->
<security-constraint>
<display-name>Regla01</display-name>
<web-resource-collection>
<web-resource-name>WSPOST</web-resource-name>
<description />
<url-pattern>/*</url-pattern>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>TutorialUser</role-name>
</auth-constraint>
</security-constraint>
<session-config>
<session-timeout>5</session-timeout>
</session-config>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>myrealm</realm-name>
</login-config>
<security-role>
<description />
<role-name>TutorialUser</role-name>
</security-role>
Y en el weblogic.xml mapeamos con el rol (si no hacemos esto no funcionará):
<wls:security-role-assignment>
<wls:role-name>TutorialUser</wls:role-name>
<wls:principal-name>TutorialUser</wls:principal-name>
</wls:security-role-assignment>
Podemos probarlo con SoapUI creando un nuevo proyecto de WS, con la dirección del WSDL (http://localhost:7001/wsc/HelloService?WSDL) y las credenciales creadas en WebLogic anteriormente:

Hoy crearemos un servicio web SOAP, basándonos en el proyecto LebrijoSchool que hemos venido haciendo sobre la arquitectura Oracle-Weblogic en artÃculos anteriores.
Lo primero es añadir el facet de Web Services. Botón derecho > Properties … :

Después, creamos el WS a partir de una clase de servicio de Spring. Botón derecho > New > WebLogic Web Service for Spring Beans:

Elegimos el servicio, y los métodos que queremos publicar publicar como WS.
Finalmente lo ponemos en el paquete adecuado: lebrijo.school.webservices. Y le damos un nombre “SchoolCertificatesWS”.
Nos queda un WS con este código:
@Autowired
@Qualifier("RegistryService")
private IRegistryService springServ;
@WebMethod
public Registry findRegistryById(java.lang.String id) throws Exception {
return springServ.findRegistryById( id );
}
Para ver como funciona en WS tenemos un cliente en Weblogic, al que podemos acceder a través de la URL http://localhost:7001/wls_utc/.
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
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 »
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.