Buscando artículos sobre "Spring"
26-septiembre-2016
admin

Crear una aplicación Spring-Boot

Paso 1 – Instalar maven
Se descarga la version de maven (3.0.5 o superior en este caso). Se mete el directorio bin al path.

Paso 2 – Instalar el wraper de maven para spring-boot. Ver https://github.com/takari/maven-wrapper
Se instala con este comando de maven: mvn -N io.takari:maven:wrapper
Luego para compilar se podría hacer (en lugar de mvn clean install):
./mvnw clean install or ./mvnw.cmd clean install

Paso 3 – Crear proyecto boot inicial.
Consiste en, primero, crear aplicacion en esta url: http://start.spring.io/
Y luego, montar aplicacion:

mvn eclipse:eclipse


Paso 3 – Correr la aplicación.
Dos opciones para lanzar la aplicación pueden ser:

//Con maven:	
mvn spring-boot:run. 
//Construyendo el jar:		
mvn clean package 
//Y haciéndolo correr con:	
java -jar target/nombre_jar.jar


18-septiembre-2016
admin

Crear una aplicación con gvNIX

gvNIX está basado en Spring Roo y te permite generar aplicaciones web java de manera muy rápida a partir de un esquema de base de datos. http://www.gvnix.org/

Instalación de gvNIX

Comandos a ejecutar para la creación de un proyecto

//Primero se configura la BD de la que luego se hará ingeniería inversa...
jpa setup --database MYSQL --provider HIBERNATE --databaseName mi_base_datos --hostName mi_ip --userName mi_usuario --password mi_contraseña
//Luego se puede comprobar si se ha realizaco la conexión bien
database introspect --schema nombre_de_mi_esquema
// si te dice que no encuentra el driver puedes instalarlo así
addon search mysql
//te deberia salir una lista con los drivers que puedes instalar para a continuación
addon install id --searchResultId xx    
//xx sería el codigo del driver mostrado en el listado que saca el anterior comando...
//En mi caso me dió problemas y el de mysql no me lo instaló bien así que lo instale a mano.
//Para ello me lo descargue y lo instalé con el siguiente comando:
osgi start --url file:///C:\\mysql-connector-java-5.1.18.jar
//Ahora ya se puede crear las entidades a partir de la BD.
database reverse engineer --schema nombre_de_mi_esquema --package ~.domain --includeTables "tab_*"
//se crea el negocio y la presentación para spring mvc
web mvc setup
web mvc all --package ~.web
web mvc finder all
//añadimos la internacionalización
web mvc language --code en
web mvc language --code es
//Seleccionamos el nivel de log
logging setup --level INFO

Hasta aquí ya tendriamos un el proyecto funcionando, podriamos ejecutarlo y ver como se pueden hacer las tareas crud con las pantallas con los estilos por defecto de gvNIX. Ver guia de estilos gvNIX.

Si quisiéramos cambiar la presentación para usar por ejemplo bootstrap deberiamos seguir a continuación los siguientes pasos:

// Añadimos jQuery al proyecto
web mvc jquery setup
// Instalamos Bootstrap
web mvc bootstrap setup
// Instalamos el componente datatables
web mvc datatables setup 
// Añadimos JQuery a todos los archivos
web mvc jquery all
// Se crea los datatables de todos los listados
web mvc datatables all
// Se actualiza bootstrap para que importe los ficheros datatables
web mvc bootstrap update
//Instalamos el security
security setup
// Seactualiza bootstrap para que importe los ficheros del security
web mvc bootstrap update
// Instalamos reports en el proyecto
web report setup
// Creamos un report 
web report add --controller ~.web.SampleController --reportName samplereport

Notas:
web mvc bootstrap setup
Este comando importará e instalará todos los recursos necesarios para utilizar bootstrap. Además, modificará la estructura de algunos tagx existentes para que funcionen correctamente con Bootstrap y modificará todas las vistas de la aplicación para que utilicen los tags de JQuery.

web mvc bootstrap update
Este comando permite regenerar de forma correcta todos los componentes importados por Bootstrap. En caso de una modificación incorrecta de estos componentes, podremos regenerarlos para que vuelvan a su estado inicial.



Documentación oficial versión 1.4.1


9-septiembre-2016
admin

Eliminar Spring Roo con eclipse

Para quitar Spring Roo de un proyecto que lo esté utilizando sin perder las funcionalidades que se tienen se deben seguir los siguientes pasos:

Paso 1: Eliminación de los aspectos del proyecto
Para ello seleccionamos el proyecto en el IDE -> pulsamos el botón derecho del ratón -> en el menú contextual seleccionamos la opción Refactor/Push In… -> tras pulsar el botón “OK” -> se eliminarán del proyecto las clases de los aspectos.

Paso 2: Eliminación de las anotaciones de las clases del proyecto.
Se realiza reemplazando las anotaciones de Spring Roo. Para ello, iremos a la opción del menú Search/Search/File Search -> en el campo con título “containing text” insertaremos la expresión regular “\n.*[@\.]Roo[^t_]+?.*$” (sin comillas) -> seleccionaremos las check: “Case sensitive” y “Regular expression” -> a continuación, pulsaremos el botón “Replace…” -> y, para finalizar, se mostrará un ventana que solicitará el nuevo texto, en donde pulsaremos el botón de aceptación.

Paso 3: Eliminación referencias del pom.
Se eliminan a mano todas las dependencias a Spring ROO existentes en el pom.xml.

Paso 4: Corregir errores del eclipse
Aparte es posible que haya que corregir algun error en el codigo generado en las clases con relaciones muchos a muchos. Tales como:
– crear método ‘getSerialversionUID’ en las clases,
– pasar los constructores a public
– quitar la propiedad ‘final’ de la clase
– quitar los ‘implements serializes’ repetidos
– añadir los métodos ‘hashcode’ y ‘equals’
– …
Se trata de errores que se solucionan rapido porque los va a ir sacando el eclipse.

Tras todo eso puedes probar tu proyecto ejecutando
mvn clean install jetty:run

31-agosto-2016
admin

Crear aplicación a partir de la Base de Datos con Spring Roo

Paso 1: Instalar Spring Roo
– En primer lugar necesitas tener instalado Java y Maven.
– A continuación te descargas Spring Roo de la página oficial.
– Se descomprime en un directorio y se añade al path. En windows seria añadir en el path $ROO_HOME\bin siendo $ROO_HOME el directorio donde lo has descomprimido.
– Para comprobar que se ha instalado correctamente podemos ejecutar directamente en la consola el siguiente comando.
roo quit
Si todo va bien debería mostrarnos el logo de Spring Roo.


Paso 2: Crear un proyecto de Spring Roo
Se puede crear de distintas formas:
– Con el STS se puede crear un proyecto de Spring Roo como tal.
– Con el eclipse también se podría añadiendo el plugin de Spring Roo.
– Y por último también podriamos utilizar directamente la consola para su creación.

De esta forma, los comandos para la creación de un proyecto a partir de una BD Mysql serían:

//Primero se configura la BD de la que luego se hará ingeniería inversa...
jpa setup --database MYSQL --provider HIBERNATE --databaseName nombre_de_mi_esquema --hostName ip_de_mi_mysql --userName mi_usuario --password mi_contraseña
//Luego se puede comprobar si se ha realizaco la conexión bien
database introspect --schema nombre_de_mi_esquema
// si te dice que no encuentra el driver puedes instalarlo así
addon search mysql
//te deberia salir una lista con los drivers que puedes instalar para a continuación
addon install id --searchResultId xx    
//xx sería el codigo del driver mostrado en el listado que saca el anterior comando...
//En mi caso me dió problemas y el de mysql no me lo instaló bien así que lo instale a mano.
//Para ello me lo descargue y lo instalé con el siguiente comando:
osgi start --url file:///C:\\mysql-connector-java-5.1.18.jar
//Ahora ya se puede crear las entidades a partir de la BD.
database reverse engineer --schema nombre_de_mi_esquema --package ~.domain --includeTables "tab_*"

Por último sería añadir el resto del negocio y la presentación. Para ello pongo dos ejemplos: MVC y JSF.

//Usando Spring MVC
web mvc setup
web mvc all --package ~.web
Usando JSF
web jsf setup --implementation --library --theme
web jsf all --package ~.web

Como nota decir que se lía algo con las tablas con clave primaria múltiple (hay que quitar unos errores que salen en los ficheros *.aj que crea).

Puedes probar a ejecutar el proyecto simplemente con la instrucción de manve
mvn clean install jetty:run


Documentación:
Ejemplo de creación de un proyecto con STS. Ver
Ejemplo de creación de un proyecto con el plugin de eclipse para Spring Roo. Ver

20-octubre-2014
admin

Usar Apache CXF para montar servicios en java

En primer lugar comentar unos conceptos básicos… tenemos dos tipos de servicios web: SOAP y REST.
– SOAP consiste en el intercambio de mensajes envueltos en un XML. El cliente envía un mensaje XML en formato SOAP, dicho mensaje es recibido por el servidor, que desencapsula dicho mensaje en el formato correspondiente (SOAP es multilenguaje, acepta varios lenguajes, entre ellos Java), que recibe los datos, procesa una respuesta y la devuelve.
En Java existe la implementación JAX WS.

– Rest es una implementación posterior. No sólo utiliza un tipo de mensaje HTTP para el intercambio de mensajes, si no que permite más mensajes. Con Rest puedes tener un cliente que envíe mensajes HTTP de tipo GET, PUT, POST y DELETE. Cada mensaje enviará los datos correspondientes asociados hacia el servidor, que, recibirá la petición, la entenderá, y delegará en el método correspondiente. GET sirve para recuperar un dato desde el cliente al servidor, PUT para insertar un dato, POST para enviar información para modificar y DELETE para eliminar información del servidor.
En Java existe la implementación JAX RS.

Una forma muy sencilla de montar nuestros servicios en java es utilizar Apache CXF que se adapta tanto a Jax WS como a Jax RS. Además, se integra muy bien con Spring.
En la documentación hay numerosos ejemplos: Documentación oficial

A continuación un par de ejemplos muy sencillos:

package es.com.disastercode;

import javax.jws.WebService;

@WebService
public interface EjemploService{
    String getTipoCoche(String matricula);
}

Archivo de implementación JAX WS. Para exponer un servicio y publicarlo en un contendor de aplicaciones que soporte JAX-WS. Automáticamente el contenedor se encargará de generar el contrato (WSDL).

package es.com.disastercode;

import javax.jws.WebService;

@WebService(endpointInterface = "es.com.disastercode.EjemploService")
public class EjemploServiceWSImpl implements EjemploService {

    public String getTipoCoche(String matricula) {
        return "Seat Ibiza";
    }
}

Archivo de implementación JAX-RS. Permite realizar lo mismo que antes pero exponiendolo como recursos REST.

package es.com.disastercode;

import javax.jws.WebService;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

@WebService(endpointInterface = "es.com.disastercode.EjemploService")
@Produces("application/json")
public class EjemploServiceRSImpl implements EjemploService {
       
    @GET
    @Path("/{matricula}")
    public String getTipoCoche(@PathParam("matricula")String matricula) {
        return "Seat Ibiza";
    }
}

Ahora sólo nos faltaría configurar los servicios en Spring. Para ello:
1/ añadir al web.xml:

        < context-param>
                < param-name>contextConfigLocation< /param-name>
                < param-value>WEB-INF/appCtx.xml< /param-value>
        < /context-param>

        < listener>
                < listener-class>
                        org.springframework.web.context.ContextLoaderListener
                < /listener-class>
        < /listener>

        < servlet>
                < servlet-name>CXFServlet
                < servlet-class>
                        org.apache.cxf.transport.servlet.CXFServlet
                < /servlet-class>
                < load-on-startup>1
        < /servlet>

        < servlet-mapping>
                CXFServlet
                /*
        < /servlet-mapping>

2/ añadir la configuración de JAX WS a spring.

< beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
		http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">

	< import resource="classpath:META-INF/cxf/cxf.xml" />
	< import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
        < import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />

	< bean id="ejemploServiceController"
		class="es.com.disastercode.EjemploServiceWSImpl">
	< /bean>

	< jaxws:endpoint id="ejemploService" implementor="#ejemploServiceController"
		address="/ws/exps">
        < jaxws:dataBinding>
        	
            < /bean>
        < /jaxws:dataBinding>
    < /jaxws:endpoint>     
< /beans>

3/ añadir la configuración de JAX RS a spring.

< beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:jaxrs="http://cxf.apache.org/jaxrs"
      xsi:schemaLocation="
         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
         http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd">

	< import resource="classpath:META-INF/cxf/cxf.xml" />
	< import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
        < import resource="classpath*:META-INF/cxf/cxf-extension-*.xml" />
    

	< bean id="ejemploServiceRestController"
		class="es.com.disastercode.EjemploServiceRSImpl">
	< /bean>


    < jaxrs:server id="ejemploServiceRest" address="/rest">
        < jaxrs:serviceBeans>
            < ref bean="ejemploServiceRestController" />
        < /jaxrs:serviceBeans>
        
         
		< jaxrs:providers>
		 < ref bean="jsonProvider"/>
		< /jaxrs:providers>
		 
		< jaxrs:features>
 		< /jaxrs:features>
 		
    < /jaxrs:server>

    < bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/>
< /beans>
14-noviembre-2012
admin

Plugin para el eclipse que genera aplicación automaticamente

Sotilizator

En GitHub he creado un repositorio donde comparto un plugin para el eclipse que he implementado y que facilita el desarrollo aplicaciones J2EE https://github.com/roberto-pf/Sotilizator. El plugin consigue implementar toda la lógica de negocio de una aplicación que utiliza: Struts + Spring + hibernate + JQuery.

Qué es el Sotilizator?
Se trata de un plugin para el eclipse (probado en su versión Helios). La finalidad de este plugin es la creación de una aplicación web de forma automática y con unas determinadas características a partir de un esquema de una Base de Datos.
Estas características son:
1 – La aplicación resultante estará realizada empleando un MVC en J2EE con Struts 1.3, inyección de dependencias con Spring 3.0, hibernate 3.2.6 para el acceso a datos para la parte de la lógica de negocio. Mientras que para la parte de la vista se empleará jquery junto a las tag-libraries de struts. Además, de DWR para interactuar con el servidor desde el cliente.
2 – Se generará un fichero pom.xml para que a través de MAVEN se puedan obtener las dependencias.
3 – Se generará un fichero build.xml donde estarán las tareas Ant necesarias para el despliegue de la aplicación en Tomcat, JBoss y OAS.
4 – La aplicación resultante será capaz de construir las tareas CRUD de las tablas automáticamente. A partir del esquema de la BD obtendrá los campos y su tipo.
5 – Las capas que contendrá la aplicación son las siguientes:

        VO: Objetos que hace referencias a las tablas.
	DAO: Capa que realiza el acceso a la BD. 
	Manager: Capa sobre la que se aplican las transacciones.
	Delegate: Capa que se encarga de relacionar la parte de la vista 
                  con la lógica de negocio.
	Action: Aquí deberán ir las diferentes acciones que luego el 
                controlador mapea para interactuar con la vista.

Esquema de la lógica de negocio

Nota: Para más información consultar manuales del usuario y del programador: https://github.com/roberto-pf/Sotilizator/tree/master/Readme

4-febrero-2012
admin

Transacciones con Spring AOP (Forma declarativa con un fichero xml)

El tratamiendo de las transacciones mediante Spring AOP puede realizarse de varias formas. O bien, de forma programática o bien de forma declarativa (ya sea con anotaciones o con fichero xml):


1/ Si se hace de forma programática, las transacciones, deben controlarse en las distintas clases. Esto puede llegar a resultar bastante engorroso en aplicaciones relativamente grandes.


2/ Si se hace de forma declarativa con anotaciones estaríamos en la misma situación ya que las transacciones se definen dentro de las propias clases como antes, eso sí, de una forma más limpia.


3/ Si se hace de forma declarativa con un fichero xml se puede poner un punto de corte (pointcut) sobre la capa manager que abarque a todas las clases pertenecientes a ella. Y mediante un se pueden definir los tipos de propiedades de las transacciones (propagation, isolation leven, timeout, etc.), que deben ejecutar los métodos de esas clases manager. Para ello basta con seguir algún patrón a la hora de nombrar los nombres métodos y así poder diferenciarlos unos de otros. De esta forma en unas pocas líneas de un fichero xml se tienen tratadas todas las transacciones de la aplicación.




Para usar esta tercera forma nos pide aparte un par de librerías de Aspectj. Obtenidas p.e. de maven, de la siguiente forma:

      
          org.aspectj
          aspectjrt
          1.5.4
      
      
          org.aspectj
          aspectjweaver
          1.5.4
      





Un ejemplo sencillo de uso, con hibernate:

    
    
	
    

    
    
        
     
    
    
    
        
            
            
            
        
    





Nota: Aquí hay bastante más información para consultar http://static.springsource.org/spring/docs/2.5.x/reference/aop.html

Páginas:«12

Categorias

Linkedin