Bienvenido JDeveloper 11g!!!

0

Andando corriendo de un lado a otro, con el Oracle Open World terminado y alistando todo para la puesta a producción de JDeveloper 11g, no pude ni siquiera hablar sobre el anuncio hecho durante el evento en relación a la puesta en producción de JDeveloper 11g.

Y que sucedió?........bueno que el día de hoy, luego de esta anhelada espera hemos salido a producción. Han sido algo más de dos años en los que fuimos liberando versiones de pre-producción que mostraban el progreso que se iba haciendo, pero que desafortunadamente no podían ser utilizadas para proyectos de producción por la naturaleza del contenedor principalmente.

JDeveloper 11g el cual es el primero de los productos pertenecientes al Fusion Middleware que sale en esta versión. Uno de los principales cambios en JDeveloper11g a diferencia de cualquier versión previa de JDeveloper es que a partir de esta, y tras la adquisición de BEA, el contenedor embebido que viene con la herramienta y naturalmente que está en producción es WebLogic Server 10.3.


Así mismo la herramienta cuenta con muchas nuevas características pero conservando la esencia en tiempo de desarrollo. En cuanto a la ejecución de aplicaciones, se presentan algunos pequeños cambios ya que al ejecutar una aplicación por primera vez esto inicia una instancia del contenedor embebido WLS y luego se hace un despliegue de la aplicación sobre esta instancia, la cual en el momento de ser detenida se desmonta (undeploy) de la instancia del servidor que esta corriendo. Con esto lo que se logra es que sobre una instancia del servidor se pueden ejecutar varias aplicaciones en simultanea.
Otro de los cambios comparado con versiones previas es que dada la naturaleza de WLS, este tiene que ser instalado, por lo que ahora JDeveloper cuenta con un instalador. El instalador de JDeveloper requiere in mínimo de JDK6u6. El instalador de JDeveloper se puede obtener como .EXE o en .JAR para el cual se debe tener el JAVA_HOME apuntando al JDK6 y luego a través de línea de comandos se lanza el instalador por medio de java -jar jdevstudio11110install.jar.


JDeveloper 11g viene también con la versión en producción de ADF 11g el framework de desarrollo Java EE de Oracle con el cual se pueden desarrollar aplicaciones ricas en Internet utilizando tecnologías como AJAX, JSF, EJB/JPA, Business Components.


Para más información sobre JDeveloper se puede ir a la página principal
http://www.oracle.com/technology/products/jdev/index.html
El equipo de JDeveloper ha puesto una página de preguntas y respuestas bastante bueno que se puede acceder aquí
http://www.oracle.com/technology/products/jdev/htdocs/jdeveloper11g...

Voy a intentar cubrir nuevas características de JDeveloper11g en los próximos artículos ojalá antes de que se nos llegue otro release..... ;-)


Procesos Síncronos de larga duración…

0

En procesos BPEL podemos identificar fácilmente 2 tipos de procesos:

  1. Síncronos. Operaciones de 2 vías (entrada-salida)
  2. Asíncronos. Operaciones de 1 vía (es decir, una entrada con una posible salida eventual)

En ocasiones es necesario tener procesos síncronos que le den una respuesta al cliente casi de forma inmediata y después realizar una serie de pasos, los cuales no necesariamente requieren notificar al cliente que los invocó.

De esta manera un proceso síncrono de operación de 2 vías ,podría convertirse en un proceso que guarde su estado.

En uno de los proyectos en los que estoy trabajando actualmente es necesario realizar procesos de Activación de Servicios, en los cuales al cliente se le notifica inmediatamente pero después se realizan varios pasos en los cuales no es necesario volver al cliente a dar alguna notificación.

Con Oracle BPEL Process Manager esto es fácilmente lograble usando un proceso Síncrono que tenga un Callback casi inmediato y luego una serie de pasos:

proceso

Como se puede ver, es un proceso Síncrono normal con un Reply casi inmediato, pero con una serie de pasos posteriores en los cuales está incluido una llamada Asíncrona, lo cual hace que el Flujo tenga un punto de deshidratación, pero evitaría que el cliente estuviera esperando una respuesta.

Este tipo de procesos son ideales cuando se necesita contestar rápidamente a quien invoque y después es necesario seguir procesando. Igualmente es ideal cuando el cliente no tiene la tecnología para invocar un proceso Asícrono con WS-Addressing, de ésta forma invoca a un proceso Síncrono, recibe una respuesta y deja al proceso ejecutándose.


Llego el Oracle Open World 2008 - Mi Horario

0

La hora de la verdad ha llegado, OOW 2008 está a punto de comenzar. Va a ser una semana en donde vamos a desayunar, almorzar y cenar Oracle. San Francisco se viste de rojo y blanco para darle la bienvenida a los mas de 40 mil asistentes que se esperan recibir en esta edición del evento.

Ojala pueda encontrar a lectores de este blog que estén asistiendo al evento, siempre es bueno ver que hay una persona de carne y hueso al otro lado de la pantalla. Este es mi horario para el OOW 08

Domingo 21 - (Si empezamos desde temprano la semana)

13:15-14:15 Marriott Golden Gate C1 Hands-on Lab: Oracle Fusion Development--Creating Web User Interfaces

Lunes 22

10-12 Demo Grounds A28 - Rich Internet Applications

13-15 Demo Grounds A25 - JDeveloper

17:30-18:30 Marriott Golden Gate C1 Hands-on Lab: Oracle Fusion Development--Creating Web User Interfaces

Martes 23

16:00-17:00 Marriott Salon 05 - S298715-MS Office Front Ends for Oracle Application Development Framework Applications: Intro to Oracle ADF Desktop Integration

Miercoles 24

9 - 10:30 Open World Unconference - ADF Methodology for the masses

11-13:30 Demo Grounds A28 - Rich Internet Applications


El Detras de Camaras de Oracle Open World 08

0

A 2 semanas del inicio de Oracle Open World 08, estamos alistando todo para que este evento que atrae cerca de 45 mil personas de todas partes del mundo sea un éxito. Y para la muestra  un botón, esta es una de las salas donde se están alistando los equipos para los demo grounds, cerca de 1000 mil equipos entre laptops, servidores, etc....impresionante.

PIC-0001

Para aquellos que están viniendo, recuerden que tenemos Oracle Develop, un evento dedicado para los desarrolladores con más de 130 sesiones técnicas en tecnologías Oracle. 75 Hands-On-Labs y más de 25 sesiones sobre ADF. Una de las sesiones que no se pueden perder es :

S298715 Building MS Office front ends for ADF applications- An Introduction to ADF Desktop Integration

Pre-regístrese ahora para que así asegure su cupo. En los próximos días esperen más noticias sobre el OOW.


Set de caracteres en mensajes de Web Services...

2

En muchas ocasiones cuando se están usando Web Services es necesario transmitir en los mensajes caracteres como ñ, &, #, etc. que están contenidos en el set de caracteres UTF-8.

Esto se puede resolver simplemente especificando en el encabezado de los esquemas de XML el set que se quiere ocupar, es decir:

<?xml version="1.0" encoding="UTF-8"?>

Pero cuando inclusive definiendo ésto a nivel de los XSDs, WSDLs tampoco se pueden transmitir dichos caracteres, se sugiere (en equipos UNIX) declarar la variable LANG y reiniciar el servidor de aplicaciones que se esté usando.

Por ejemplo:

LANG=en_US.UTF-8

opmnctl stopall

opmnctl startall


El Rincón del Código para ADF

1

Pese a que había accedido a muchos de los artículos directamente, no había podido encontrar la página principal del  ADF Code Corner, afortunadamente y gracias al articulo publicado por Frank en el nuevo blog del equipo de Developement Tools, me fue posible encontrar el acceso.

Como se explica en el artículo, cualquier persona puede aportar artículos al rincón del código, la diferencia es que estos son un poco más formales que un artículo de blog. Para publicar un artículo lo único que requiere es obtener la plantilla y enviar el articulo a Frank.

Por este lado ya deje el enlace en la sección de Links Relacionados.


Entrenamiento de 5 dias para Partners en ADF 11g

0

Como anunció Shay en su blog. Para todos los que trabajen en compañías Partners de Oracle y quieran tener un entrenamiento avanzado en ADF 11g, compren sus tíquetes para San Francisco para la semana del 27-31 de Octubre. Nos vemos en la Casa Matriz de Oracle (aka Headquarters). Aquí pueden encontrar más información al respecto.

Si están asistiendo al entrenamiento no duden en contactarme, podríamos realizar una cena con todo el grupo y extender los lazos de amistad entre la comunidad Hispana de ADF.


Finalmente el Patchset 10.1.3.4 para SOA Suite fué liberado

0

Al igual que indicó Juan que JDEV 10.1.3.4 había sido liberado, el parche para llegar a 10.1.3.4 en Oracle AS y Oracle SOA Suite también fué finalment liberado y está disponible en otn.oracle.com

Este parche además de contener las soluciones a bugs tiene características nuevas sobre productos como BPEL PM y Oracle ESB.

Si ustedes tienen una instalación de SOA Suite 10.1.3.1 o bien sólo de BPEL PM 10.1.3.1 o ESB 10.1.3.1 pueden aplicar este parche directamente y así en un solo paso estar actualizando toda la plataforma.

Se recomienda también hacer uso de SOA Suite 10.1.3.4 con JDEV 10.1.3.4, así tanto tiempo de diseño como de ejecución estarán actualizados.



Pasando Parámetros a una Página desde un Bean

1

El requerimiento es que se quiere pasar algún tipo de información a la Interfase del Usuario, esta información es generada a través de un Bean. La idea es que en el momento que la página sea desplegada se presente la información.

En este ejemplo vamos a crear un Bean llamado myTest el cual contiene un método que retorna una cadena de caracteres. El objetivo es utilizar este método para asignar el título a una página. El codigo del Bean es:

public class MyTest {
    public MyTest(){
    }
        public String retornaCadena(String myString){
            String result = "Navegando en el Departamento: "+myString;
            System.out.println(result);
            return result;
        }
}DataControl

Luego creamos un Datacontrol para este bean el cual nos va permitir hacer el binding a este método. Esta no es la única forma en que podemos exponer la lógica para las interfaces, podríamos también empaquetar este bean y su data control dentro de un archivo JAR e importarlo en otros proyectos, esto nos va a permitir visualizar el Data control de la misma forma.

 

A continuación creamos un par de proyectos, uno para los serviciPaginaInicialos (lógica de negocio) y otro para el UI. Por el lado de los servicios para este ejemplo vamos a crear Business Components para la tabla Departments del esquema HR. Para la interfase de usuario creamos una nueva página JSF y adicionamos un panelHeader y una forma de lectura (Read Only Form) con opciones de navegación del Departamento.

methodBinding Para asignar el encabezado del panelHeader utilizando el método, vamos al tab de bindings, creamos un nuevo MethodAction binding donde seleccionamos le método del datacontrol y al parámetro de entrada vamos a utilizar el binding del nombre del departamento.

Este binding requiere de algún ejecutable para poder ser invocado por lo cual creamos también un nuevo ejecutable de tipo invokeAction, buscamos el methodBinding que acabamos de crear y damos un id cualquiera. Una vez lo hayamos definido ajuste la propiedad de refresh de este ejecutable a ifNeeded, esto hace que cada vez que naveguemos a otro departamento el método va a ser ejecutado.

Finalmente para asignar el encabezado tenemos que crear un variableIterator en los ejecutable que mapee la variable de retorno del método y un attributeValue binding. Sin embargo esta parte la podemos hacer de manera automática si dentro de la página arrastramos y soltamos el valor de retorno del método y lo mapeamos como un outPutText, luego si volvemos a los bindings vamos a poder ver la estructura creada de esta forma:resultado

 

 

 

 

El código objetivo en el pageDef es:

<executables>

...
    <invokeAction Binds="retornaCadena" id="invocaMetodo" Refresh="ifNeeded"/>
    <variableIterator id="variables">
      <variable Type="java.lang.String" Name="retornaCadena_Return"
                IsQueriable="false" IsUpdateable="0"
                DefaultValue="${bindings.retornaCadena.result}"/>
    </variableIterator>
  </executables>
  <bindings>
...       

<methodAction id="retornaCadena" InstanceName="MyTest.dataProvider"
                  DataControl="MyTest" RequiresUpdateModel="true"
                  Action="invokeMethod" MethodName="retornaCadena"
                  IsViewObjectMethod="false"                  ReturnName="MyTest.methodResults.retornaCadena_MyTest_dataProvider_retornaCadena_result">
      <NamedData NDName="myString" NDValue="${bindings.DepartmentName}"
                 NDType="java.lang.String"/>
    </methodAction>
    <attributeValues IterBinding="variables" id="Return">
      <AttrNames>
        <Item Value="retornaCadena_Return"/>
      </AttrNames>
    </attributeValues>
  </bindings>

Para finalizar en la propiedad Text del panelHeader ya podemos hacer el binding del resultado del método #{bindings.Return.inputValue} y tendriamos como página terminada

resultadoFinal

Este ejemplo aplica cuando se quiere determinar de manera dinámica los strings de una página a través de un ResourceBundle o también enviar valores calculados bajo cierta lógica.


Post navigation