Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Liferay

11,711 views

Published on

Published in: Technology
  • Estimado Puede compartir su presentación... gracias
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Buenas tardes Oliver: podrías compartir tu presentación conmigo?

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

    Muchas gracias y saludos.

    martin.iztueta@presentaciondemaria.org
       Reply 
    Are you sure you want to  Yes  No
    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.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Oliver, buenas tardes. Por favor, podrías compartir esta presentación conmigo. Muchas gracias!!
    robertoruiz@uxorit.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Liferay

  1. 1. Óliver Centeno Álvarez Enero 2013Enero 2013 Liferay 1
  2. 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. 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. 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. 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. 6. I. Liferay y Tecnologías Java Involucradas Página Web CMS (Content Management System) Liferay BD JavaEnero 2013 Liferay 6
  7. 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. 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. 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. 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. 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. 12. I. Liferay y Tecnologías Java Involucradas  Portales y Portlets LiferayEnero 2013 Liferay 12
  13. 13. I. Liferay y Tecnologías Java Involucradas Flujo de una peticiónEnero 2013 Liferay 13
  14. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 25. I. Liferay y Tecnologías Java Involucradas Arquitectura LiferayEnero 2013 Liferay 25
  26. 26. I. Liferay y Tecnologías Java Involucradas Arquitectura Liferay 6.0Enero 2013 Liferay 26
  27. 27. I. Liferay y Tecnologías Java Involucradas Arquitectura Liferay 6.1Enero 2013 Liferay 27
  28. 28. I. Liferay y Tecnologías Java Involucradas Arquitectura Liferay 6.1Enero 2013 Liferay 28
  29. 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. 30. I. Liferay y Tecnologías Java Involucradas Arquitectura LiferayEnero 2013 Liferay 30
  31. 31. I. Liferay y Tecnologías Java Involucradas Arquitectura Liferay  En 6.1 las comunidades se llaman sitiosEnero 2013 Liferay 31
  32. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 49. II. Instalación de Liferay4) Instalación sobre EclipseEnero 2013 Liferay 49
  50. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 67. III.Gestión de Contenidos Personalización de Portlets  Look & Feel  Configuración del Portlet  Estilos  Márgenes  CSSEnero 2013 Liferay 67
  68. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 97. IV. Desarrollo de Portletso Anatomía de un PortletEnero 2013 Liferay 97
  98. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 125. V. Desarrollo de Plugins y HooksEnero 2013 Liferay 125
  126. 126. V. Desarrollo de Plugins y Hooks SnippetsEnero 2013 Liferay 126
  127. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 140. VI. Plantillas y Temaso Ficheros VM o Definen la estructura de  Portal  Navegación  Portlets  ...Enero 2013 Liferay 140
  141. 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. 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. 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. 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. 145. VII. Otras Consideracioneso Admin ServerEnero 2013 Liferay 145
  146. 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. 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. 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. 149. VII. Otras Consideracioneso Alta disponibilidad o Ejemplo 1: Apache HTTP Server + mod_jk + TomcatEnero 2013 Liferay 149
  150. 150. VII. Otras Consideracioneso Alta disponibilidad o Ejemplo 2: Apache HTTP Server + mod_proxy + TomcatEnero 2013 Liferay 150
  151. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 170. VII. Otras Consideraciones Algoritmos para GC en JavaEnero 2013 Liferay 170
  171. 171. VII. Otras Consideraciones Algoritmos para GC en Java Serial CMS Parallel Modo CompactingEnero 2013 Liferay 171
  172. 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. 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. 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. 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. 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. 177. Muchas Gracias Óliver Centeno ÁlvarezEnero 2013 Liferay 177

×