Showing posts with label netbeans. Show all posts
Showing posts with label netbeans. Show all posts

22 February 2010

Probando JRebel con Maven, Spring, Netbeans y Glassfish

La combinación de Maven, Spring, Netbeans y Glassfish nos permite crear aplicaciones potentes en cuanto a buenas prácticas, gestión y construcción del proyecto, con un IDE ampliamente utilizado y conocido, sobre un servidor de aplicaciones decente... hasta aquí todo esta muy bien.

Lo malo, son los cambios que se experimentan durante la fase de desarrollo.

Lo normal en la construcción de una aplicación JEE es que este compuesta por distintos componentes, como por ejemplo:
  • 1 jar con los componentes comunes
  • 1 jar con los objetos del dominio
  • 1 jar con los DAO
  • 1 jar con el negocio de pepito :-)
  • 1 jar con el negocio de juanito ;-)
  • 1 jar con los clientes de WS de ...
  • 1 jar con ....
  • y finalmente un WAR/EAR

Cualquier cambio que se realize en cualquiera de esos componentes requiere que se compile y despliegue la aplicación al completo en el servidor de aplicaciones, esto incluye el famoso undeploy/deploy de nuestro WAR/EAR, algo que suele ser muy ... pero que muy lento.

JRebel permite evitarnos todo este proceso "traumático", pasando de actualizar el servidor de unos minutos eternos a unos pocos segundos.

El proceso de implantación es el siguiente:
  1. Descargar e instalar JRebel ( 2.2.1 (21st December 2009) )
  2. Configurar Glassfish
  3. Que la aplicacion principal(WAR/EAR) tenga un fichero denominado
    rebel.xml
  4. Probar que funciona

1.- Descargar e instalar JRebel
Obviamente el título lo dice todo : Descarga

2.- Configurar Glassfish v2.1
Se deben añadir dos opciones de arranque a la máquina virtual del servidor de aplicaciones.


"Cuidado con la documentación por que utilizar la barra (\) os puede originar que vuestro Glassfish no arranque (en windows), por ello es mejor utilizar la contra barra (/)"

3.- Configuracion de la aplicacion principal (WAR)
Supiendo que nuestra aplicacion esta ubicada en la carpeta "c:/application", que la aplicacion web se llama "webapp" y que sus compomentes se llamanan "un-componente-jar" y "otro-componente-jar" el fichero de configuración rebel.xml tendría que estar en el directorio classes(en su defecto la raiz del código fuente) de la "webapp"; y quedaría de la siguiente forma:
<?xml version="1.0" encoding="UTF-8"?> 
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.zeroturnaround.com" xsi:schemaLocation="http://www.zeroturnaround.com/alderaan/rebel-2_0.xsd">

<classpath>
   <dir name="C:/application/webapp/src/main/java">
      <include name="**/*.*">
   </dir>
   <dir name="C:/application/webapp/target/classes">
      <include name="**/*.*">
   </dir>

   <dir name="C:/application/webapp/target/classes"></dir>

   <dir name="C:/application/un-componente-jar/target/classes">
      <include name="**/*.*">
   </dir>

   <dir name="C:/application/otro-componente-jar/target/classes">
      <include name="**/*.*">
   </dir>
</classpath>

<web>
   <link target="/">
      <dir name="C:/application/webapp/src/main/webapp"></dir>
   </link>
</web>
</application>
4.- Probar que funciona
Si arrancamos Glassfish en modo debug, podemos cambiar el código de cualquier clase de los jars y simplemente guardandola, JRebel se encarga de actualizarla en el servidor de aplicaciones sin tener que volver a desplegar la webapp.

Enlaces relacionados:

Solo decir que desarrollar asi ya es una delicia por la cantidad de tiempo que uno puede llegar a ahorrar, ahora me queda paciencia para mas cosas :-)

- FIN -

12 August 2008

Autoformación y Netbeans

A quien le guste un poco la autoformación y se atreva a probar cosas distintas, que sepa que hay más mundos, aparte de eclipse, aquí dejo un enlace a la "web tv" de netbeans, la cual esta llena de screencast(video tutoriales).

http://www.netbeans.tv/screencasts/


Si no lo pruebas, no sabrás si te gusta!!! :-p

- FIN -

17 April 2008

No theme instance found for locale

com.sun.rave.web.ui.theme.ThemeManager::No theme instance found for locale es

Este tipo de errores se originan por dos posibles causas:
  1. El fichero properties no se encuentra en el lugar especificado; por tanto habría que verificar que el resultado de la compilación de nuestro código fuente deposite dichos ficheros en el lugar esperado.

  2. No se ha especificado los lenguajes soportados en el faces-config.xml; por tanto habría que registrarlos como en el siguiente recuadro.
    ..........
    <locale-config>
    <default-locale>es</default-locale>
    <supported-locale>en</supported-locale>
    <supported-locale>it</supported-locale>
    </locale-config>
    <message-bundle>edu.emmerson.jsf.locales.Language</message-bundle>
    ..........

    Recordar que para cambiar el idioma por defecto de la aplicación habría que indicarlo.

    ..........
    FacesContext.getCurrentInstance().getViewRoot().setLocale(new Locale(languageIsoCode));
    ..........

    - FIN -

21 November 2007

Paso de parametros por request en JSF


En la request :

  • Poner un parámetro

    HttpServletRequest mirequest= (HttpServletRequest)this.getFacesContext().getExternalContext().getRequest();

    mirequest.setAttribute("mi_clave_de_request", unObjeto);
  • Recuperar un parámetro

    HttpServletRequest mirequest= (HttpServletRequest)this.getFacesContext().getExternalContext().getRequest();

    mirequest.getAttribute("mi_clave_de_request") ;



En la request para aplicaciones visuales JSF (Netbeans + Visual Web Pack) :

  • Poner un parámetro

    this.setBean("mi_clave_de_request", unObjeto);
  • Recuperar un parámetro

    this.getBean("mi_clave_de_request") ;
  • Para mas informacion consultar el javadoc de AbstractPageBean

Para los objetos session y application es mas o menos lo mismo, en caso de que la aplicación este en un entorno cluster, las recomendaciones indican que los objetos metididos en la session deberian ser serializables.

- FIN -

17 October 2007

Integración de iBatis/Abator en NetBeans 5.5

iBatis tiene una herramienta de persistencia que genera el código de nuestros POJO's, DAO's y ficheros XML que contienen las sentencias SQL que necesitamos para trabajar con una base de datos relacional. Esta herramienta se llama Abator y se configura al igual que otros ORM mediante un fichero xml.

Netbeans esta basado en Ant.

Ahora bien, Abator trae con sigo una implementación de tareas Ant para generar lo que se especifique en el fichero de configuración. Solo habría que incluir las librerias de abator dentro del classpath, y definir en un fichero ant, p.e build.xml un target para ejecutar la tarea Ant de abator especificandole el fichero de configuración a utilizar.

Asi, de esta manera se podria tener integrado Abator en Netbeans y generar desde dentro del IDE las clases asociadas a nuestras tablas que necesitemos.

- FIN -

28 September 2007

IceFaces para Netbeans

Para poder desarrollar proyectos JSF de manera visual primero de todo había que encontrar un editor que me permitiera hacerlo, tal cual lo hace ASP.NET.

Tenia 2 opciones que NO eran de pago (al menos eso creo :-p ), la primera era Eclipse WTP + FacesIDE pero este plugin me resulto un poco verde, así que nada, lo deje!

He aqui un par pantallazos de Eclipse + FacesIDE:


Por ahí recordé un día un newsletter de netbeans donde mencionaban dar soporte a JSF de manera visual, así que me fui a su web y me descargue la versión 5.5.1; vaya! que sorpresa tenía que descargarme un módulo llamado Visual Web Pack; después de volver a descargar este "Add-on" me instale NetBeans IDE 5.5.1 + Visual Web Pack y me puse a probar, con una grata sorpresa.

Que bien! ya tengo un editor visual en tiempo de diseño para desarrollar JSF, esto del drag&drop y el doble click sobre los componentes para acceder a su código es super cómodo; que bien que funciona todo pensaba!

Estos son los componentes JSF que trae NetBeans 5.5..1


Otra característica que me ha gustado mucho de NetBeans es que me permite ver y editar de manera visual la navegación de mis páginas JSF.


Y como pensaba que funcionaba todo bien mire la lista de componentes que traía por defecto la implementación que trae NetBeans de JSF, PUFF!!! eche en falta algunos componentes que me vendrían bien para la aplicación web que necesitaba, además el submit entero que hacian los componentes tab ("pestañas") no me terminaba de gustar así que vamos a buscar otras implementaciones....

Bueno mi espectro no era demasiado amplio ya que tengo MyFaces, IceFaces y BackBase como referencia.

BackBase es la mejor implementación que he probado para desarrollar en tiempo de diseño y la cantidad de componentes que trae, pero tiene una gran pega, ...si! esa que estáis pensando.... efectivamente es de pago, si fuera por mí la compraría, pero como no es así quedo descartada. Ah! me olvidaba, creo recordar que trae un plugin para eclipse, echarle un vistazo!

MyFaces es de Apache, lo cual es señal de calidad, tiene proyectos interesantes ( Tomahawk, Sandbox, Tobago...) con esta tecnología, pero no tiene un editor visual que valga la pena, que pena!

IceFaces... vaya resulta que soporta AJAX al igual que BackBase, que además de ser partner tiene un editor visual para NetBeans y una serie de componentes que necesito, así que vamos allá.
Ya tengo instalado NetBeans con la JDK 1.5, ahora nos toca descargarnos IceFaces y sus plugins para NetBeans, esto una vez instalado funciona decentemente, dentro de cada descarga hay un fichero Readme.html, os recomiendo leerlos por que tiene cosas tan interesantes como:

Para usar satisfactoriamente el conjunto de componentes de ICEfaces con NetBeans se necesitan usar en conjunto con los componentes ui:page, ui:html, ui:head, ui:link, ui:body y ui:form, porque NetBeans necesita usarlos para soportar el diseño visual con componentes.

IceFaces tiene una web donde además de dar explicaciones de cada componente, también lo demuestran y exponen el código fuente de estos.



- FIN -