viernes, 2 de marzo de 2012

CONFIGURAR SPRING EN PROYECTO MAVEN-GWT


Si tenemos un proyecto GWT-Maven y queremos añadir Spring para que se encargue de la inyección de dependencias hay que seguir los siguiente  pasos:

1º - Tener el proyecto gwt-maven correctamente configurado.

2º - En el POM (fichero de configuración de Maven) hay que añadir:
<dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>springartifactId>
            <version>2.5.5version>
      dependency>

3º - En el archivo web.xml hay que agregar la variable de contexto “contextConfigLocation”, la cual apunta a los ficheros de configuración.
El listener “ContextLoaderListener”, el cual se encuentra en el framework, se encarga de inicializar el contexto de Spring.
<context-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:spring/katagwtmavenspring-ctx.xmlparam-value>
context-param>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
listener>


4º - Hay que crear el fichero o ficheros de configuración de Spring,  la forma que tiene de trabajar Spring es que al iniciar la aplicación carga en el contexto de Spring todos los beans que están en los ficheros de configuración de Spring. Aunque inicialmente esto hace que el arranque sea más lento luego el rendimiento es más óptimo y el código es más sencillo (ya que las dependencias se configuran en ficheros xml) y a la hora de realizar algún cambio basta con cambiar el archivo de configuración (sin tener que tocar el código).
Por lo tanto, con estos ficheros de configuración lo que se hace es indicar a la aplicación todos los beans, y sus relaciones, que se van a cargar el contexto de Spring.
El primer fichero que se va a mirar es “katagwtmavenspring-ctx.xml”, ya que me lo indica “web.xml”, este fichero se encarga de relacionar los diferentes ficheros de configuración que van a cargar el contexto de Spring. En este caso sería:

<import resource="katagwtmavenspring-ctx-persistence.xml"/>
<import resource="katagwtmavenspring-ctx-service.xml"/>
<import resource="katagwtmavenspring-ctx-control-rpc.xml"/>

Lo que se busca con esta división de los ficheros de configuración de Spring es separar por un criterio los diferentes beans que tiene que se tienen que cargar en el contexto. Esto se podría configurar en un solo fichero.
A la hora de configurar los beans que se van a cargar en el contexto podemos ver tres casos. Por un lado se puede declarar un bean en el que no se le pasa ningún property, esto quiere decir que no depende de otro bean.

<bean id="serviceFactory" class="com.enne.codekata.katagwt.service.factory.SpringCtxBeanFactory" />

Otro caso es un bean al que se le añade “property”, este property puede ser un set o una nueva llamada a otro bean (lo que viene a ser una dependencia y se denota por “ref”)

<bean id="allWorldService" class="com.enne.codekata.katagwt.service.impl.AllWorldServiceImpl" >
<property name="allWorldDAO" ref="allWorldDAO"/>
bean>

El último de los casos que explico es que el bean tenga uno o varios properties con “value” en vez de “ref”, esto ya sería un set y es el valor que se cargaría en el contexto de spring.

Para resumir, a la hora de declarar un bean se le añade todos los properties que sean necesarios, esto si contienen “ref” lo que hace es ir a buscar otro bean con el nombre que se le referencia. Llegará a un bean en el que el property tiene un “value” y ahí es donde se toma el valor que se pondrá en el bean en el contexto de Spring.

Como se puede ver la configuración es muy sencilla, lo que hay que tener claro son los conceptos. El resumen sería, partiendo de un proyecto que funciona al que se le añade Spring:

·         Se configura el archivo “web.xml” y se le indica el contexto que tiene que cargar.
·     Se configura el/los diferente/s archivos de configuración de Spring. En estos archivos se van a incluir todos los beans, y sus relaciones, que tienen que ser cargado en el contexto de Spring.


Espero que esta pequeña entrada pueda servir de ayuda como a mi me ha servido de ayuda otras entradas de los muchos blog que he leído en la red.

lunes, 23 de enero de 2012

Creación de un proyecto GWT

Después de haber configurado Eclipse (instalando el plugin de GWT para eclipse) vamos a crear un proyecto nuevo, en el menú superior hacemos clic en “File->New->Web Application Project”



En el cuadro de dialogo que aparece hay que completarlo para configurarlo.
 


Hay que completar los datos que nos solicita, hay que pone el nombre del proyecto, el paquete, el workspace donde se va a crear el proyecto, se selecciona la SDK de GWT que se va a usar (se pueden tener varias instaladas). En este caso no se va a usar GAE por lo tanto desactivamos ese check box (por defecto viene activo). Por último, según nos interese, dejamos activo la opción “Generate Project simple code” en Sample Code, está opción nos genera, al crear el proyecto clases de muestra.
Cuando se ha hecho clic en finalizar nos crea una estructura que se adapta a la convención que tiene GWT (como se puede ver en la siguiente imagen):



Esta estructura que crea, por defecto, es un ejemplo de estructura que tiene código que se ejecuta en cliente (todo lo que está dentro de com.enne.katagwtmavenspring.client). Lo primero que hay que hacer es un punto de entrada (entryPoint), en este caso lo ha creado por, con un contenido por defecto, GWT, y hay que modificarlo para que se adapte a las necesidades que tengamos en cada momento.



En nuestro caso vamos a crear un botón que al pulsar en él se va a solicitar al servidor, mediante RPC, una petición de información a la persistencia. Para llegar hasta este punto previamente se ha lanzado la petición RPC al servidor, el servidor implementa dicha petición y llama al servicio y desde el servicio ya se llama a la capa de persistencia.
En el cliente crearemos nuevos paquetes para los RPC, para las paginas (page) y para los componentes que se le añada (widget), como botones…
Al mismo nivel de client se ha colocado el punto de entrada, pero se podría poner en otro sitio y decirle en ByeWorld.gwt.xml donde tiene que ir a buscar el punto de entrada.



Entre las cosas que hay que tener en cuenta, para hacer una aplicación web con GWT, son:
-          El fichero de configuración de GWT es “ByeWorld.gwt.xml”, lo que está antes de “gwt.xml” es el modulo. Dentro de este fichero de configuración hay que:
o   Indicar el punto de entrada.
o   Indicar el path del código.
o   Indicar el estilo que GWT que se usa.
o   Renombramos el nombre del modulo con
<module rename-to='byeworld'>
-          Hay que configurar el fichero web.xml, que se encuentra en “/war/WEB-INF/” indicando los Servlets que hay que cargar para el RPC y la página HTML ue tiene que cargar por defecto.



jueves, 18 de marzo de 2010

Bienvenidos

Es la primera entrada en "A la ultima...!!!"

Se va hablar de hardware, software, tendencias....