Liferay

10,412 views
10,198 views

Published on

Published in: Technology
5 Comments
14 Likes
Statistics
Notes
No Downloads
Views
Total views
10,412
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
5
Likes
14
Embeds 0
No embeds

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.
  • 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

    ×