Sakai en Eclipse (STS)

Hola, hace unas semanas que ando probando como montar esta herramienta de e-learning en varios entornos de desarrollo (Netbeans, Eclipse, Intellij), me parece una excelente aplicación muy bien estructurada y actualmente en mi trabajo pensamos adoptarla y desarrollar nuevos módulos.

Sin embargo es un proyecto de gran dimensión y es bastante complicado o tedioso para realizar el proceso de compilación, empaquetamiento y despliegue en el servidor y deacuerdo con la documentación oficial todos los pasos son por consola.

Esto puede ser un factor realmente molesto ya que si llegas a modificar una clase java el developer tiene que compilar, empaquetar y desplegar el nuevo paquete en el servidor con comandos(algo que no es muy práctico) y no hay forma de depurar el código fuente, que a mi parecer son puntualidades muy importantes para agilizar el desarrollo.

En fin, para lograr esto hay que realizar varios trucos en el IDE y en esta publicación lo voy a realizar con Eclipse, que es el IDE recomendado por la documentaicón oficial de Sakai (Aunque fue el más dificil de todos =S), vamos comenzar:

Requisitos

  1. Código fuente de Sakai (el cual haya sido compilado, empaquetado, probado y desplegado en el tomcat correctamente, todo el proceso es desde consola)… si te falta este paso, NO PUEDES CONTINUAR con esta guía (Aquí utilice la versión 2.8-SNAPSHOT).
  2. Apache tomcat 5.5, configurado para Sakai y que por lo menos haya sido levantado con los wars del proyecto, puedes comprobar esto verrificando que estan los siguientes archivos en el TOMCAT_HOME:
    1. sakai: Carpeta de configuración de Sakai con el sakai.properties.
    2. server/lib/: directorio con la libreria del framework de Sakai “sakai-dav-server-2.8-SNAPSHOT.jar“.
    3. common/lib/: directorio de librerias compartidas, incluye varios jars de sakai.
    4. shared/lib/: todas las librerias que utiliza sakai que son al rededor de unos 150 jars.
    5. components: Carpeta que contiene una subcarpeta con cada módulo como son:  accountvalidator-pack,archive-pack, etc…; Yo tengo un total de 66 directorios.
    6. webapps: Carptea que contiene una subcarpeta por cada módulo web del proyeccto, en la mia hay un total de 87 directorios.
  3. Ya que desplegaste el código asegurarte de que puedes iniciar el servidor y que puedes utilizar la plataforma normalmente (este es muy importante).
  4. Eclipse: puede ser cualquier versión pero yo lo hice con el Spring Tool Suite 2.6.1.RELEASE, pero imagino que puede ser cualquiera.
  5. Bastante memoria RAM, la integración más o menos entre el Eclipse y el Tomcat consumen unos 2 GB (GigaBytes), así que asegurate de que tienes suficiente, yo diria que por lo menos unos 4GB (o tu SO se va a quedar sin ram)·
  6. Una versión de linux, todas estas pruebas están basadas en ubuntu linux ya que administra mejor la memoria y se integra muy bien con la JVM, pero de igual forma se puede hacer en windows.

Bien, si te falta alguno de los puntos mejor no sigas leyendo hasta que tengas todos.

Confguración de los componentes:

Eclipse

Para que Eclipse pueda soportar toda la carga tenemos que aumentar sus variables de arranque, esto se modifica en el eclipse.ini (el mio se llama STS.ini), abres la carpeta donde lo instalaste y te aseguras de tener las siguientes líneas:

-vm
/opt/jdk1.6.0_23_x64/bin/java
-Xmn128m
-Xms256m
-Xmx1024m
-Xss1m
-XX:PermSize=128m
-XX:MaxPermSize=384m

Nota: Es importante que utilices la JDK, asegurate de colocar la ruta correcta hacia el tuyo, para windows debes seleccionar el archivo “bin\javaw.exe.

Maven

Dentro de eclipse seleccionas Windows-> Preferences, y luego installations. Ahí agregas la ruta de la instalación del Maven debe ser la versión 2.2.1 ya que la 3.0 genera errrores al construir sakai.

Tomcat

Seleccionas Window->Show view y buscas Servers (si no aparece, seleccionas other y  buscas la opción). Ahora en la ventana de Server das clic con el boton derecho mouse y  seleccionas New->Server, aparecerá el dialogo de configuración y buscas el Tomcat 5.5, luego en la opción Server Runtime enviroment-> Add, agregas el tomcat configurado para Sakai, despues das clic en Next y  luego Finish.

Nota: ya que te aparece el servidor asegurate que funciona, lo seleccionas y le das clic en Start y si todo se ve bien lo detienes con Stop.

Esta parte es muy importante, seleccionas el servidor que acabas de agregar con el boton derecho del mouse y seleccionas Open, te mostrará la ventana de datos del servidor:

Seleccionas “Open Launch Configuration“, en la ventana que muestra te vas a la pestaña Arguments, ahí tienes que pegar lor argumentos de configuración de Sakai, al final de la linea en la opción VM Arguments, que son:

-server -Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=512m -XX:NewSize=192m -XX:MaxNewSize=384m -Djava.awt.headless=true -Dhttp.agent=Sakai -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false -Dsun.lang.ClassLoader.allowArraySyntax=true

Nota: Pueden variar dependiendo de tu versión de código fuente, la versión que estoy utilizando es la 2.8-SNAPSHOT y son los mismos que vienen declarados en el archivo setenv.sh del tomcat.

Te pasas a la pestaña enviroment y agregas una variable llamada  JAVA_OPTS, con los mismos argumentos que colocamos arriba.

Seleccionas OK, y ahora hay que configurar los Timeouts, en Eclipse si el servidor no inicia en un cierto número de segundos detiene la ejecución y como Sakai es muy amplio puede tomar mucho más tiempo del valor que viene por defecto, así que vamos a cambiarlo, en la venta de configuración del server seleccionas Timeouts y luego colocas el valor para el Start y el Stop, aquí depende de cada maquina, en la mia toma mas o menos estos segundos:

  • Start (In seconds):320
  • Stop (In seconds): 15

Ahora hay que copiar archivos y carpetas de tu TOMCAT_HOME (el mio esta en /opt/tomcat/), seleccionas los siguientes:

  • sakai
  • components
  • common
  • server
  • shared
  • webapps

Y los pegas en el Workspace del tomcat en el Eclipse, para  mi esta en “/home/USUARIO/Proyectos/sakai-ws/.metadata/.plugins/org.eclipse.wst.server.core/tmp0”, pero el tuyo puede tener otro nombre. Además todo el contenido de webapps lo vas a mover a la carpeta “wtpwebapps” y al final debes tener algo similar a esto:

Importar código fuente de Sakai en Eclipse:

Abres tu carpeta donde tienes el código fuente de Sakai desde una consola, recuerda que debe ser una versión estable que compile y ejecute correctamente. Ya que estas adentro escribes el siguiente comando:

mvn eclipse:eclipse -Dwtpversion=1.5

Nota: Saldran algunos errores, pero no te preocupes es normal.

Ahora abres el IDE y seleccionas File->Import->Existing projects into workspace, y buscas tu carpeta de código fuente la seleccionas, te saldrá la ventana de dialogo para seleccionar los modulos y tomas todos y seleccionas Finish.

Después de un rato debes de poder ver en el explorador de paquetes  todos los módulos:

Nota: en el mio aparecen unos con la letra M porque active la gestion automatica de dependencias de maven desde el IDE.

Ahora seleccionas el módulo portal con el boton derecho del mouse y  luego en Run As-> Run on Server, en el cuadro de dialogo eliges el servidor tomcat que agregamos y seleccionas todos los módulos para el deploy y después Finish.

Al final ya puedes ver el portal dentro del navegador del Eclipse, y si modificas algún archivo al guardarlo se ejecutara el deploy automático.

Saludos

8 comentarios en “Sakai en Eclipse (STS)

  1. David Torres dijo:

    En primer lugar, gracias. Me parece un post muy útil.

    Sé que hace ya hace un año de esto, pero quizás me puedas ayudar. En el paso en el que se importan los proyectos, me aparece sólo el proyecto raíz (el cual por cierto no se puede añadir al servidor tomcat). He probado con una versión más antigua de eclipse y una versión más antigua de Sakai por si ese era el problema, pero obtengo el mismo resultado.

    Gracias!
    Un saludo

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s