Your SlideShare is downloading. ×
  • Like
  • Save
Liferay
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Liferay

  • 8,279 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • Buenas tardes Oliver: podrías compartir tu presentación conmigo?

    albeniz37 @ yahoo.com
    Are you sure you want to
    Your message goes here
  • Buenas tardes Oliver: podrías compartir tu presentación conmigo.

    Muchas gracias y saludos.

    martin.iztueta@presentaciondemaria.org
    Are you sure you want to
    Your message goes here
  • Hola Oliver, buenas tardes. Hace 2 meses te escribí solicitandote por favor si podrías compartir conmigo esta presentación, al chequear mis mails, note que no tuve ninguna información tuya. Pues te solicito nuevamente esta información. Te dejo otro correo: ruiz.roberto@outlook.com

    Muchas gracias!!

    Saludos,
    Roberto.
    Are you sure you want to
    Your message goes here
  • Oliver, buenas tardes. Por favor, podrías compartir esta presentación conmigo. Muchas gracias!!
    robertoruiz@uxorit.com
    Are you sure you want to
    Your message goes here
  • Muy interesante.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
8,279
On SlideShare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
0
Comments
5
Likes
12

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • Personales ( My Yahoo! and iGoogle ) Académicos () Gubernamentales Corporativos (Intranets) De dominio específico
  • 1. The user requests a data update by clicking the portal page. 2. The user request generates an action event on the portal server. 3. The portal server generates an event on the Portlet container. 4. The container determines that the user request requires data in Portlets A and C to be updated. 5. The container makes an Action request to Portlet A to perform the data update. 6. Portlet A performs the requested action and returns the result, if any, to the container. 7. The container makes an Action request to Portlet C. 8. Portlet C performs the action and sends the result, if any, to the container. 9. At this stage, the Action phase of the user request is completed. The container has all the data that it needs to render the page for the user. 10. The rendering phase of the user request starts. 11. The container fires a Render event to all three Portlets—either sequentially or in parallel. 12. The container gathers the responses of all three Portlets. 13. The container returns the updated page to the server. 14. The server displays the page on the user’s browser. 15. At this stage, the user request is fully processed. 16. The server now awaits another interaction from the user.

Transcript

  • 1. Óliver Centeno Álvarez Enero 2013Enero 2013 Liferay 1
  • 2. Contenidos I. Liferay y Tecnologías Java Involucradas II. Instalación de Liferay III. Gestión de Contenidos IV. Desarrollo de Portlets V. Desarrollo de Plugins y Hooks VI. Plantillas y Temas VII. Otras ConsideracionesEnero 2013 Liferay 2
  • 3. Contenidos I. Liferay y Tecnologías Java Involucradas II. Instalación de Liferay III. Gestión de Contenidos IV. Desarrollo de Portlets V. Desarrollo de Plugins y Hooks VI. Plantillas y Temas VII. Otras ConsideracionesEnero 2013 Liferay 3
  • 4. I. Liferay y Tecnologías Java Involucradas Portal: "Sitio Web que sirve de puerta de entrada (única) para ofrecer al usuario, de forma fácil e integrada, el acceso a una serie de recursos y de servicios relacionados con un mismo tema"Enero 2013 Liferay 4
  • 5. I. Liferay y Tecnologías Java Involucradas Tipos de Portal:  Personales  Académicos  Gubernamentales  Corporativos (Intranets)  De dominio específico Características:  Admiten blogs, grupos de discusión, documentos compartidos, calendarios, Wiki,…Enero 2013 Liferay 5
  • 6. I. Liferay y Tecnologías Java Involucradas Página Web CMS (Content Management System) Liferay BD JavaEnero 2013 Liferay 6
  • 7. I. Liferay y Tecnologías Java Involucradas Liferay  3 funcionalidades principales  Portal  CMS (Gestión de documentos) y WCM (Gestión de artículos, flujos, metadatos,…)  Software colaborativoEnero 2013 Liferay 7
  • 8. I. Liferay y Tecnologías Java Involucradas Liferay  Portal  Ejecutable en la mayoría de servidores Java  Modelo Web 2.0  Frameworks SOA  Soporte para LDAP y SSOEnero 2013 Liferay 8
  • 9. I. Liferay y Tecnologías Java Involucradas Liferay  CMS y WCM  Librería de documentos  Galería de imágenes  Diario (Web Content Manager o Journal)  Buscador  Software colaborativo  Blogs, Wikis, Calendarios, IM, RSS, redes sociales,…Enero 2013 Liferay 9
  • 10. I. Liferay y Tecnologías Java Involucradas Otros CMS/WCM  Microsoft Office SharePoint Server (MOSS/MSS)  IBM WebSphere Portal Server  GlassFish Web Space Server  Joomla!  Drupal  …Enero 2013 Liferay 10
  • 11. I. Liferay y Tecnologías Java Involucradas Todos se estructuran en base a módulos programables e intercambiables  SharePoint WebParts  Joomla! Componentes y Módulos  Drupal Módulos  Liferay Portlets (JSR-286)Enero 2013 Liferay 11
  • 12. I. Liferay y Tecnologías Java Involucradas  Portales y Portlets LiferayEnero 2013 Liferay 12
  • 13. I. Liferay y Tecnologías Java Involucradas Flujo de una peticiónEnero 2013 Liferay 13
  • 14. I. Liferay y Tecnologías Java Involucradas Liferay está construido sobre Java Se basa en estándares y componentes contrastados  Hibernate  ehcache  Spring MVC  Struts  …Enero 2013 Liferay 14
  • 15. I. Liferay y Tecnologías Java Involucradas Utiliza estándares de comunicación con otros sistemas  AJAX  JSON  REST  CalDAV  … Soporta gestión de proyectos mediante Ant y MavenEnero 2013 Liferay 15
  • 16. I. Liferay y Tecnologías Java Involucradas Hibernate  Motor de ORM y acceso a Base de Datos  Compatible con multitud de BBDD  Configurado mediante XML y anotaciones para la persistencia automatizada de objetos  Permite implementar el patrón DAO de manera trivial  Incluye el lenguaje HQL de consulta de objetos  Incluye un API Criteria permite construir consultas de manera programáticaEnero 2013 Liferay 16
  • 17. I. Liferay y Tecnologías Java Involucradas Struts  Herramienta para el desarrollo de aplicaciones Web basadas en el patrón MVC  Define acciones a ejecutar que pueden invocarse desde formulario Web  Permite interponer filtros a las peticiones  Tiene taglibs propios que facilitan la creación de páginas JSPEnero 2013 Liferay 17
  • 18. I. Liferay y Tecnologías Java Involucradas Spring  Framework de gestión de objetos de negocio  Inyección de dependencias  Permite instanciar objetos mediante XML  Y asociarlos entre sí mediante propiedades  Beans  Spring MVC implementa el control de las aplicaciones Web  Spring AOP permite inyectar código  Spring ORM permite integrarlo con HibernateEnero 2013 Liferay 18
  • 19. I. Liferay y Tecnologías Java Involucradas Ant  Herramienta de construcción y compilación de código basada en Java  Similar a la herramienta MAKE de UNIX  Estructura de proyecto especial  Permite realizar tareas genéricas de SO  Crear, copiar, mover, eliminar,…  Y tareas específicas de Java  Compilar, empaquetar,…  Permite secuenciar tareasEnero 2013 Liferay 19
  • 20. I. Liferay y Tecnologías Java Involucradas Maven  Gestor de dependencias  Estándar de descripción de proyectos Java  POM.XML  Permite desvincular el código de las librerías  Utiliza repositorios de librerías de distinto nivel  Gestiona el ciclo de vida del proyecto  Validar, compilar, probar, empaquetar, desplegar,..  Admite dependencias transitivas y en conflicto  Hay arquetipos con plantillas de proyectosEnero 2013 Liferay 20
  • 21. I. Liferay y Tecnologías Java Involucradas AJAX y JSON  Tecnologías basadas en JavaScript  JSON permite escribir notación similar a la de programación orientada a objeto  Además, permite representar información compleja de manera más compacta que XML  AJAX permite enviar peticiones al servidor de manera transparente para el usuario  Evita las cargas lentas y las pantallas en blancoEnero 2013 Liferay 21
  • 22. I. Liferay y Tecnologías Java Involucradas SOA y WebServices  Los Servicios Web permiten publicar funcionalidad independiente de plataforma  Se basan en estándares (HTTP, XML)  Se pueden consumir desde cualquier lenguaje  Permiten integrar aplicaciones heterogéneas  Y gestionar procesos de negocio complejos  Mule es una herramienta ESB para la integración de Servicios Web  Apache Service Mix tambiénEnero 2013 Liferay 22
  • 23. I. Liferay y Tecnologías Java Involucradas Otras tecnologías  ehcache: Caché distribuída de propósito general  jBPM: Plataforma para ejecutar procesos de negocio mediante orquestación de servicios  Intalio/BPP: Software de código abierto para SOA y BPM  jQuery: Librería JavaScript que simplifica la introducción de código en HTML. Permite gestión de eventos, AJAX,…  Lucene: Motor de búsqueda escrito en Java  Ruby: Lenguaje de programación dinámico  JBoss Seam: Framework par Web 2.0 que integra tecnologías como Ajax, JSF (JavaServer Faces), EJB3 (Enterprise JavaBeans), Java Portlets, y BPM  Tapestry: Framework para crear aplicaciones Web en Java  FreeMarker: Herramienta para generar salida en formato texto en base a plantillas  …Enero 2013 Liferay 23
  • 24. I. Liferay y Tecnologías Java Involucradas ¿Cuál/es de estas tecnología utilizar?  La que mejor conozcas  Struts, Spring MVC, Hibernate, JPA,…  La mejor adaptada a nuestras necesidades  JSF para aplicaciones tipo escritorio  La más sencilla  Portlets y HooksEnero 2013 Liferay 24
  • 25. I. Liferay y Tecnologías Java Involucradas Arquitectura LiferayEnero 2013 Liferay 25
  • 26. I. Liferay y Tecnologías Java Involucradas Arquitectura Liferay 6.0Enero 2013 Liferay 26
  • 27. I. Liferay y Tecnologías Java Involucradas Arquitectura Liferay 6.1Enero 2013 Liferay 27
  • 28. I. Liferay y Tecnologías Java Involucradas Arquitectura Liferay 6.1Enero 2013 Liferay 28
  • 29. I. Liferay y Tecnologías Java Involucradas Arquitectura Liferay  Un portal Liferay puede estar compuesto de varias instancias  Cada instancia tendrá datos independientes  Cada instancia tendrá grupos de usuarios aislados (comunidades, organizaciones,…)  Cada grupo de usuarios tiene páginas públicas y privadas implementadas como layouts  Y cada página tiene contenido implementado mediante PortletsEnero 2013 Liferay 29
  • 30. I. Liferay y Tecnologías Java Involucradas Arquitectura LiferayEnero 2013 Liferay 30
  • 31. I. Liferay y Tecnologías Java Involucradas Arquitectura Liferay  En 6.1 las comunidades se llaman sitiosEnero 2013 Liferay 31
  • 32. I. Liferay y Tecnologías Java Involucradas Modelo de aplicación  Ficheros de propiedades (.properties)  Ficheros XML de configuración  NO MODIFICARLOS!!! Mecanismo de extensión (EasyConf)  El motor de Liferay detecta ficheros "-ext"  Tienen prioridad sobre los preexistentes  El motor detecta la carpeta /Ext  Donde se pueden desplegar aplicacionesEnero 2013 Liferay 32
  • 33. I. Liferay y Tecnologías Java Involucradas 3 Estrategias de Extensión  Entorno de extensión para Portlets  Entorno de desarrollo mediante Plugins SDK  ServiceBuilder  Genera modelos y servicios (código)  A partir de un fichero de configuración service.xmlEnero 2013 Liferay 33
  • 34. I. Liferay y Tecnologías Java Involucradas Entorno de Extensión  Permite sobrescribir ficheros de configuración, JSPs,…  Se relaciona con el directorio portal-impl  Ficheros  portal-ext.properties  system-ext.propertiesEnero 2013 Liferay 34
  • 35. I. Liferay y Tecnologías Java Involucradas Plugins SDK para desarrollo  Desarrollo de Portlets, plantillas, temas, hooks, webs,…  No modifica las propiedades del portal  Pero se pueden "enganchar" mediante HooksEnero 2013 Liferay 35
  • 36. Contenidos I. Liferay y Tecnologías Java Involucradas II. Instalación de Liferay III. Gestión de Contenidos IV. Desarrollo de Portlets V. Desarrollo de Plugins y Hooks VI. Plantillas y Temas VII. Otras ConsideracionesEnero 2013 Liferay 36
  • 37. II. Instalación de Liferayo Requisitos previos o JavaSE JDK 5.0 o superior (recomendado 6.0) o Tomcat 5.5 o superior o MySQL 5.0 o superior o Ant 1.6 o superior (para desarrollo independiente)Enero 2013 Liferay 37
  • 38. II. Instalación de Liferayo Otras opciones o Se admiten otros motores de Base de Datos o Apache Derby, IBM DB2, Firebird, Hypersonic, Informix, InterBase, JDataStore, Oracle, PostgresSQL, SAP, SQL Server, Sybase, … o Se admiten otros servidores de aplicaciones o Borland ES, Apache Geronimo, Sun GlassFish, JBoss, JOnAS, JRun, OracleAS, Orion, SUN JSAS, WebLogic, WebSphere, Jetty, Resin, …Enero 2013 Liferay 38
  • 39. II. Instalación de Liferay Opciones de instalación/despliegue 1) Instalación bundle para producción 2) Instalación sobre un servidor previo 3) Instalación para desarrollo 4) Instalación para desarrollo sobre Eclipse 5) Instalación para depuración del código fuente 6) Instalación para desarrollo con Liferay IDEEnero 2013 Liferay 39
  • 40. II. Instalación de Liferay1) Instalación para despliegue y personalización 1. Descargar la versión bundle con el servidor de aplicaciones que prefiramos (Tomcat) configurado http://www.liferay.com/downloads/ 2. Descomprimir el fichero y arrancar startup. bat 3. Abrir http://localhost:8080 en un navegador 4. Login y password: test@liferay.com | test 5. Configurar el entorno CMS a placerEnero 2013 Liferay 40
  • 41. II. Instalación de Liferay2) Despliegue sobre servidor preexistente  http://www.liferay. com/documentation/liferay-portal/6. 0/administration/-/ai/installing-liferay-for-an- enterpri-4  http://www.liferay. com/documentation/liferay-portal/6.1/user- guide/-/ai/lp-6-1-ugen11-installing-liferay-on- an-existing-application-server-0Enero 2013 Liferay 41
  • 42. II. Instalación de Liferay Configuración del Origen de Datos  Liferay contiene una BD embebida  Hypersonic  No recomendable en entornos de producción  Para configurar otra BD  Crear una instancia de Base de Datos  Copiar el driver de BD en TOMCAT/lib/ext  Editar el fichero portal-ext.properties en el directorio TOMCAT/webapps/ROOT/WEB-INF/classes/  (En LR6.1 se puede encontrar en la raíz de Liferay)Enero 2013 Liferay 42
  • 43. II. Instalación de Liferay Para MySQL añadir al fichero  jdbc.default.driverClassName=com.mysql.jdbc.Driver  jdbc.default.url=jdbc:mysql://localhost:3306/<bbdd>  jdbc.default.username=<usuario>  jdbc.default.password=<clave>  schema.run.enabled=true  schema.run.minimal=falseEnero 2013 Liferay 43
  • 44. II. Instalación de Liferay3) Instalación para desarrollo (Plugin SDK) 1. Descargar y configurar JDK, Ant y MySQL o Crear las variables JAVA_HOME, ANT_HOME y MYSQL_HOME y añadirlas a PATH o Crear una instancia de Base de Datos y un usuario con permisos totales sobre ella 2. Descargar y configurar Tomcat o Descomprimir Tomcat en una carpeta e identificarla como LIFERAY_PORTAL o Crear la variable CATALINA_HOME que apunte a la carpeta en que se ha descomprimido TomcatEnero 2013 Liferay 44
  • 45. II. Instalación de Liferay3) Instalación para desarrollo (Plugin SDK) 3. Configurar entorno Liferay o Crear una carpeta para el portal y la variable LIFERAY_PORTAL que apunte a esa carpeta o Crear [PluginSDK]/build.<usuario>.properties copia de build.properties con el app.server.dir adecuadoEnero 2013 Liferay 45
  • 46. II. Instalación de Liferay4) Instalación sobre Eclipse 1. New > Other > Server > Apache > Tomcat 2. Seleccionar el directorio de Tomcat en Liferay 3. Abrir la configuración del servidor 4. Marcar la opción "Use Tomcat installation" 5. Comprobar que el deploy path es webapps 6. Crear una configuración de depuración para el servidorEnero 2013 Liferay 46
  • 47. II. Instalación de Liferay4) Instalación sobre Eclipse  Configuración de depuración para el servidor  Poner como argumento start  Poner como working directory apuntando al Tomcat  Añadir bootstrap.jar y tomcat-juli.jar al classpath  Poner como VM arguments …Enero 2013 Liferay 47
  • 48. II. Instalación de Liferay4) Instalación sobre Eclipse  VM arguments –Xms128m –Xmx512m –XX:MaxPermSize=128m -Djava.io.tmpdir="[TOMCAT_HOME]temp" -Djava.security.auth.login.config = "[TOMCAT_HOME]confjaas.config" -Dfile.encoding=UTF8 -Duser.timezone=GMT+1 -Dcatalina.base="[TOMCAT_HOME]" -Dcatalina.home="[TOMCAT_HOME]" -Dwtp.deploy="[TOMCAT_HOME]webapps" -Djava.endorsed.dirs = "[TOMCAT_HOME] commonendorsed"Enero 2013 Liferay 48
  • 49. II. Instalación de Liferay4) Instalación sobre EclipseEnero 2013 Liferay 49
  • 50. II. Instalación de Liferay5) Instalación de fuentes para depuración 1. Descargar la versión con fuentes 2. Crear un proyecto Java que apunte al código fuente 3. Depurar y asociar los fuentes del proyectoEnero 2013 Liferay 50
  • 51. II. Instalación de Liferay5) Instalación de fuentes para depuración Repositorio de fuentes de Liferay 1. Instalar el plugin Subclipse o http://subclipse.tigris.org/update_1.6.x 2. Configurar el repositorio de Liferay o Open Perspective > SVN Repository Exploring o svn://svn.liferay.com/repos/public 3. Descargar el fuente de portal/trunk y compilar con AntEnero 2013 Liferay 51
  • 52. II. Instalación de Liferay6) Uso de Liferay IDE  Eclipse Helios (o superior)  A través del Marketplace (Menú Help) o http://sourceforge.net/project/showfiles.php ? group_id=49260&package_id=215051  Descargar e instalar Liferay IDE  Ya se pueden crear proyectos de plugin LiferayEnero 2013 Liferay 52
  • 53. II. Instalación de Liferay6) Uso de Liferay IDE  Configurar en las preferencias el Plugin SDK  Si no lo tenemos hay que descargarlo  http://sourceforge.net/projects/lportal/files/Liferay% 20Portal/6.1.1%20GA2/liferay-plugins-sdk-6.1.1-ce- ga2-20121004092655026.zip/download  Crear un servidor de aplicaciones Liferay  Server > Runtime Environment  Registrar el servidor en la vista de servidores  Botón derecho > New > ServerEnero 2013 Liferay 53
  • 54. II. Instalación de Liferayo Tips (MySQL) o Comprobar el acceso a MySQL mysql –u <usuario> -p o Crear una base de datos para Liferay CREATE DATABASE miPortalLR character set utf8; o Crear un usuario para Liferay GRANT ALL ON miPortalLR.* TO <usuario> IDENTIFIED BY <password>; FLUSH PRIVILEGES; o Utilizar contraseñas seguras o Entre 6 y 10 caracteres o Mayúsculas, minúsculas, números y caracteres extraños o No legibleEnero 2013 Liferay 54
  • 55. II. Instalación de Liferayo Tips (Eclipse) o Se pueden utilizar otros IDE de desarrollo o Asignar al menos 256M a XXMaxPermSize en eclipse.ini o Comprobar el fichero catalina.properties o common.loader debe contener el valor ${catalina. home}/lib/ext/*.jarEnero 2013 Liferay 55
  • 56. Contenidos I. Liferay y Tecnologías Java Involucradas II. Instalación de Liferay III. Gestión de Contenidos IV. Desarrollo de Portlets V. Desarrollo de Plugins y Hooks VI. Plantillas y Temas VII. Otras ConsideracionesEnero 2013 Liferay 56
  • 57. III.Gestión de Contenidos Antes de desarrollar conviene conocer la forma en que se trabaja con Liferay ¿Cómo se…?  Detectan los requisitos  Crea un portal  Añaden, eliminan y editan páginas  Crean páginas hijas  Ordenan las páginas  Aplican temas a las páginas  Descargan e instalan plugins  Edita el contenido  Maneja el motor de news, journal, RSS,…  …Enero 2013 Liferay 57
  • 58. III.Gestión de Contenidos Requisitos  Usuarios y roles que van a utilizar el portal  Permisos de cada rol  Funcionalidades que va a requerir cada rol  Enlaces a otros sitios Web  Introducción de noticias  Datos a almacenar  Gráficos  Colaboración entre usuarios (P2P, SMS, IM,…)Enero 2013 Liferay 58
  • 59. III.Gestión de Contenidos Creación de Portales  Logarse en el portal  test@liferay.com:test  Menús: Pin, Add, Manage, Toogle EditEnero 2013 Liferay 59
  • 60. III.Gestión de Contenidos Creación de Portales  Crear páginas públicas/privadas (comunidad)  Establecer un layout (estructura) para las páginas  Páginas padre/hija, tabulado,…  Añadir Portlets a las páginasEnero 2013 Liferay 60
  • 61. III.Gestión de Contenidos Creación de Páginas  Add > Page  Manage > Page > Children > Add child pages  Cambiar el orden de las páginas hijas  Cambiar el Look & Feel (temas)  Establecer "friendly URLs"  Editar páginas principalesEnero 2013 Liferay 61
  • 62. III.Gestión de Contenidos Ejercicio 1  Crear un portal para el curso con las páginas  Bienvenida  Temario  Tecnologías involucradas  Ejercicios  AdministraciónEnero 2013 Liferay 62
  • 63. III.Gestión de Contenidos Ejercicio 2  Añadir páginas hijas a "Tecnologías involucradas"  Hibernate  Spring  Struts  JSF  …  Privatizar la página de ejercicios  Cambiar el tema del portalEnero 2013 Liferay 63
  • 64. III.Gestión de Contenidos Instalación de aplicaciones (Portlets)  LR6: Add > More…  LR5: Add Application  Tipos de Portlet Admin Finance CMS Google Collaboration (blogs, News calendarios, Wikis,…) Community Social Entertainment ShoppingEnero 2013 Liferay 64
  • 65. III.Gestión de Contenidos Plugin Installer  Se pueden instalar numerosos temas, Portlets, plantillas,…  Algunos están disponibles, otros hay que descargarlos  Para ello se utiliza el Plugin Installer  LR6: Add > More… > Install More Applications  LR5: Add Application > Admin > Plugin InstallerEnero 2013 Liferay 65
  • 66. III.Gestión de Contenidos Plugin Installer  Requiere conexión a Internet  Se listan los plugins disponibles  Buscar e instalar tema Envision  Si no se encuentra se puede descargar el WAR  E instalarlo con la opción Upload File  Descargar e instalar el tema TransparentiaEnero 2013 Liferay 66
  • 67. III.Gestión de Contenidos Personalización de Portlets  Look & Feel  Configuración del Portlet  Estilos  Márgenes  CSSEnero 2013 Liferay 67
  • 68. III.Gestión de Contenidos Personalización de Portlets  Configuration  Setup  Supported clients (navegadores móviles)  Permissions  Sharing  Scope  Export/Import  A formato LAREnero 2013 Liferay 68
  • 69. III.Gestión de Contenidoso Publicación de contenidos o Writer o Add Web Content o Editar el contenido o Submit for Publication o Publisher o Control Panel > My Workflow Tasks o Actions > Assign to… o Aprove/RejectEnero 2013 Liferay 69
  • 70. III.Gestión de Contenidoso Gestión de usuarioso (Control Panel/Enterprise Admin) o Usuarios o Grupos o Roles (colección de permisos) o Regular (general) o Community o OrganizationEnero 2013 Liferay 70
  • 71. III.Gestión de Contenidoso Gestión de usuarios o Organizaciones o Jerarquías de usuarios (departamento, subsidiario, …) o Se pueden añadir organizaciones hijas o Location o Oficinas centrales o Ya no pueden tener más hijas o Regular o Oficina satélite o Pueden tener más hijas o Select parentEnero 2013 Liferay 71
  • 72. III.Gestión de Contenidoso Gestión de usuarios o Organizaciones o Tras crear una organización se añaden más datos o …, E-mail, dirección postal, página Web,… o Se puede indicar el horario comercial o Para cada tipo de servicio ofrecidoEnero 2013 Liferay 72
  • 73. III.Gestión de Contenidoso Gestión de usuarios o Comunidades o Conjunto de usuarios sin jerarquía o Complemento de las organizaciones o Controladas por los propios usuarios o Se pueden invitar entre sí o Abierta, restringida o cerradaEnero 2013 Liferay 73
  • 74. III.Gestión de Contenidoso Roles predefinidos no modificables o Regulares o Administrator o Guest o User o Power UserEnero 2013 Liferay 74
  • 75. III.Gestión de Contenidoso Roles predefinidos no modificables o Comunitarios o Community Administrator (no editan usuarios/contenido) o Community Member o Community Owner (creador, root) o Organizacionales o Organization Administrator (no suben usuarios a admin) o Organization Member o Organization Owner (creador, root)Enero 2013 Liferay 75
  • 76. III.Gestión de Contenidoso Más sobre gestión de usuarios o Se pueden reservar nombres y e-mails o Se puede impersonar un usuario para ver el portal cómo si fuéramos ese usuario o Se pueden modificar los valores por defecto del portal (Portal settings)Enero 2013 Liferay 76
  • 77. III.Gestión de Contenidoso Más sobre gestión de usuarios o Se pueden añadir políticas para passwords o Se pueden configurar servidores de autenticación o LDAP, CAS, SSO, NTLM,… o Se pueden crear notificaciones por email o Cuenta creada, password cambiado, recuperar passwordEnero 2013 Liferay 77
  • 78. III.Gestión de Contenidoso Gestión de Documentos o LR6: Add > More… > Document Library o LR5: Add Application > Document Library o LR6.1 Añade tipos de documento y metadatos o Crear directorios con permisos o Subir documentos o Add document > Browse (Firefox) o Classic uploader (Otros navegadores)Enero 2013 Liferay 78
  • 79. III.Gestión de Contenidoso Gestión de Documentos o Se pueden crear accesos directos o Se puede ver, editar, puntuar, eliminar, establecer permisos,… o Se puede mostrar un navegador rápido o LR6: Add > Document Library Display o LR5: Add Application > Document Library DisplayEnero 2013 Liferay 79
  • 80. III.Gestión de Contenidoso Ejercicio 3 o Crear una organización "Mi Empresa" con varias localizaciones geográficas o Crear dos grupos o Desarrolladores y Gerentes o Crear una comunidad de programadoresEnero 2013 Liferay 80
  • 81. III.Gestión de Contenidoso Ejercicio 4 o Crear y asignar usuarios o Crear una librería de documentos con carpetas o Instalación o Ejemplos o Plugins o Asignar varios permisosEnero 2013 Liferay 81
  • 82. III.Gestión de Contenidoso Configuración del portal o TOMCAT_HOME/webapps/ROOT/WEB- INF/classes/ o system-ext.properties  user.country=ES  user.language=es  user.timezone=Europe/ParisEnero 2013 Liferay 82
  • 83. III.Gestión de Contenidoso Configuración del portal o portal-ext.properties  browser.launcher.url=http://localhost:8080  company.default.home.url=/web/guest  auth.forward.by.last.path=true  terms.of.use.required=true  terms.of.use.journal.article.group.id=<Id>  terms.of.use.journal.article.id=<Id>  session.enable.url.with.session.id=true  session.enable.persistent.cookies=true  look.and.feel.modifiable=trueEnero 2013 Liferay 83
  • 84. III.Gestión de Contenidoso Configuración del portal o portal-ext.properties  session.timeout=30  session.timeout.warning=1  session.timeout.auto.extend=false  session.timeout.redirect.on.expire=false  users.reminder.queries.enabled=true  users.reminder.queries.required=false  users.reminder.queries.custom.question.enabled=true  users.reminder.queries.questions=cual-es-tu- color-favorito,cual-es-el-nombre-de-tu-mascota, que-opinas-de-la-caza-de-la-lagartijaEnero 2013 Liferay 84
  • 85. III.Gestión de Contenidoso Configuración del portal o portal-ext.properties  default.layout.template.id=2_columns_ii (30/70)  default.admin.password=test  default.admin.screen.name=test  default.admin.email.address.prefix=test  default.admin.first.name=Test  default.admin.middle.name=  default.admin.last.name=TestEnero 2013 Liferay 85
  • 86. III.Gestión de Contenidoso Configuración del portal o portal-ext.properties  default.guest.public.layout.name=Welcome  default.guest.public.layout.template.id= 2_columns_ii  default.guest.public.layout.column-1=58  default.guest.public.layout.column-2=47  default.guest.public.layout.column-3=  default.guest.public.layout.column-4=  default.guest.public.layout.friendly.url= /homeEnero 2013 Liferay 86
  • 87. III.Gestión de Contenidoso Configuración del portal o portal-ext.properties  ## MySQL  jdbc.default.driverClassName=com.mysql. jdbc.Driver  jdbc.default.url=jdbc:mysql://localhost : 3306/ddbb  jdbc.default.username=<usuario>  jdbc.default.password=<clave>Enero 2013 Liferay 87
  • 88. III.Gestión de Contenidoso Configuración del portal o portal-ext.properties  ## JNDI  jdbc.default.jndi.name=jdbc/LiferayPool  ## Hibernate  hibernate.hbm2ddl.auto=update  ## Transacciones  transaction.isolation.portal=2 -1 default 1 read uncommitted 2 read committed 4 repeatable read 8 serialize-ableEnero 2013 Liferay 88
  • 89. III.Gestión de Contenidoso Configuración del portal o portal-ext.properties  ## Mail  mail.session.jndi.name=mail/MailSession  mail.session.mail.pop3.host=pop.gmail.com  mail.session.mail.pop3.port=110  mail.session.mail.imap.host=imap.gmail.com  mail.session.mail.imap.port=993  mail.session.mail.transport.protocol=smtpEnero 2013 Liferay 89
  • 90. III.Gestión de Contenidoso Configuración del portal o portal-ext.properties  ## Mail  mail.session.mail.smtp.host=smtp.gmail.com  mail.session.mail.smtp.password=${password}  mail.session.mail.smtp.user=${username}  mail.session.mail.smtp.port=465  mail.session.mail.smtp.auth=true  mail.session.mail.smtp.socketFactory.class=  javax.net.ssl.SSLSocketFactoryEnero 2013 Liferay 90
  • 91. III.Gestión de Contenidoso Configuración del portal o portal-ext.properties  ## Organizaciones  organizations.types=regular-organization,location  organizations.rootable[regular-organization]=true  organizations.rootable[location]=false  organizations.form.update.main= details,pages, categorization  organizations.form.update.identification= addresses,phonenumbers,additional-email-addresses, websites,services  organizations.form.update.miscellaneous= comments, reminderqueriesEnero 2013 Liferay 91
  • 92. III.Gestión de Contenidoso Configuración del portal o portal-ext.properties  ## Organizaciones  organizations.children.types[regular- organization]=regular-organization,location  organizations.country.enabled[regular- organization]=false  organizations.country.required[regular- organization]=false  organizations.country.enabled[location]=true  organizations.country.required[location]=trueEnero 2013 Liferay 92
  • 93. III.Gestión de Contenidoso Configuración del portal o portal-ext.properties  ## LDAP  ldap.auth.enabled=true  ldap.export.enabled=false  ldap.server.ids=1,2  ldap.server.name.1=Principal  ldap.base.provider.url.1=ldap://localhost:10389  ldap.security.principal.1=uid=admin,ou=system  ldap.security.credentials.1=test  ldap.user.custom.mappings. 1=employeeNumber=employeeNumber, telephonenumber=telephonenumberEnero 2013  ldap.auth.method=bind Liferay 93
  • 94. Contenidos I. Liferay y Tecnologías Java Involucradas II. Instalación de Liferay III. Gestión de Contenidos IV. Desarrollo de Portlets V. Desarrollo de Plugins y Hooks VI. Plantillas y Temas VII. Otras ConsideracionesEnero 2013 Liferay 94
  • 95. IV. Desarrollo de Portletso Portlet o Mini-aplicación que proporciona contenido o Componente gráfico usado en portales o Configurados en WEB-INFportlet.xml o Generan código según su modo (VIEW, EDIT, HELP) o Y su estado (Normal, Maximizado, Minimizado)Enero 2013 Liferay 95
  • 96. IV. Desarrollo de Portletso Contenedor de Portlets o Entorno de ejecución para los Portlets o Extensión del contenedor de Servlets o Maneja el ciclo de vida y almacena las preferenciaso Portal o Responsable de agregar el contenido generado por los Portlets para formar una aplicación WebEnero 2013 Liferay 96
  • 97. IV. Desarrollo de Portletso Anatomía de un PortletEnero 2013 Liferay 97
  • 98. IV. Desarrollo de Portletso Ciclo de Vida de un Portlet o Carga o Inicialización o Procesado de Acciones (1) o Renderizado (todos) o DestrucciónEnero 2013 Liferay 98
  • 99. IV. Desarrollo de Portletso Interfaz Portlet o init(PortletConfig); o processAction(ActionRequest, ActionResponse); o render(RenderRequest, RenderResponse); o destroy();Enero 2013 Liferay 99
  • 100. IV. Desarrollo de Portletso El aspecto de un Portlet es dinámico o Depende de su configuración o Del estilo del texto, los bordes y el fondo o De los márgenes y el relleno o De la programación del Portlet o De su modo y estadoEnero 2013 Liferay 100
  • 101. IV. Desarrollo de Portletso Interfaz PortletConfig  Map<String, String[]> getContainerRuntimeOptions();  String getInitParameter(String name);  Enumeration<String> getInitParameterNames();  PortletContext getPortletContext();  String getPortletName();  ResourceBundle getResourceBundle(Locale locale);  Enumeration<Locale> getSupportedLocales();Enero 2013 Liferay 101
  • 102. IV. Desarrollo de Portletso Procesamiento o Interfaz PortletRequest  ActionForward render(ActionMapping mapping, ActionForm form, PortletConfig PortletConfig, RenderRequest req, RenderResponse res);Enero 2013 Liferay 102
  • 103. IV. Desarrollo de Portletso Procesamiento o Interfaz PortletResponse  void addProperty(Cookie cookie);  void addProperty(String key, Element element);  void addProperty(String key, String value);  Element createElement(String tagName);  String encodeURL(String path);  String getNamespace();  void setProperty(String key, String value);Enero 2013 Liferay 103
  • 104. IV. Desarrollo de Portletso Configuración o Interfaz PortletContext  String getServerInfo();  InputStream getResourceAsStream(String path);  int getMajorVersion();  int getMinorVersion();  URL getResource(String path);  Object getAttribute(String name);Enero 2013 Liferay 104
  • 105. IV. Desarrollo de Portletso Configuración o Interfaz PortletPreferences  boolean isReadOnly(String key);  String getValue(String key, String def);  void setValue(String key, String value);  Enumeration<String> getNames();  void reset(String key);  void store();Enero 2013 Liferay 105
  • 106. IV. Desarrollo de Portletso Configuración o Fichero portlet.xml <portlet> <portlet-name>NOMBRE_UNICO</portlet-name> <display-name>MiPortlet</display-name> <portlet-class> com.ext.portlet.MiPortlet </portlet-class> <portlet-preferences> <preference> <name>test</name> <value>123</value> <read-only>true</ready-only> </preference> </portlet-preferences> </portlet>Enero 2013 Liferay 106
  • 107. IV. Desarrollo de Portletso Vista de un Portlet o Variables de la JSP o request y response o portletConfig o portletSession o portletSessionScope (atributos de sesión) o portletPreferences o portletPreferencesValues (mapa de preferencias)Enero 2013 Liferay 107
  • 108. IV. Desarrollo de Portletso Vista de un Portlet o Librerías de etiquetas o uri="http://java.sun.com/portlet_2_0" prefix="portlet" o <portlet:defineObjects /> o <portlet:renderURL windowState="..." />Enero 2013 Liferay 108
  • 109. IV. Desarrollo de Portletso Interacción entre Portlets 1.0  Sesiones compartidas <shared-application-session-attribute> <name>compartida</name> </ shared-application-session-attribute> <portlet> <shared-portlet-session-attribute> <name>var</name> <java-class>com.paquete.Clase</java-class> </shared-portlet-session-attribute> </portlet>Enero 2013 Liferay 109
  • 110. IV. Desarrollo de Portletso Interacción entre Portlets 1.0  Sesiones compartidas  Se accede a través de PortletSession  setAttribute("var", valor, PortletSession. APPLICATION_SCOPE)  getAttribute("var", PortletSession. APPLICATION_SCOPE)Enero 2013 Liferay 110
  • 111. IV. Desarrollo de Portletso Interacción entre Portlets 2.0  Parámetros compartidos <public-render-parameter> <identifier>compartida</identifier> <qname xmlns:x="http://namespace/comun">x:var1</qname> </public-render-parameter> <portlet> <supported-public-render-parameter> compartida </supported-public-render-parameter> </portlet>Enero 2013 Liferay 111
  • 112. IV. Desarrollo de Portletso Interacción entre Portlets 2.0  Parámetros compartidos  Se accede a través de renderRequest  setRenderParameter("var", valor)  getParameter("var")Enero 2013 Liferay 112
  • 113. IV. Desarrollo de Portletso Interacción entre Portlets 2.0  Sesiones compartidas (liferay-portlet.xml) <liferay-portlet-app> <portlet> <private-session-attributes> false </private-session-attributes> </portlet> </liferay-portlet-app>Enero 2013 Liferay 113
  • 114. IV. Desarrollo de Portletso Interacción entre Portlets 2.0  Se accede a través de PortletSession  renderRequest.getPortletSession();  setAttribute("var", valor, PortletSession. APPLICATION_SCOPE)  getAttribute("var", PortletSession. APPLICATION_SCOPE)Enero 2013 Liferay 114
  • 115. IV. Desarrollo de Portletso Eventos <event-definition> <qname xmlns:x="http://mi.namespace">x:var</qname> <value-type>java.lang.String</value-type> </event-definition> <portlet> <supported-publishing-event> <qname xmlns:x="http://mi.namespace">x:var</qname> </supported-publishing-event> <supported-processing-event> <name>var</name> </supported-processing-event> </portlet>Enero 2013 Liferay 115
  • 116. IV. Desarrollo de Portletso Eventos o Interfaz EventPortlet para recibir eventos o processEvent(EventRequest, EventResponse) o request.getEvent() o response.setEvent(qname, valor) o Usar objetos QName con el namespace definido o new QName ("http://mi.namescape", "var");Enero 2013 Liferay 116
  • 117. IV. Desarrollo de Portletso Un Portlet simple 1. Configurar portlet.xml o <portlet-name> o <portlet-class> (MVCPortlet) o <init-param> (view-jsp) o <supports> (text/html) o <security-role-ref>Enero 2013 Liferay 117
  • 118. IV. Desarrollo de Portletso Un Portlet simple 2. Crear la página vista.jsp o <portlet:defineObjects /> o <portlet:renderURL> (renderizado -> JSP) o <portlet:actionURL> (acción -> Clase Portlet) o <aui:form> o <portlet:param name="jspPage"> 3. Implementar la lógica de navegaciónEnero 2013 Liferay 118
  • 119. IV. Desarrollo de Portletso Un Portlet Programático 1. Crear un Portlet sencillo 2. Extender la clase Portlet deseada o MVCPortlet o LiferayPortlet o GenericPortlet o ...Enero 2013 Liferay 119
  • 120. IV. Desarrollo de Portletso Un Portlet Programático 3. Implementar la acción por defecto y otras o processAction(ActionRequest, ActionResponse) o otraAccion(ActionRequest, ActionResponse) o SessionMessages o SessionErrors 4. Ampliar las JSP o <portlet:actionURL name="otraAccion">  <liferray-ui:success key="…" message="…" />  <aui:input>Enero 2013 Liferay 120
  • 121. Contenidos I. Liferay y Tecnologías Java Involucradas II. Instalación de Liferay III. Gestión de Contenidos IV. Desarrollo de Portlets V. Desarrollo de Plugins y Hooks VI. Plantillas y Temas VII. Otras ConsideracionesEnero 2013 Liferay 121
  • 122. V. Desarrollo de Plugins y Hookso Existen 5 tipos básicos de plugin o Portlets o Ext o Hooks o Plantillas o TemasEnero 2013 Liferay 122
  • 123. V. Desarrollo de Plugins y Hookso Plugins SDK se distribuye con la estructura adecuada para poder crear cualquiera de elloso Además, incluye ficheros create (.bat y . sh) para facilitar la creación del proyectoo Y descriptores Ant para la compilación y el despliegue sobre el portalEnero 2013 Liferay 123
  • 124. V. Desarrollo de Plugins y Hookso Liferay IDE o Integrado en Eclipse o Permite crear proyecto para plugins o Permite crear descriptores Service Builder o Requiere Liferay Portal + Plugins SDK o Los proyectos se generan en Plugins SDK o Fichero build.{usuario}.properties de configuraciónEnero 2013 Liferay 124
  • 125. V. Desarrollo de Plugins y HooksEnero 2013 Liferay 125
  • 126. V. Desarrollo de Plugins y Hooks SnippetsEnero 2013 Liferay 126
  • 127. V. Desarrollo de Plugins y Hookso Plugins Hook o Permiten "enganchar" y sobrescribir propiedades y funcionalidad del portal o Hook de propiedades o Reemplaza propiedades o Permite responder a eventos o Hook de Servicios o Reemplaza servicios locales o Extendiendo la claseEnero 2013 Liferay 127
  • 128. V. Desarrollo de Plugins y Hookso Plugins Hook o Hook de páginas JSP o Reemplaza una JSP o Recomendable usar <liferay-util:buffer> para no tener que modificar el hook si hay cambios o Hook de idioma o Reemplaza los ficheros de localizaciónEnero 2013 Liferay 128
  • 129. V. Desarrollo de Plugins y Hookso Plugins Ext o De muy bajo nivel o Permite desarrollar usando Liferay como plataforma o Deprecated o Utilizarlos SÓLO en caso de que no sea posible implementar un Portlet o un HookEnero 2013 Liferay 129
  • 130. V. Desarrollo de Plugins y Hookso Plugins Ext o Aplican cambios a los módulos de Liferay o ext-impl o ext-lib o ext-service o ext-web o portlet-ext.xml o struts-config-ext.xmlEnero 2013 Liferay 130
  • 131. V. Desarrollo de Plugins y Hookso Desarrollo de Ext mediante Plugins SDK o Estructura definida (fichero ext.zip) o /ext-service/ contiene servicios externos (modelo, persistencia, servicios de negocio,…) o /ext-impl/ contiene portal-ext y system-ext o /ext-web/docroot/html/ contiene las JSP o /ext-web/docroot/WEB-INF/ contiene descriptores XMLEnero 2013 Liferay 131
  • 132. V. Desarrollo de Plugins y Hookso Desarrollo de Ext mediante Plugins SDK o Fichero build.properties o create.bat proyecto "descripcion" o Utilizar ServiceBuilder para generar código o Beans, Scripts SQL, hbm, JSON, AXIS, Spring,… o Fichero service.xmlEnero 2013 Liferay 132
  • 133. V. Desarrollo de Plugins y Hookso ServiceBuilder o Herramienta para construir servicios Java o Utilizada con el entorno Ext pero depreciada en LR6o Pasos 1. Crear el proyecto de extensión o create.bat proyecto "Descripción del proyecto" 2. Crear el fichero service.xmlEnero 2013 Liferay 133
  • 134. V. Desarrollo de Plugins y Hookso Pasos 3. Ejecutar el target build-service-portlet-reports de Ant o ant build-service -Dservice.file=ruta/al/fichero 4. Modificar los ficheros de implementación o model/impl/EntidadImpl.java o service/impl/EntidadLocalServiceImpl.java o service/impl/EntidadServiceImpl.java 5. Regenerar el servicio o Clase estática EntidadLocalServiceUtilEnero 2013 Liferay 134
  • 135. V. Desarrollo de Plugins y Hookso Ejemplo service.xml <service-builder package-path="paquete.portlet"> <namespace>MisPortlets</namespace> <entity name="RegistroBD" local-service="true" remote-service="true" uuid="true" persistence-class= "org.curso.RegistroBDPersistenceImpl"> <column name="id" type="String" primary="true" /> <column name="campo1" type="String" /> <column name="campo2" type="Date" /> <order by="asc"> <order-column name="campo1" case-sensitive="false" /> </order> <finder name="FiltroCampo2" return-type="Collection"> <finder-column name="campo2" /> </finder> </entity> </service-builder>Enero 2013 Liferay 135
  • 136. Contenidos I. Liferay y Tecnologías Java Involucradas II. Instalación de Liferay III. Gestión de Contenidos IV. Desarrollo de Portlets V. Desarrollo de Plugins y Hooks VI. Plantillas y Temas VII. Otras ConsideracionesEnero 2013 Liferay 136
  • 137. VI. Plantillas y Temaso Plantilla o Estructura de organización de Portlets o Se aplica a una página o Fichero .tplEnero 2013 Liferay 137
  • 138. VI. Plantillas y Temaso Ejemplo de plantilla <div class="plantilla" id="main-content" role="main"> <div class="portlet-layout"> <div class="aui-w40 ..." id="column-1"> $processor.processColumn("column-1", "...") </div> <div class="aui-w60 ..." id="column-2"> $processor.processColumn("column-2", "...") </div> </div> </div>Enero 2013 Liferay 138
  • 139. VI. Plantillas y Temaso Tema o Aspecto aplicable al portal o a una página  /deep-blue-theme/  /docroot/  /WEB-INF/  /_diffs/  /css/  /images/  /js/  /templates/Enero 2013 Liferay 139
  • 140. VI. Plantillas y Temaso Ficheros VM o Definen la estructura de  Portal  Navegación  Portlets  ...Enero 2013 Liferay 140
  • 141. VI. Plantillas y Temaso Ficheros VM o Contiene código HTML y variables $ o $theme representa el tema o $full_templates_path la ruta a plantillas Liferay o $PortletDisplay o $htmlUtil o ${images-path} o ${css-class} o $w3c_language_idEnero 2013 Liferay 141
  • 142. VI. Plantillas y Temaso Ficheros VM o Admite control de flujo y pseudo-funciones o #if() o #else o #end o #foreach($var in $conjunto) o #parse() o #set() o #language() o #css() o #js()Enero 2013 Liferay 142
  • 143. VI. Plantillas y Temaso Ejemplo: Plantilla Portlet.vm <header class="portlet-topper"> <menu class="portlet-topper-toolbar" id="portlet-topper-toolbar_$Portlet_id" type="toolbar"> #if ($Portlet_display.isShowBackIcon()) <a href="$Portlet_back_url" class="portlet-icon-back"> #language("return-to-full-page")</a> #else $theme.iconOptions() $theme.iconMinimize() $theme.iconMaximize() $theme.iconClose() #end </menu> </header>Enero 2013 Liferay 143
  • 144. Contenidos I. Liferay y Tecnologías Java Involucradas II. Instalación de Liferay III. Gestión de Contenidos IV. Desarrollo de Portlets V. Desarrollo de Plugins y Hooks VI. Plantillas y Temas VII. Otras ConsideracionesEnero 2013 Liferay 144
  • 145. VII. Otras Consideracioneso Admin ServerEnero 2013 Liferay 145
  • 146. VII. Otras Consideracioneso Admin Server o Liberar memoria mediante GC o Liberar caché (VM, cluster y BD) o Reindexar el motor de búsqueda o Volcar el contenido de los hilos o Verificar la BD o Disparar apagados controlados o Establecer niveles de LOGEnero 2013 Liferay 146
  • 147. VII. Otras Consideracioneso Admin Server o Configurar la subida de archivos o Configurar el servidor de correo o Migración de datos (documentos, BD, imágenes) o …o Instancias del Portal o Varios portales en el mismo servidorEnero 2013 Liferay 147
  • 148. VII. Otras Consideracioneso Alta disponibilidad o Ejecutar un portal en servidores paralelos o Con balanceo de carga o Y robustez al falloEnero 2013 Liferay 148
  • 149. VII. Otras Consideracioneso Alta disponibilidad o Ejemplo 1: Apache HTTP Server + mod_jk + TomcatEnero 2013 Liferay 149
  • 150. VII. Otras Consideracioneso Alta disponibilidad o Ejemplo 2: Apache HTTP Server + mod_proxy + TomcatEnero 2013 Liferay 150
  • 151. VII. Otras Consideracioneso Alta disponibilidad o Checklist 1. Habilitar en Tomcat 2. Habilitar en Liferay 3. Balanceador (Apache) 4. BD Centralizada (MySQL) 5. Ehcache 6. SOLR (datos indexados y búsqueda) 7. Biblioteca de documentos centralizadaEnero 2013 Liferay 151
  • 152. VII. Otras Consideracioneso Alta disponibilidad o Para Tomcat 1. Cambiar los puertos de o SHUTDOWN, HTTP/1.1 y AJP 1.3 2. Descomentar <Cluster> 3. Añadir jvmRoute a <Engine> o Distinta para cada instancia de Tomcat o Para Apache 1. Añadir la configuración para mod_jk y workers. propertiesEnero 2013 Liferay 152
  • 153. VII. Otras Consideracioneso Alta disponibilidad o Para cada portal Liferay 1. Añadir a ROOT/WEB-INF/web.xml o <distributable/> 2. Y configurar portal-ext.properties o portal-ext.properties  net.sf.ehcache.configurationResourceName= /ehcache/hibernate-clustered.xml  ehcache.multi.vm.config.location=/ehcache /liferay-multi-vmclustered.xmlEnero 2013 Liferay 153
  • 154. VII. Otras Consideracioneso Certificados self-signed 1. Importar el certificado a Java  keytool -import -alias tomcat -file CERTIFICADO. CRT -keypass CONTRASEÑA -keystore %JAVA_HOME% /jre/lib/security/cacerts 2. Configurar la JVM de Tomcat  JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.trustStore= %JAVA_HOME%jrelibsecuritycacerts -Djavax. net.ssl.trustStorePassword=CONTRASEÑA" 3. portal-ext.properties  mail.session.mail.smtp.starttls.enable=falseEnero 2013 Liferay 154
  • 155. VII. Otras Consideracioneso Backup o Los plugins a parte (repositorio) o portal-ext.properties o Directorio LIFERAY_HOME/data o BD o Exportarla o hacer el backup con el DBMSEnero 2013 Liferay 155
  • 156. VII. Otras Consideracioneso Restore o Copiar directorio LIFERAY_HOME/data o Recuperar BD o Recuperar el backup a la misma instancia/catálogo o Modificar los parámetros de portal-ext.properties o Copiar portal-ext.properties o Reinstalar plugins o Reindexar o Panel de Control > Admin Servidor > ReindexarEnero 2013 Liferay 156
  • 157. VII. Otras Consideracioneso Cluster de BD o Liferay no implementa clustering o Pero se puede simular con JNDI o TOMCAT/conf/catalina/localhost/root.xml <Resource name="jdbc/LiferayPool" type="javax.sql.DataSource" driverClassName="org.continuent.sequoia.driver.Driver" url="jdbc: sequoia://192.168.10.19:25322,192.168.10.20:25323/lportal" auth=" Container" username="usr" password="pwd" maxActive="20" /> o Middleware Sequoia (http://sequoia. continuent.org)Enero 2013 Liferay 157
  • 158. VII. Otras Consideracioneso Cluster de BD o Se puede utilizar una BD para lectura y otra para escritura o Y mantenerlas sincronizadas por DBMS o Propiedades o jdbc.read.* o jdbc.write.* o Habilitar fichero de configuración Spring o dynamic-data-source-spring.xmlEnero 2013 Liferay 158
  • 159. VII. Otras Consideracioneso Partición de BD o Sharding o Escalabilidad en entornos con un número masivo de usuarios o Dividir una BD en varias instancias o Mejora la escalabilidad o Propiedades jdbc.xxx para cada instancia o Fichero shard-data-source-spring.xmlEnero 2013 Liferay 159
  • 160. VII. Otras Consideracioneso Partición de BD o Configuración portal-ext.properties: # Particiona por instancias de LR shard.selector=com.liferay.portal.dao.shard. RoundRobinShardSelector # alternativa: ManualShardSelector # Otros modos hay que implementarlos properties.shard.available.names=xxx,yyy,zzz shard.default.name=xxx jdbc.default.* jdbc.xxx.*Enero 2013 Liferay 160
  • 161. VII. Otras Consideracioneso Configuración de Spring o Habilitar en portal.properties: spring.configs=META-INF/base-spring.xml, ... # Para BD read-write META-INF/dynamic-data-source-spring.xml, # Para Sharding META-INF/shard-data-source-spring.xml, ... META-INF/ext-spring.xmlEnero 2013 Liferay 161
  • 162. VII. Otras Consideracioneso dynamic-data-source-spring.xml <bean id="dynamicDataSourceTargetSource" class="com.liferay. portal.dao.jdbc.aop. DynamicDataSourceTargetSource"> <property name="readDataSource"> <bean class="com.liferay.portal.dao.jdbc.spring. DataSourceFactoryBean"> <property name="porpertyPrefix" value="jdbc.read." /> </bean> </property> <property name="writeDataSource"> <bean ... </property> </bean>Enero 2013 Liferay 162
  • 163. VII. Otras Consideracioneso shard-data-source-spring.xml <bean id="shardDataSource1" class="org.springframework.jdbc. datasource.LazyConnectionDataSourceProxy"> <property name="targetDataSource"> <bean class="com.liferay.portal.dao.jdbc.spring. DataSourceFactoryBean"> <property name="porpertyPrefix" value="jdbc.xxx." /> </bean> </property> </bean>Enero 2013 Liferay 163
  • 164. VII. Otras Consideracioneso Tuning o Bajo servidor Core 2 Quad, 8GB RAM, 2 discos SCSI y SO CentOS, el portal soporta o Alrededor de 3.000 usuarios concurrentes (6.0) o 11.000 en la versión 6.1 o Unos 1300 incluyendo portlets colaborativos o 5.000 en la versión 6.1 o El gestor de contenido CMS/WCM soporta o Más de 150.000 usuarios concurrentesEnero 2013 Liferay 164
  • 165. VII. Otras Consideracioneso Tuning o ¿Cómo mantener este rendimiento? o Mantener un pool de conexiones pequeño (200- 400) o Desactivar filtros innecesarios o Tunear los parámetros de la JVM o Usar un servidor estático para contenido estático o Utilizar partición de base de datos o Tunear ehcache o Página 626 del manualEnero 2013 Liferay 165
  • 166. VII. Otras Consideracioneso Tuning o Servidor Apache para contenido estático 1. Copiar el contenido estátido de TOMCATwebapps a APACHEhtdocs 2. Descargar mod_jk para Apache 3. Crear un fichero APACHEconfworker.properties para redirigir a Tomcat vía AJP  worker.list=worker1  worker.worker1.port=8009  worker.worker1.host=localhost  worker.worker1.type=ajp13Enero 2013 Liferay 166
  • 167. VII. Otras Consideracioneso Tuning o Servidor Apache para contenido estático 4. Crear un fichero APACHEconfhttpd-mod_jk.conf para especificar las reglas de redirección  LoadModule jk_module modules/mod_jk.so  JkWorkersFile conf/workers.properties  JkMount /* worker1 Jkunmount /*.jpg worker1  Jkunmount /*.gif worker1 Jkunmount /*.png worker1  Jkunmount /*.ico worker1 Jkunmount /*.js worker1 5. Anexar este fichero a httpd.conf de Apache  Include conf/httpd-mod_jk.confEnero 2013 Liferay 167
  • 168. VII. Otras Consideraciones Otras recomendaciones  Evitar el uso de código Java en páginas JSP  Taglibs y expresiones EL  Utilizar <liferay-util:buffer> al suplantar JSP <liferay-util:buffer var="html"> <liferay-util:include page="/.../pagina.jsp" /> </ liferay-util:buffer> ${html}Enero 2013 Liferay 168
  • 169. VII. Otras Consideraciones Algoritmos para GC en Java  Serial Collector  Tipo Stop-the-World  -XX:+UseSerialGC  Parallel [Compacting] Collector  -XX:+UseParallelGC  -XX:+UseParallelOldGC  Concurrent Mark-Sweep Collector  -XX:+UseConcMarkSweepGC  -XX:+CMSIncrementalModeEnero 2013 Liferay 169
  • 170. VII. Otras Consideraciones Algoritmos para GC en JavaEnero 2013 Liferay 170
  • 171. VII. Otras Consideraciones Algoritmos para GC en Java Serial CMS Parallel Modo CompactingEnero 2013 Liferay 171
  • 172. VII. Otras Consideraciones Algoritmos para GC en Java  Garbage-First (G1)  GC de servidor con soporte para varios procesadores y amplia memoria  Incluido en JRE 7  Memoria dividida en "cards" de 512 byte referenciadas desde una tabla de cards  -XX:+UseG1GCEnero 2013 Liferay 172
  • 173. VII. Otras Consideracioneso Monitorización o Registra tiempos de transacción del portal y de portlets mediante JMX MBeans o portal-ext.properties  monitoring.level.com.liferay.monitoring.Portal=MEDIUM  monitoring.level.com.liferay.monitoring.Portlet=HIGH  monitoring.portal.request=false  monitoring.portlet.action.request=false  monitoring.portlet.event.request=false  monitoring.portlet.render.request=false  monitoring.portlet.resource.request=false  live.users.enabled=trueEnero 2013 Liferay 173
  • 174. VII. Otras Consideracioneso Otras recomendaciones o Evitar el uso de parámetros complejos en Servicios Web o Usar CSS Sprites para imágenes pequeñas o Usar CacheFilter o Scripts abajo o Cacheo estáticoEnero 2013 Liferay 174
  • 175. VII. Otras Consideracioneso Tuneo de la JVM (tomcat/bin/setenv.sh) o Recolector de basura o -XX:+UseConcMarkSweepGC o Tamaño del HEAP o -Xms2048m -Xmx2048m o Tamaño del Young Generation o 1/3 del HEAP o Tamaño del PermGen o -XX:MaxPermSize=256mEnero 2013 Liferay 175
  • 176. VII. Otras Consideracioneso Tuneo de ehcache ehcache.cluster.link.replication.enabled=true cluster.link.enabled=true lucene.replicate.write=true cluster.link.autodetect.address= <ip:puerto de gateway> # Dirección de Multicast (tb para cluster-link-udp, # cluster-link-mping, hibernate y multi-vm) multicast.group.address["cluster-link-control"]= <ip multi> multicast.group.port["cluster-link-control"]= <puerto multi> # opcional ehcache.statistics.enabled=trueEnero 2013 Liferay 176
  • 177. Muchas Gracias Óliver Centeno ÁlvarezEnero 2013 Liferay 177