SlideShare ist ein Scribd-Unternehmen logo
1 von 177
Óliver Centeno Álvarez
                   Enero 2013




Enero 2013            Liferay         1
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 Consideraciones




Enero 2013                    Liferay                  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 Consideraciones




Enero 2013                    Liferay                  3
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
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
I. Liferay y Tecnologías Java
   Involucradas
 Página     Web




   CMS (Content Management System)
                              Liferay

                                        BD
                               Java



Enero 2013          Liferay                  6
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 colaborativo




Enero 2013                          Liferay                       7
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 SSO




Enero 2013                            Liferay                   8
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
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
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
I. Liferay y Tecnologías Java
   Involucradas
                               Portales y
                                Portlets Liferay




Enero 2013        Liferay                          12
I. Liferay y Tecnologías Java
   Involucradas
   Flujo de una petición




Enero 2013             Liferay   13
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
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 Maven

Enero 2013            Liferay                15
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ática

Enero 2013                      Liferay                   16
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 JSP




Enero 2013                       Liferay                       17
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 Hibernate
Enero 2013                      Liferay                    18
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 tareas

Enero 2013                            Liferay               19
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 proyectos
Enero 2013                            Liferay                           20
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
             blanco

Enero 2013                       Liferay                      21
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én

Enero 2013                     Liferay                     22
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
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 Hooks

Enero 2013                             Liferay            24
I. Liferay y Tecnologías Java
   Involucradas
   Arquitectura Liferay




Enero 2013             Liferay   25
I. Liferay y Tecnologías Java
   Involucradas
   Arquitectura Liferay 6.0




Enero 2013             Liferay   26
I. Liferay y Tecnologías Java
   Involucradas
   Arquitectura Liferay 6.1




Enero 2013             Liferay   27
I. Liferay y Tecnologías Java
   Involucradas
   Arquitectura Liferay 6.1




Enero 2013             Liferay   28
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 Portlets

Enero 2013                      Liferay                      29
I. Liferay y Tecnologías Java
   Involucradas
   Arquitectura Liferay




Enero 2013             Liferay   30
I. Liferay y Tecnologías Java
   Involucradas
   Arquitectura Liferay
            En 6.1 las comunidades se llaman sitios




Enero 2013                      Liferay                31
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 aplicaciones

Enero 2013                       Liferay                   32
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.xml



Enero 2013                             Liferay                          33
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.properties




Enero 2013                           Liferay                   34
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 Hooks




Enero 2013                       Liferay                     35
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 Consideraciones




Enero 2013                    Liferay                  36
II. Instalación de Liferay
o      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
II. Instalación de Liferay
o      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
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 IDE



Enero 2013                        Liferay                  39
II. Instalación de Liferay
1) 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 placer

Enero 2013                     Liferay                    40
II. Instalación de Liferay
2) 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-0
Enero 2013                      Liferay                     41
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
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=false




Enero 2013                        Liferay                      43
II. Instalación de Liferay
3) 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 Tomcat


Enero 2013                         Liferay                           44
II. Instalación de Liferay
3) 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 adecuado




Enero 2013                         Liferay                        45
II. Instalación de Liferay
4) 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
             servidor



Enero 2013                     Liferay                    46
II. Instalación de Liferay
4) 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
II. Instalación de Liferay
4) 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
II. Instalación de Liferay
4) Instalación sobre Eclipse




Enero 2013           Liferay   49
II. Instalación de Liferay
5) 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 proyecto




Enero 2013                     Liferay                     50
II. Instalación de Liferay
5) 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 Ant


Enero 2013                           Liferay                   51
II. Instalación de Liferay
6) 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 Liferay




Enero 2013                            Liferay                      52
II. Instalación de Liferay
6) 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 > Server



Enero 2013                             Liferay                         53
II. Instalación de Liferay
o      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 legible

Enero 2013                           Liferay                             54
II. Instalación de Liferay
o      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/*.jar




Enero 2013                         Liferay                          55
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 Consideraciones




Enero 2013                    Liferay                  56
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
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
III.Gestión de Contenidos
      Creación de Portales
            Logarse en el portal
                test@liferay.com:test




                Menús: Pin, Add, Manage, Toogle Edit



Enero 2013                          Liferay             59
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áginas




Enero 2013                          Liferay                60
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 principales




Enero 2013                     Liferay                    61
III.Gestión de Contenidos
   Ejercicio 1
            Crear un portal para el curso con las páginas
                 Bienvenida
                 Temario
                 Tecnologías involucradas
                 Ejercicios
                 Administración




Enero 2013                            Liferay                62
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 portal

Enero 2013                        Liferay          63
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                      Shopping

Enero 2013                      Liferay              64
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 Installer




Enero 2013                            Liferay                       65
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 Transparentia




Enero 2013                     Liferay                  66
III.Gestión de Contenidos
   Personalización de Portlets
            Look & Feel
                 Configuración del Portlet
                 Estilos
                 Márgenes
                 CSS




Enero 2013                             Liferay   67
III.Gestión de Contenidos
   Personalización de Portlets
            Configuration
                 Setup
                 Supported clients (navegadores móviles)
                 Permissions
                 Sharing
                 Scope
            Export/Import
                 A formato LAR




Enero 2013                           Liferay                68
III.Gestión de Contenidos
o         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/Reject




Enero 2013                          Liferay          69
III.Gestión de Contenidos
o         Gestión de usuarios
o         (Control Panel/Enterprise Admin)
      o      Usuarios
      o      Grupos
      o      Roles (colección de permisos)
             o   Regular (general)
             o   Community
             o   Organization




Enero 2013                           Liferay   70
III.Gestión de Contenidos
o         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 parent

Enero 2013                           Liferay                          71
III.Gestión de Contenidos
o         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 ofrecido




Enero 2013                         Liferay                         72
III.Gestión de Contenidos
o         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 cerrada




Enero 2013                         Liferay              73
III.Gestión de Contenidos
o         Roles predefinidos no modificables
      o      Regulares
             o   Administrator
             o   Guest
             o   User
             o   Power User




Enero 2013                       Liferay       74
III.Gestión de Contenidos
o         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
III.Gestión de Contenidos
o         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
III.Gestión de Contenidos
o         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
                 password




Enero 2013                        Liferay                      77
III.Gestión de Contenidos
o         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
III.Gestión de Contenidos
o         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 Display




Enero 2013                         Liferay                         79
III.Gestión de Contenidos
o         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 programadores




Enero 2013                         Liferay             80
III.Gestión de Contenidos
o         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 permisos




Enero 2013                     Liferay              81
III.Gestión de Contenidos
o         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/Paris




Enero 2013                      Liferay       82
III.Gestión de Contenidos
o         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=true

Enero 2013                      Liferay                       83
III.Gestión de Contenidos
o         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-lagartija


Enero 2013                          Liferay                            84
III.Gestión de Contenidos
o       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=Test


Enero 2013                      Liferay                    85
III.Gestión de Contenidos
o       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=
                 /home

Enero 2013                      Liferay                      86
III.Gestión de Contenidos
o         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
III.Gestión de Contenidos
o         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-able
Enero 2013                       Liferay                   88
III.Gestión de Contenidos
o         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=smtp




Enero 2013                      Liferay                       89
III.Gestión de Contenidos
o         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.SSLSocketFactory



Enero 2013                      Liferay                    90
III.Gestión de Contenidos
o         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,
                 reminderqueries

Enero 2013                        Liferay                       91
III.Gestión de Contenidos
o       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]=true

Enero 2013                      Liferay                    92
III.Gestión de Contenidos
o       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=telephonenumber
Enero 2013      ldap.auth.method=bind
                                   Liferay                       93
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 Consideraciones




Enero 2013                    Liferay                  94
IV. Desarrollo de Portlets
o     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
IV. Desarrollo de Portlets
o     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
             preferencias
o     Portal
      o      Responsable de agregar el contenido
             generado por los Portlets para formar una
             aplicación Web


Enero 2013                      Liferay                  96
IV. Desarrollo de Portlets
o      Anatomía de un Portlet




Enero 2013            Liferay   97
IV. Desarrollo de Portlets
o     Ciclo de Vida de un Portlet
      o      Carga
      o      Inicialización
      o      Procesado de Acciones (1)
      o      Renderizado (todos)
      o      Destrucción




Enero 2013                     Liferay   98
IV. Desarrollo de Portlets
o     Interfaz Portlet
      o      init(PortletConfig);
      o      processAction(ActionRequest,
             ActionResponse);
      o      render(RenderRequest, RenderResponse);
      o      destroy();




Enero 2013                   Liferay                  99
IV. Desarrollo de Portlets
o     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 estado


Enero 2013                    Liferay                100
IV. Desarrollo de Portlets
o     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
IV. Desarrollo de Portlets
o     Procesamiento
      o      Interfaz PortletRequest
                ActionForward render(ActionMapping mapping,
                 ActionForm form, PortletConfig
                 PortletConfig, RenderRequest req,
                 RenderResponse res);




Enero 2013                       Liferay                   102
IV. Desarrollo de Portlets
o     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
IV. Desarrollo de Portlets
o     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
IV. Desarrollo de Portlets
o     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
IV. Desarrollo de Portlets
o     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
IV. Desarrollo de Portlets
o     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
IV. Desarrollo de Portlets
o     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
IV. Desarrollo de Portlets
o     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
IV. Desarrollo de Portlets
o     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
IV. Desarrollo de Portlets
o     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
IV. Desarrollo de Portlets
o     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
IV. Desarrollo de Portlets
o     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
IV. Desarrollo de Portlets
o     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
IV. Desarrollo de Portlets
o     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
IV. Desarrollo de Portlets
o     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
IV. Desarrollo de Portlets
o      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
IV. Desarrollo de Portlets
o      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ón



Enero 2013                       Liferay                      118
IV. Desarrollo de Portlets
o      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
IV. Desarrollo de Portlets
o      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
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 Consideraciones




Enero 2013                    Liferay                  121
V. Desarrollo de Plugins y Hooks
o         Existen 5 tipos básicos de plugin
      o      Portlets
      o      Ext
      o      Hooks
      o      Plantillas
      o      Temas




Enero 2013                  Liferay           122
V. Desarrollo de Plugins y Hooks
o       Plugins SDK se distribuye con la
        estructura adecuada para poder crear
        cualquiera de ellos
o       Además, incluye ficheros create (.bat y .
        sh) para facilitar la creación del proyecto
o       Y descriptores Ant para la compilación y
        el despliegue sobre el portal



Enero 2013                Liferay                 123
V. Desarrollo de Plugins y Hooks
o         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ón




Enero 2013                         Liferay                         124
V. Desarrollo de Plugins y Hooks




Enero 2013      Liferay            125
V. Desarrollo de Plugins y Hooks
   Snippets




Enero 2013      Liferay            126
V. Desarrollo de Plugins y Hooks
o         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 clase



Enero 2013                         Liferay            127
V. Desarrollo de Plugins y Hooks
o         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ón




Enero 2013                          Liferay                        128
V. Desarrollo de Plugins y Hooks
o         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 Hook




Enero 2013                    Liferay                   129
V. Desarrollo de Plugins y Hooks
o         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.xml




Enero 2013                          Liferay             130
V. Desarrollo de Plugins y Hooks
o     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
                 XML




Enero 2013                          Liferay                           131
V. Desarrollo de Plugins y Hooks
o     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.xml




Enero 2013                         Liferay                       132
V. Desarrollo de Plugins y Hooks
o      ServiceBuilder
      o      Herramienta para construir servicios Java
      o      Utilizada con el entorno Ext pero depreciada
             en LR6
o      Pasos
      1.     Crear el proyecto de extensión
             o   create.bat proyecto "Descripción del proyecto"
      2.     Crear el fichero service.xml



Enero 2013                          Liferay                       133
V. Desarrollo de Plugins y Hooks
o      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 EntidadLocalServiceUtil


Enero 2013                           Liferay                        134
V. Desarrollo de Plugins y Hooks
o     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
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 Consideraciones




Enero 2013                    Liferay                  136
VI. Plantillas y Temas
o      Plantilla
      o      Estructura de organización de Portlets
      o      Se aplica a una página
      o      Fichero .tpl




Enero 2013                   Liferay                  137
VI. Plantillas y Temas
o      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
VI. Plantillas y Temas
o      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
VI. Plantillas y Temas
o      Ficheros VM
      o      Definen la estructura de
                Portal
                Navegación
                Portlets
                ...




Enero 2013                     Liferay   140
VI. Plantillas y Temas
o      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_id




Enero 2013                           Liferay                         141
VI. Plantillas y Temas
o      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
VI. Plantillas y Temas
o      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
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 Consideraciones




Enero 2013                    Liferay                  144
VII. Otras Consideraciones
o      Admin Server




Enero 2013            Liferay   145
VII. Otras Consideraciones
o      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 LOG



Enero 2013                     Liferay          146
VII. Otras Consideraciones
o      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 servidor



Enero 2013                     Liferay              147
VII. Otras Consideraciones
o      Alta disponibilidad
      o      Ejecutar un portal en servidores paralelos
      o      Con balanceo de carga
      o      Y robustez al fallo




Enero 2013                     Liferay                    148
VII. Otras Consideraciones
o      Alta disponibilidad
      o      Ejemplo 1: Apache HTTP Server + mod_jk +
             Tomcat




Enero 2013                   Liferay                149
VII. Otras Consideraciones
o      Alta disponibilidad
      o      Ejemplo 2: Apache HTTP Server + mod_proxy
             + Tomcat




Enero 2013                   Liferay                150
VII. Otras Consideraciones
o      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 centralizada




Enero 2013                          Liferay               151
VII. Otras Consideraciones
o      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.
                  properties



Enero 2013                            Liferay                      152
VII. Otras Consideraciones
o      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.xml



Enero 2013                           Liferay                  153
VII. Otras Consideraciones
o      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=false


Enero 2013                         Liferay                      154
VII. Otras Consideraciones
o      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 DBMS




Enero 2013                         Liferay                  155
VII. Otras Consideraciones
o      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 > Reindexar



Enero 2013                         Liferay                       156
VII. Otras Consideraciones
o      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
VII. Otras Consideraciones
o      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.xml



Enero 2013                       Liferay                    158
VII. Otras Consideraciones
o      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.xml



Enero 2013                     Liferay                  159
VII. Otras Consideraciones
o      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
VII. Otras Consideraciones
o      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.xml

Enero 2013                      Liferay                      161
VII. Otras Consideraciones
o      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
VII. Otras Consideraciones
o      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
VII. Otras Consideraciones
o      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 concurrentes




Enero 2013                         Liferay                        164
VII. Otras Consideraciones
o      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 manual



Enero 2013                          Liferay                          165
VII. Otras Consideraciones
o      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=ajp13




Enero 2013                             Liferay                   166
VII. Otras Consideraciones
o      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.conf




Enero 2013                             Liferay                            167
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
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:+CMSIncrementalMode


Enero 2013                         Liferay     169
VII. Otras Consideraciones
      Algoritmos para GC en Java




Enero 2013              Liferay     170
VII. Otras Consideraciones
   Algoritmos para GC en Java
   Serial              CMS




   Parallel            Modo Compacting




Enero 2013            Liferay            171
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:+UseG1GC




Enero 2013                            Liferay                       172
VII. Otras Consideraciones
o      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=true


Enero 2013                           Liferay                             173
VII. Otras Consideraciones
o      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ático




Enero 2013                    Liferay                   174
VII. Otras Consideraciones
o      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=256m




Enero 2013                         Liferay      175
VII. Otras Consideraciones
o      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=true

Enero 2013                          Liferay                        176
Muchas Gracias


             Óliver Centeno Álvarez




Enero 2013            Liferay         177

Weitere ähnliche Inhalte

Was ist angesagt?

Tupperware: Containerized Deployment at FB
Tupperware: Containerized Deployment at FBTupperware: Containerized Deployment at FB
Tupperware: Containerized Deployment at FB
Docker, Inc.
 

Was ist angesagt? (20)

Architectures orientées services
Architectures orientées servicesArchitectures orientées services
Architectures orientées services
 
Springboot Microservices
Springboot MicroservicesSpringboot Microservices
Springboot Microservices
 
Tupperware: Containerized Deployment at FB
Tupperware: Containerized Deployment at FBTupperware: Containerized Deployment at FB
Tupperware: Containerized Deployment at FB
 
Reactive Microservices with Spring 5: WebFlux
Reactive Microservices with Spring 5: WebFlux Reactive Microservices with Spring 5: WebFlux
Reactive Microservices with Spring 5: WebFlux
 
Presentation Spring
Presentation SpringPresentation Spring
Presentation Spring
 
Présentation Angular 2
Présentation Angular 2 Présentation Angular 2
Présentation Angular 2
 
Introduction to lightning web component
Introduction to lightning web component Introduction to lightning web component
Introduction to lightning web component
 
Microservices Security
Microservices SecurityMicroservices Security
Microservices Security
 
Single page applications
Single page applicationsSingle page applications
Single page applications
 
Cloud-Azure.pdf
Cloud-Azure.pdfCloud-Azure.pdf
Cloud-Azure.pdf
 
Reactive programming by spring webflux - DN Scrum Breakfast - Nov 2018
Reactive programming by spring webflux - DN Scrum Breakfast - Nov 2018Reactive programming by spring webflux - DN Scrum Breakfast - Nov 2018
Reactive programming by spring webflux - DN Scrum Breakfast - Nov 2018
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
Spring Boot Tutorial
Spring Boot TutorialSpring Boot Tutorial
Spring Boot Tutorial
 
eServices-Chp2: SOA
eServices-Chp2: SOAeServices-Chp2: SOA
eServices-Chp2: SOA
 
Chp5 - Applications Android
Chp5 - Applications AndroidChp5 - Applications Android
Chp5 - Applications Android
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
 
What is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | EdurekaWhat is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | Edureka
 
Laravel - The PHP Framework for Web Artisans
Laravel - The PHP Framework for Web ArtisansLaravel - The PHP Framework for Web Artisans
Laravel - The PHP Framework for Web Artisans
 
Chp1- Introduction aux Technologies Web et SOA
Chp1- Introduction aux Technologies Web et SOAChp1- Introduction aux Technologies Web et SOA
Chp1- Introduction aux Technologies Web et SOA
 
webservice scaling for newbie
webservice scaling for newbiewebservice scaling for newbie
webservice scaling for newbie
 

Andere mochten auch

Presentación liferay symposium 2012
Presentación liferay symposium 2012Presentación liferay symposium 2012
Presentación liferay symposium 2012
israel olalla
 
Perl (practical extraction and report language)
Perl (practical extraction and report language)Perl (practical extraction and report language)
Perl (practical extraction and report language)
Oliver Centeno
 
Microsoft Test Manager 2010
Microsoft Test Manager 2010Microsoft Test Manager 2010
Microsoft Test Manager 2010
Oliver Centeno
 
Sun Java System Web Server 6.1
Sun Java System Web Server 6.1Sun Java System Web Server 6.1
Sun Java System Web Server 6.1
Oliver Centeno
 
Red Hat Enterprise Linux 5
Red Hat Enterprise Linux 5Red Hat Enterprise Linux 5
Red Hat Enterprise Linux 5
Oliver Centeno
 

Andere mochten auch (20)

Arquitectura y Funcionalidades Liferay Portal
Arquitectura y Funcionalidades Liferay PortalArquitectura y Funcionalidades Liferay Portal
Arquitectura y Funcionalidades Liferay Portal
 
Portales y portlets web
Portales y portlets webPortales y portlets web
Portales y portlets web
 
Presentación liferay symposium 2012
Presentación liferay symposium 2012Presentación liferay symposium 2012
Presentación liferay symposium 2012
 
Alfresco: Escenarios de Arquitectura para Despliegue
Alfresco: Escenarios de Arquitectura para DespliegueAlfresco: Escenarios de Arquitectura para Despliegue
Alfresco: Escenarios de Arquitectura para Despliegue
 
Introducción a la gestión de contenidos web con Liferay Portal 6.1.x
Introducción a la gestión de contenidos web con Liferay Portal 6.1.xIntroducción a la gestión de contenidos web con Liferay Portal 6.1.x
Introducción a la gestión de contenidos web con Liferay Portal 6.1.x
 
Joomla!
Joomla!Joomla!
Joomla!
 
Java en Tiempo Real
Java en Tiempo RealJava en Tiempo Real
Java en Tiempo Real
 
XML Básico
XML BásicoXML Básico
XML Básico
 
My SQL
My SQLMy SQL
My SQL
 
Perl (practical extraction and report language)
Perl (practical extraction and report language)Perl (practical extraction and report language)
Perl (practical extraction and report language)
 
Microsoft Test Manager 2010
Microsoft Test Manager 2010Microsoft Test Manager 2010
Microsoft Test Manager 2010
 
Azure
AzureAzure
Azure
 
ATL
ATLATL
ATL
 
Sun Java System Web Server 6.1
Sun Java System Web Server 6.1Sun Java System Web Server 6.1
Sun Java System Web Server 6.1
 
Spring framework 3
Spring framework 3Spring framework 3
Spring framework 3
 
Herramientas Java
Herramientas JavaHerramientas Java
Herramientas Java
 
Red Hat Enterprise Linux 5
Red Hat Enterprise Linux 5Red Hat Enterprise Linux 5
Red Hat Enterprise Linux 5
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
Liferay with xebia
Liferay with xebiaLiferay with xebia
Liferay with xebia
 
TFS 10
TFS 10TFS 10
TFS 10
 

Ähnlich wie Liferay

Introducción Spring Framework
Introducción Spring FrameworkIntroducción Spring Framework
Introducción Spring Framework
econtinua
 
Presentación no numerica ii
Presentación no numerica iiPresentación no numerica ii
Presentación no numerica ii
Carlos Ordaz
 
Conceptos Fundamentales de POO
Conceptos Fundamentales de POOConceptos Fundamentales de POO
Conceptos Fundamentales de POO
sena
 
[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java
Eudris Cabrera
 
CUESTIONARIO JAVA
CUESTIONARIO JAVACUESTIONARIO JAVA
CUESTIONARIO JAVA
jesanchez5
 
Presentacion portlets-tools
Presentacion portlets-toolsPresentacion portlets-tools
Presentacion portlets-tools
guest696b01
 

Ähnlich wie Liferay (20)

Introducción Spring Framework
Introducción Spring FrameworkIntroducción Spring Framework
Introducción Spring Framework
 
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
Aplicaciones web con jakarta struts  - Javier Oliver FulgueraAplicaciones web con jakarta struts  - Javier Oliver Fulguera
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
 
Frameworks J2EE
Frameworks J2EEFrameworks J2EE
Frameworks J2EE
 
Ediciones de java
Ediciones de javaEdiciones de java
Ediciones de java
 
spring
springspring
spring
 
Presentación no numerica ii
Presentación no numerica iiPresentación no numerica ii
Presentación no numerica ii
 
Presentacion mvc orm
Presentacion mvc ormPresentacion mvc orm
Presentacion mvc orm
 
Linea del tiempo de los frameworks
Linea del tiempo de los frameworksLinea del tiempo de los frameworks
Linea del tiempo de los frameworks
 
Plataforma de programación Java
Plataforma de programación JavaPlataforma de programación Java
Plataforma de programación Java
 
Conceptos Fundamentales de POO
Conceptos Fundamentales de POOConceptos Fundamentales de POO
Conceptos Fundamentales de POO
 
Lenguaje Java
Lenguaje JavaLenguaje Java
Lenguaje Java
 
[ES] Introdución a la plataforma java
[ES] Introdución a la plataforma java [ES] Introdución a la plataforma java
[ES] Introdución a la plataforma java
 
[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java
 
CUESTIONARIO JAVA
CUESTIONARIO JAVACUESTIONARIO JAVA
CUESTIONARIO JAVA
 
Tecnologias web
Tecnologias webTecnologias web
Tecnologias web
 
Introducción a Spring framework
Introducción a Spring frameworkIntroducción a Spring framework
Introducción a Spring framework
 
ProjectZero
ProjectZeroProjectZero
ProjectZero
 
Rmi
RmiRmi
Rmi
 
Introducción a java
Introducción a javaIntroducción a java
Introducción a java
 
Presentacion portlets-tools
Presentacion portlets-toolsPresentacion portlets-tools
Presentacion portlets-tools
 

Mehr von Oliver Centeno

Mehr von Oliver Centeno (10)

Metodologías ágiles
Metodologías ágilesMetodologías ágiles
Metodologías ágiles
 
Métrica v3 y RUP
Métrica v3 y RUPMétrica v3 y RUP
Métrica v3 y RUP
 
Web services y java
Web services y javaWeb services y java
Web services y java
 
JavaFX 2
JavaFX 2JavaFX 2
JavaFX 2
 
SOA y Web Services
SOA y Web ServicesSOA y Web Services
SOA y Web Services
 
Enterprise Library 5
Enterprise Library 5Enterprise Library 5
Enterprise Library 5
 
MSS 2010
MSS 2010MSS 2010
MSS 2010
 
PMP, Project Management Professional
PMP, Project Management ProfessionalPMP, Project Management Professional
PMP, Project Management Professional
 
Hibernate
HibernateHibernate
Hibernate
 
OSGi
OSGiOSGi
OSGi
 

Kürzlich hochgeladen

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Kürzlich hochgeladen (11)

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 

Liferay

  • 1. Óliver Centeno Álvarez Enero 2013 Enero 2013 Liferay 1
  • 2. Contenidos I. Liferay y Tecnologías Java Involucradas II. Instalación de Liferay III. Gestión de Contenidos IV. Desarrollo de Portlets V. Desarrollo de Plugins y Hooks VI. Plantillas y Temas VII. Otras Consideraciones Enero 2013 Liferay 2
  • 3. Contenidos I. Liferay y Tecnologías Java Involucradas II. Instalación de Liferay III. Gestión de Contenidos IV. Desarrollo de Portlets V. Desarrollo de Plugins y Hooks VI. Plantillas y Temas VII. Otras Consideraciones Enero 2013 Liferay 3
  • 4. I. Liferay y Tecnologías Java Involucradas  Portal: "Sitio Web que sirve de puerta de entrada (única) para ofrecer al usuario, de forma fácil e integrada, el acceso a una serie de recursos y de servicios relacionados con un mismo tema" Enero 2013 Liferay 4
  • 5. I. Liferay y Tecnologías Java Involucradas  Tipos de Portal:  Personales  Académicos  Gubernamentales  Corporativos (Intranets)  De dominio específico  Características:  Admiten blogs, grupos de discusión, documentos compartidos, calendarios, Wiki,… Enero 2013 Liferay 5
  • 6. I. Liferay y Tecnologías Java Involucradas  Página Web  CMS (Content Management System) Liferay BD Java Enero 2013 Liferay 6
  • 7. I. Liferay y Tecnologías Java Involucradas  Liferay  3 funcionalidades principales  Portal  CMS (Gestión de documentos) y WCM (Gestión de artículos, flujos, metadatos,…)  Software colaborativo Enero 2013 Liferay 7
  • 8. I. Liferay y Tecnologías Java Involucradas  Liferay  Portal  Ejecutable en la mayoría de servidores Java  Modelo Web 2.0  Frameworks SOA  Soporte para LDAP y SSO Enero 2013 Liferay 8
  • 9. I. Liferay y Tecnologías Java Involucradas  Liferay  CMS y WCM  Librería de documentos  Galería de imágenes  Diario (Web Content Manager o Journal)  Buscador  Software colaborativo  Blogs, Wikis, Calendarios, IM, RSS, redes sociales,… Enero 2013 Liferay 9
  • 10. I. Liferay y Tecnologías Java Involucradas  Otros CMS/WCM  Microsoft Office SharePoint Server (MOSS/MSS)  IBM WebSphere Portal Server  GlassFish Web Space Server  Joomla!  Drupal  … Enero 2013 Liferay 10
  • 11. I. Liferay y Tecnologías Java Involucradas  Todos se estructuran en base a módulos programables e intercambiables  SharePoint WebParts  Joomla! Componentes y Módulos  Drupal Módulos  Liferay Portlets (JSR-286) Enero 2013 Liferay 11
  • 12. I. Liferay y Tecnologías Java Involucradas  Portales y Portlets Liferay Enero 2013 Liferay 12
  • 13. I. Liferay y Tecnologías Java Involucradas  Flujo de una petición Enero 2013 Liferay 13
  • 14. I. Liferay y Tecnologías Java Involucradas  Liferay está construido sobre Java  Se basa en estándares y componentes contrastados  Hibernate  ehcache  Spring MVC  Struts  … Enero 2013 Liferay 14
  • 15. I. Liferay y Tecnologías Java Involucradas  Utiliza estándares de comunicación con otros sistemas  AJAX  JSON  REST  CalDAV  …  Soporta gestión de proyectos mediante Ant y Maven Enero 2013 Liferay 15
  • 16. I. Liferay y Tecnologías Java Involucradas  Hibernate  Motor de ORM y acceso a Base de Datos  Compatible con multitud de BBDD  Configurado mediante XML y anotaciones para la persistencia automatizada de objetos  Permite implementar el patrón DAO de manera trivial  Incluye el lenguaje HQL de consulta de objetos  Incluye un API Criteria permite construir consultas de manera programática Enero 2013 Liferay 16
  • 17. I. Liferay y Tecnologías Java Involucradas  Struts  Herramienta para el desarrollo de aplicaciones Web basadas en el patrón MVC  Define acciones a ejecutar que pueden invocarse desde formulario Web  Permite interponer filtros a las peticiones  Tiene taglibs propios que facilitan la creación de páginas JSP Enero 2013 Liferay 17
  • 18. I. Liferay y Tecnologías Java Involucradas  Spring  Framework de gestión de objetos de negocio  Inyección de dependencias  Permite instanciar objetos mediante XML  Y asociarlos entre sí mediante propiedades  Beans  Spring MVC implementa el control de las aplicaciones Web  Spring AOP permite inyectar código  Spring ORM permite integrarlo con Hibernate Enero 2013 Liferay 18
  • 19. I. Liferay y Tecnologías Java Involucradas  Ant  Herramienta de construcción y compilación de código basada en Java  Similar a la herramienta MAKE de UNIX  Estructura de proyecto especial  Permite realizar tareas genéricas de SO  Crear, copiar, mover, eliminar,…  Y tareas específicas de Java  Compilar, empaquetar,…  Permite secuenciar tareas Enero 2013 Liferay 19
  • 20. I. Liferay y Tecnologías Java Involucradas  Maven  Gestor de dependencias  Estándar de descripción de proyectos Java  POM.XML  Permite desvincular el código de las librerías  Utiliza repositorios de librerías de distinto nivel  Gestiona el ciclo de vida del proyecto  Validar, compilar, probar, empaquetar, desplegar,..  Admite dependencias transitivas y en conflicto  Hay arquetipos con plantillas de proyectos Enero 2013 Liferay 20
  • 21. I. Liferay y Tecnologías Java Involucradas  AJAX y JSON  Tecnologías basadas en JavaScript  JSON permite escribir notación similar a la de programación orientada a objeto  Además, permite representar información compleja de manera más compacta que XML  AJAX permite enviar peticiones al servidor de manera transparente para el usuario  Evita las cargas lentas y las pantallas en blanco Enero 2013 Liferay 21
  • 22. I. Liferay y Tecnologías Java Involucradas  SOA y WebServices  Los Servicios Web permiten publicar funcionalidad independiente de plataforma  Se basan en estándares (HTTP, XML)  Se pueden consumir desde cualquier lenguaje  Permiten integrar aplicaciones heterogéneas  Y gestionar procesos de negocio complejos  Mule es una herramienta ESB para la integración de Servicios Web  Apache Service Mix también Enero 2013 Liferay 22
  • 23. I. Liferay y Tecnologías Java Involucradas  Otras tecnologías  ehcache: Caché distribuída de propósito general  jBPM: Plataforma para ejecutar procesos de negocio mediante orquestación de servicios  Intalio/BPP: Software de código abierto para SOA y BPM  jQuery: Librería JavaScript que simplifica la introducción de código en HTML. Permite gestión de eventos, AJAX,…  Lucene: Motor de búsqueda escrito en Java  Ruby: Lenguaje de programación dinámico  JBoss Seam: Framework par Web 2.0 que integra tecnologías como Ajax, JSF (JavaServer Faces), EJB3 (Enterprise JavaBeans), Java Portlets, y BPM  Tapestry: Framework para crear aplicaciones Web en Java  FreeMarker: Herramienta para generar salida en formato texto en base a plantillas  … Enero 2013 Liferay 23
  • 24. I. Liferay y Tecnologías Java Involucradas  ¿Cuál/es de estas tecnología utilizar?  La que mejor conozcas  Struts, Spring MVC, Hibernate, JPA,…  La mejor adaptada a nuestras necesidades  JSF para aplicaciones tipo escritorio  La más sencilla  Portlets y Hooks Enero 2013 Liferay 24
  • 25. I. Liferay y Tecnologías Java Involucradas  Arquitectura Liferay Enero 2013 Liferay 25
  • 26. I. Liferay y Tecnologías Java Involucradas  Arquitectura Liferay 6.0 Enero 2013 Liferay 26
  • 27. I. Liferay y Tecnologías Java Involucradas  Arquitectura Liferay 6.1 Enero 2013 Liferay 27
  • 28. I. Liferay y Tecnologías Java Involucradas  Arquitectura Liferay 6.1 Enero 2013 Liferay 28
  • 29. I. Liferay y Tecnologías Java Involucradas  Arquitectura Liferay  Un portal Liferay puede estar compuesto de varias instancias  Cada instancia tendrá datos independientes  Cada instancia tendrá grupos de usuarios aislados (comunidades, organizaciones,…)  Cada grupo de usuarios tiene páginas públicas y privadas implementadas como layouts  Y cada página tiene contenido implementado mediante Portlets Enero 2013 Liferay 29
  • 30. I. Liferay y Tecnologías Java Involucradas  Arquitectura Liferay Enero 2013 Liferay 30
  • 31. I. Liferay y Tecnologías Java Involucradas  Arquitectura Liferay  En 6.1 las comunidades se llaman sitios Enero 2013 Liferay 31
  • 32. I. Liferay y Tecnologías Java Involucradas  Modelo de aplicación  Ficheros de propiedades (.properties)  Ficheros XML de configuración  NO MODIFICARLOS!!!  Mecanismo de extensión (EasyConf)  El motor de Liferay detecta ficheros "-ext"  Tienen prioridad sobre los preexistentes  El motor detecta la carpeta /Ext  Donde se pueden desplegar aplicaciones Enero 2013 Liferay 32
  • 33. I. Liferay y Tecnologías Java Involucradas  3 Estrategias de Extensión  Entorno de extensión para Portlets  Entorno de desarrollo mediante Plugins SDK  ServiceBuilder  Genera modelos y servicios (código)  A partir de un fichero de configuración service.xml Enero 2013 Liferay 33
  • 34. I. Liferay y Tecnologías Java Involucradas  Entorno de Extensión  Permite sobrescribir ficheros de configuración, JSPs,…  Se relaciona con el directorio portal-impl  Ficheros  portal-ext.properties  system-ext.properties Enero 2013 Liferay 34
  • 35. I. Liferay y Tecnologías Java Involucradas  Plugins SDK para desarrollo  Desarrollo de Portlets, plantillas, temas, hooks, webs,…  No modifica las propiedades del portal  Pero se pueden "enganchar" mediante Hooks Enero 2013 Liferay 35
  • 36. Contenidos I. Liferay y Tecnologías Java Involucradas II. Instalación de Liferay III. Gestión de Contenidos IV. Desarrollo de Portlets V. Desarrollo de Plugins y Hooks VI. Plantillas y Temas VII. Otras Consideraciones Enero 2013 Liferay 36
  • 37. II. Instalación de Liferay o Requisitos previos o JavaSE JDK 5.0 o superior (recomendado 6.0) o Tomcat 5.5 o superior o MySQL 5.0 o superior o Ant 1.6 o superior (para desarrollo independiente) Enero 2013 Liferay 37
  • 38. II. Instalación de Liferay o Otras opciones o Se admiten otros motores de Base de Datos o Apache Derby, IBM DB2, Firebird, Hypersonic, Informix, InterBase, JDataStore, Oracle, PostgresSQL, SAP, SQL Server, Sybase, … o Se admiten otros servidores de aplicaciones o Borland ES, Apache Geronimo, Sun GlassFish, JBoss, JOnAS, JRun, OracleAS, Orion, SUN JSAS, WebLogic, WebSphere, Jetty, Resin, … Enero 2013 Liferay 38
  • 39. II. Instalación de Liferay  Opciones de instalación/despliegue 1) Instalación bundle para producción 2) Instalación sobre un servidor previo 3) Instalación para desarrollo 4) Instalación para desarrollo sobre Eclipse 5) Instalación para depuración del código fuente 6) Instalación para desarrollo con Liferay IDE Enero 2013 Liferay 39
  • 40. II. Instalación de Liferay 1) 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 placer Enero 2013 Liferay 40
  • 41. II. Instalación de Liferay 2) 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-0 Enero 2013 Liferay 41
  • 42. II. Instalación de Liferay  Configuración del Origen de Datos  Liferay contiene una BD embebida  Hypersonic  No recomendable en entornos de producción  Para configurar otra BD  Crear una instancia de Base de Datos  Copiar el driver de BD en TOMCAT/lib/ext  Editar el fichero portal-ext.properties en el directorio TOMCAT/webapps/ROOT/WEB-INF/classes/  (En LR6.1 se puede encontrar en la raíz de Liferay) Enero 2013 Liferay 42
  • 43. II. Instalación de Liferay  Para MySQL añadir al fichero  jdbc.default.driverClassName=com.mysql.jdbc.Driver  jdbc.default.url=jdbc:mysql://localhost:3306/<bbdd>  jdbc.default.username=<usuario>  jdbc.default.password=<clave>  schema.run.enabled=true  schema.run.minimal=false Enero 2013 Liferay 43
  • 44. II. Instalación de Liferay 3) 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 Tomcat Enero 2013 Liferay 44
  • 45. II. Instalación de Liferay 3) 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 adecuado Enero 2013 Liferay 45
  • 46. II. Instalación de Liferay 4) 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 servidor Enero 2013 Liferay 46
  • 47. II. Instalación de Liferay 4) Instalación sobre Eclipse  Configuración de depuración para el servidor  Poner como argumento start  Poner como working directory apuntando al Tomcat  Añadir bootstrap.jar y tomcat-juli.jar al classpath  Poner como VM arguments … Enero 2013 Liferay 47
  • 48. II. Instalación de Liferay 4) Instalación sobre Eclipse  VM arguments –Xms128m –Xmx512m –XX:MaxPermSize=128m -Djava.io.tmpdir="[TOMCAT_HOME]temp" -Djava.security.auth.login.config = "[TOMCAT_HOME]confjaas.config" -Dfile.encoding=UTF8 -Duser.timezone=GMT+1 -Dcatalina.base="[TOMCAT_HOME]" -Dcatalina.home="[TOMCAT_HOME]" -Dwtp.deploy="[TOMCAT_HOME]webapps" -Djava.endorsed.dirs = "[TOMCAT_HOME] commonendorsed" Enero 2013 Liferay 48
  • 49. II. Instalación de Liferay 4) Instalación sobre Eclipse Enero 2013 Liferay 49
  • 50. II. Instalación de Liferay 5) 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 proyecto Enero 2013 Liferay 50
  • 51. II. Instalación de Liferay 5) 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 Ant Enero 2013 Liferay 51
  • 52. II. Instalación de Liferay 6) 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 Liferay Enero 2013 Liferay 52
  • 53. II. Instalación de Liferay 6) 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 > Server Enero 2013 Liferay 53
  • 54. II. Instalación de Liferay o 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 legible Enero 2013 Liferay 54
  • 55. II. Instalación de Liferay o 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/*.jar Enero 2013 Liferay 55
  • 56. Contenidos I. Liferay y Tecnologías Java Involucradas II. Instalación de Liferay III. Gestión de Contenidos IV. Desarrollo de Portlets V. Desarrollo de Plugins y Hooks VI. Plantillas y Temas VII. Otras Consideraciones Enero 2013 Liferay 56
  • 57. III.Gestión de Contenidos  Antes de desarrollar conviene conocer la forma en que se trabaja con Liferay  ¿Cómo se…?  Detectan los requisitos  Crea un portal  Añaden, eliminan y editan páginas  Crean páginas hijas  Ordenan las páginas  Aplican temas a las páginas  Descargan e instalan plugins  Edita el contenido  Maneja el motor de news, journal, RSS,…  … Enero 2013 Liferay 57
  • 58. III.Gestión de Contenidos  Requisitos  Usuarios y roles que van a utilizar el portal  Permisos de cada rol  Funcionalidades que va a requerir cada rol  Enlaces a otros sitios Web  Introducción de noticias  Datos a almacenar  Gráficos  Colaboración entre usuarios (P2P, SMS, IM,…) Enero 2013 Liferay 58
  • 59. III.Gestión de Contenidos  Creación de Portales  Logarse en el portal  test@liferay.com:test  Menús: Pin, Add, Manage, Toogle Edit Enero 2013 Liferay 59
  • 60. III.Gestión de Contenidos  Creación de Portales  Crear páginas públicas/privadas (comunidad)  Establecer un layout (estructura) para las páginas  Páginas padre/hija, tabulado,…  Añadir Portlets a las páginas Enero 2013 Liferay 60
  • 61. III.Gestión de Contenidos  Creación de Páginas  Add > Page  Manage > Page > Children > Add child pages  Cambiar el orden de las páginas hijas  Cambiar el Look & Feel (temas)  Establecer "friendly URLs"  Editar páginas principales Enero 2013 Liferay 61
  • 62. III.Gestión de Contenidos  Ejercicio 1  Crear un portal para el curso con las páginas  Bienvenida  Temario  Tecnologías involucradas  Ejercicios  Administración Enero 2013 Liferay 62
  • 63. III.Gestión de Contenidos  Ejercicio 2  Añadir páginas hijas a "Tecnologías involucradas"  Hibernate  Spring  Struts  JSF  …  Privatizar la página de ejercicios  Cambiar el tema del portal Enero 2013 Liferay 63
  • 64. III.Gestión de Contenidos  Instalación de aplicaciones (Portlets)  LR6: Add > More…  LR5: Add Application  Tipos de Portlet Admin Finance CMS Google Collaboration (blogs, News calendarios, Wikis,…) Community Social Entertainment Shopping Enero 2013 Liferay 64
  • 65. III.Gestión de Contenidos  Plugin Installer  Se pueden instalar numerosos temas, Portlets, plantillas,…  Algunos están disponibles, otros hay que descargarlos  Para ello se utiliza el Plugin Installer  LR6: Add > More… > Install More Applications  LR5: Add Application > Admin > Plugin Installer Enero 2013 Liferay 65
  • 66. III.Gestión de Contenidos  Plugin Installer  Requiere conexión a Internet  Se listan los plugins disponibles  Buscar e instalar tema Envision  Si no se encuentra se puede descargar el WAR  E instalarlo con la opción Upload File  Descargar e instalar el tema Transparentia Enero 2013 Liferay 66
  • 67. III.Gestión de Contenidos  Personalización de Portlets  Look & Feel  Configuración del Portlet  Estilos  Márgenes  CSS Enero 2013 Liferay 67
  • 68. III.Gestión de Contenidos  Personalización de Portlets  Configuration  Setup  Supported clients (navegadores móviles)  Permissions  Sharing  Scope  Export/Import  A formato LAR Enero 2013 Liferay 68
  • 69. III.Gestión de Contenidos o 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/Reject Enero 2013 Liferay 69
  • 70. III.Gestión de Contenidos o Gestión de usuarios o (Control Panel/Enterprise Admin) o Usuarios o Grupos o Roles (colección de permisos) o Regular (general) o Community o Organization Enero 2013 Liferay 70
  • 71. III.Gestión de Contenidos o 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 parent Enero 2013 Liferay 71
  • 72. III.Gestión de Contenidos o 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 ofrecido Enero 2013 Liferay 72
  • 73. III.Gestión de Contenidos o 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 cerrada Enero 2013 Liferay 73
  • 74. III.Gestión de Contenidos o Roles predefinidos no modificables o Regulares o Administrator o Guest o User o Power User Enero 2013 Liferay 74
  • 75. III.Gestión de Contenidos o Roles predefinidos no modificables o Comunitarios o Community Administrator (no editan usuarios/contenido) o Community Member o Community Owner (creador, root) o Organizacionales o Organization Administrator (no suben usuarios a admin) o Organization Member o Organization Owner (creador, root) Enero 2013 Liferay 75
  • 76. III.Gestión de Contenidos o Más sobre gestión de usuarios o Se pueden reservar nombres y e-mails o Se puede impersonar un usuario para ver el portal cómo si fuéramos ese usuario o Se pueden modificar los valores por defecto del portal (Portal settings) Enero 2013 Liferay 76
  • 77. III.Gestión de Contenidos o 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 password Enero 2013 Liferay 77
  • 78. III.Gestión de Contenidos o Gestión de Documentos o LR6: Add > More… > Document Library o LR5: Add Application > Document Library o LR6.1 Añade tipos de documento y metadatos o Crear directorios con permisos o Subir documentos o Add document > Browse (Firefox) o Classic uploader (Otros navegadores) Enero 2013 Liferay 78
  • 79. III.Gestión de Contenidos o 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 Display Enero 2013 Liferay 79
  • 80. III.Gestión de Contenidos o 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 programadores Enero 2013 Liferay 80
  • 81. III.Gestión de Contenidos o 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 permisos Enero 2013 Liferay 81
  • 82. III.Gestión de Contenidos o 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/Paris Enero 2013 Liferay 82
  • 83. III.Gestión de Contenidos o 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=true Enero 2013 Liferay 83
  • 84. III.Gestión de Contenidos o 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-lagartija Enero 2013 Liferay 84
  • 85. III.Gestión de Contenidos o 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=Test Enero 2013 Liferay 85
  • 86. III.Gestión de Contenidos o 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= /home Enero 2013 Liferay 86
  • 87. III.Gestión de Contenidos o Configuración del portal o portal-ext.properties  ## MySQL  jdbc.default.driverClassName=com.mysql. jdbc.Driver  jdbc.default.url=jdbc:mysql://localhost : 3306/ddbb  jdbc.default.username=<usuario>  jdbc.default.password=<clave> Enero 2013 Liferay 87
  • 88. III.Gestión de Contenidos o 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-able Enero 2013 Liferay 88
  • 89. III.Gestión de Contenidos o 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=smtp Enero 2013 Liferay 89
  • 90. III.Gestión de Contenidos o 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.SSLSocketFactory Enero 2013 Liferay 90
  • 91. III.Gestión de Contenidos o 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, reminderqueries Enero 2013 Liferay 91
  • 92. III.Gestión de Contenidos o 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]=true Enero 2013 Liferay 92
  • 93. III.Gestión de Contenidos o 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=telephonenumber Enero 2013  ldap.auth.method=bind Liferay 93
  • 94. Contenidos I. Liferay y Tecnologías Java Involucradas II. Instalación de Liferay III. Gestión de Contenidos IV. Desarrollo de Portlets V. Desarrollo de Plugins y Hooks VI. Plantillas y Temas VII. Otras Consideraciones Enero 2013 Liferay 94
  • 95. IV. Desarrollo de Portlets o Portlet o Mini-aplicación que proporciona contenido o Componente gráfico usado en portales o Configurados en WEB-INFportlet.xml o Generan código según su modo (VIEW, EDIT, HELP) o Y su estado (Normal, Maximizado, Minimizado) Enero 2013 Liferay 95
  • 96. IV. Desarrollo de Portlets o 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 preferencias o Portal o Responsable de agregar el contenido generado por los Portlets para formar una aplicación Web Enero 2013 Liferay 96
  • 97. IV. Desarrollo de Portlets o Anatomía de un Portlet Enero 2013 Liferay 97
  • 98. IV. Desarrollo de Portlets o Ciclo de Vida de un Portlet o Carga o Inicialización o Procesado de Acciones (1) o Renderizado (todos) o Destrucción Enero 2013 Liferay 98
  • 99. IV. Desarrollo de Portlets o Interfaz Portlet o init(PortletConfig); o processAction(ActionRequest, ActionResponse); o render(RenderRequest, RenderResponse); o destroy(); Enero 2013 Liferay 99
  • 100. IV. Desarrollo de Portlets o 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 estado Enero 2013 Liferay 100
  • 101. IV. Desarrollo de Portlets o Interfaz PortletConfig  Map<String, String[]> getContainerRuntimeOptions();  String getInitParameter(String name);  Enumeration<String> getInitParameterNames();  PortletContext getPortletContext();  String getPortletName();  ResourceBundle getResourceBundle(Locale locale);  Enumeration<Locale> getSupportedLocales(); Enero 2013 Liferay 101
  • 102. IV. Desarrollo de Portlets o Procesamiento o Interfaz PortletRequest  ActionForward render(ActionMapping mapping, ActionForm form, PortletConfig PortletConfig, RenderRequest req, RenderResponse res); Enero 2013 Liferay 102
  • 103. IV. Desarrollo de Portlets o Procesamiento o Interfaz PortletResponse  void addProperty(Cookie cookie);  void addProperty(String key, Element element);  void addProperty(String key, String value);  Element createElement(String tagName);  String encodeURL(String path);  String getNamespace();  void setProperty(String key, String value); Enero 2013 Liferay 103
  • 104. IV. Desarrollo de Portlets o Configuración o Interfaz PortletContext  String getServerInfo();  InputStream getResourceAsStream(String path);  int getMajorVersion();  int getMinorVersion();  URL getResource(String path);  Object getAttribute(String name); Enero 2013 Liferay 104
  • 105. IV. Desarrollo de Portlets o Configuración o Interfaz PortletPreferences  boolean isReadOnly(String key);  String getValue(String key, String def);  void setValue(String key, String value);  Enumeration<String> getNames();  void reset(String key);  void store(); Enero 2013 Liferay 105
  • 106. IV. Desarrollo de Portlets o Configuración o Fichero portlet.xml <portlet> <portlet-name>NOMBRE_UNICO</portlet-name> <display-name>MiPortlet</display-name> <portlet-class> com.ext.portlet.MiPortlet </portlet-class> <portlet-preferences> <preference> <name>test</name> <value>123</value> <read-only>true</ready-only> </preference> </portlet-preferences> </portlet> Enero 2013 Liferay 106
  • 107. IV. Desarrollo de Portlets o Vista de un Portlet o Variables de la JSP o request y response o portletConfig o portletSession o portletSessionScope (atributos de sesión) o portletPreferences o portletPreferencesValues (mapa de preferencias) Enero 2013 Liferay 107
  • 108. IV. Desarrollo de Portlets o Vista de un Portlet o Librerías de etiquetas o uri="http://java.sun.com/portlet_2_0" prefix="portlet" o <portlet:defineObjects /> o <portlet:renderURL windowState="..." /> Enero 2013 Liferay 108
  • 109. IV. Desarrollo de Portlets o Interacción entre Portlets 1.0  Sesiones compartidas <shared-application-session-attribute> <name>compartida</name> </ shared-application-session-attribute> <portlet> <shared-portlet-session-attribute> <name>var</name> <java-class>com.paquete.Clase</java-class> </shared-portlet-session-attribute> </portlet> Enero 2013 Liferay 109
  • 110. IV. Desarrollo de Portlets o Interacción entre Portlets 1.0  Sesiones compartidas  Se accede a través de PortletSession  setAttribute("var", valor, PortletSession. APPLICATION_SCOPE)  getAttribute("var", PortletSession. APPLICATION_SCOPE) Enero 2013 Liferay 110
  • 111. IV. Desarrollo de Portlets o Interacción entre Portlets 2.0  Parámetros compartidos <public-render-parameter> <identifier>compartida</identifier> <qname xmlns:x="http://namespace/comun">x:var1</qname> </public-render-parameter> <portlet> <supported-public-render-parameter> compartida </supported-public-render-parameter> </portlet> Enero 2013 Liferay 111
  • 112. IV. Desarrollo de Portlets o Interacción entre Portlets 2.0  Parámetros compartidos  Se accede a través de renderRequest  setRenderParameter("var", valor)  getParameter("var") Enero 2013 Liferay 112
  • 113. IV. Desarrollo de Portlets o Interacción entre Portlets 2.0  Sesiones compartidas (liferay-portlet.xml) <liferay-portlet-app> <portlet> <private-session-attributes> false </private-session-attributes> </portlet> </liferay-portlet-app> Enero 2013 Liferay 113
  • 114. IV. Desarrollo de Portlets o Interacción entre Portlets 2.0  Se accede a través de PortletSession  renderRequest.getPortletSession();  setAttribute("var", valor, PortletSession. APPLICATION_SCOPE)  getAttribute("var", PortletSession. APPLICATION_SCOPE) Enero 2013 Liferay 114
  • 115. IV. Desarrollo de Portlets o Eventos <event-definition> <qname xmlns:x="http://mi.namespace">x:var</qname> <value-type>java.lang.String</value-type> </event-definition> <portlet> <supported-publishing-event> <qname xmlns:x="http://mi.namespace">x:var</qname> </supported-publishing-event> <supported-processing-event> <name>var</name> </supported-processing-event> </portlet> Enero 2013 Liferay 115
  • 116. IV. Desarrollo de Portlets o Eventos o Interfaz EventPortlet para recibir eventos o processEvent(EventRequest, EventResponse) o request.getEvent() o response.setEvent(qname, valor) o Usar objetos QName con el namespace definido o new QName ("http://mi.namescape", "var"); Enero 2013 Liferay 116
  • 117. IV. Desarrollo de Portlets o Un Portlet simple 1. Configurar portlet.xml o <portlet-name> o <portlet-class> (MVCPortlet) o <init-param> (view-jsp) o <supports> (text/html) o <security-role-ref> Enero 2013 Liferay 117
  • 118. IV. Desarrollo de Portlets o 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ón Enero 2013 Liferay 118
  • 119. IV. Desarrollo de Portlets o Un Portlet Programático 1. Crear un Portlet sencillo 2. Extender la clase Portlet deseada o MVCPortlet o LiferayPortlet o GenericPortlet o ... Enero 2013 Liferay 119
  • 120. IV. Desarrollo de Portlets o Un Portlet Programático 3. Implementar la acción por defecto y otras o processAction(ActionRequest, ActionResponse) o otraAccion(ActionRequest, ActionResponse) o SessionMessages o SessionErrors 4. Ampliar las JSP o <portlet:actionURL name="otraAccion">  <liferray-ui:success key="…" message="…" />  <aui:input> Enero 2013 Liferay 120
  • 121. Contenidos I. Liferay y Tecnologías Java Involucradas II. Instalación de Liferay III. Gestión de Contenidos IV. Desarrollo de Portlets V. Desarrollo de Plugins y Hooks VI. Plantillas y Temas VII. Otras Consideraciones Enero 2013 Liferay 121
  • 122. V. Desarrollo de Plugins y Hooks o Existen 5 tipos básicos de plugin o Portlets o Ext o Hooks o Plantillas o Temas Enero 2013 Liferay 122
  • 123. V. Desarrollo de Plugins y Hooks o Plugins SDK se distribuye con la estructura adecuada para poder crear cualquiera de ellos o Además, incluye ficheros create (.bat y . sh) para facilitar la creación del proyecto o Y descriptores Ant para la compilación y el despliegue sobre el portal Enero 2013 Liferay 123
  • 124. V. Desarrollo de Plugins y Hooks o 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ón Enero 2013 Liferay 124
  • 125. V. Desarrollo de Plugins y Hooks Enero 2013 Liferay 125
  • 126. V. Desarrollo de Plugins y Hooks  Snippets Enero 2013 Liferay 126
  • 127. V. Desarrollo de Plugins y Hooks o 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 clase Enero 2013 Liferay 127
  • 128. V. Desarrollo de Plugins y Hooks o 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ón Enero 2013 Liferay 128
  • 129. V. Desarrollo de Plugins y Hooks o 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 Hook Enero 2013 Liferay 129
  • 130. V. Desarrollo de Plugins y Hooks o 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.xml Enero 2013 Liferay 130
  • 131. V. Desarrollo de Plugins y Hooks o 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 XML Enero 2013 Liferay 131
  • 132. V. Desarrollo de Plugins y Hooks o 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.xml Enero 2013 Liferay 132
  • 133. V. Desarrollo de Plugins y Hooks o ServiceBuilder o Herramienta para construir servicios Java o Utilizada con el entorno Ext pero depreciada en LR6 o Pasos 1. Crear el proyecto de extensión o create.bat proyecto "Descripción del proyecto" 2. Crear el fichero service.xml Enero 2013 Liferay 133
  • 134. V. Desarrollo de Plugins y Hooks o 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 EntidadLocalServiceUtil Enero 2013 Liferay 134
  • 135. V. Desarrollo de Plugins y Hooks o Ejemplo service.xml <service-builder package-path="paquete.portlet"> <namespace>MisPortlets</namespace> <entity name="RegistroBD" local-service="true" remote-service="true" uuid="true" persistence-class= "org.curso.RegistroBDPersistenceImpl"> <column name="id" type="String" primary="true" /> <column name="campo1" type="String" /> <column name="campo2" type="Date" /> <order by="asc"> <order-column name="campo1" case-sensitive="false" /> </order> <finder name="FiltroCampo2" return-type="Collection"> <finder-column name="campo2" /> </finder> </entity> </service-builder> Enero 2013 Liferay 135
  • 136. Contenidos I. Liferay y Tecnologías Java Involucradas II. Instalación de Liferay III. Gestión de Contenidos IV. Desarrollo de Portlets V. Desarrollo de Plugins y Hooks VI. Plantillas y Temas VII. Otras Consideraciones Enero 2013 Liferay 136
  • 137. VI. Plantillas y Temas o Plantilla o Estructura de organización de Portlets o Se aplica a una página o Fichero .tpl Enero 2013 Liferay 137
  • 138. VI. Plantillas y Temas o Ejemplo de plantilla <div class="plantilla" id="main-content" role="main"> <div class="portlet-layout"> <div class="aui-w40 ..." id="column-1"> $processor.processColumn("column-1", "...") </div> <div class="aui-w60 ..." id="column-2"> $processor.processColumn("column-2", "...") </div> </div> </div> Enero 2013 Liferay 138
  • 139. VI. Plantillas y Temas o Tema o Aspecto aplicable al portal o a una página  /deep-blue-theme/  /docroot/  /WEB-INF/  /_diffs/  /css/  /images/  /js/  /templates/ Enero 2013 Liferay 139
  • 140. VI. Plantillas y Temas o Ficheros VM o Definen la estructura de  Portal  Navegación  Portlets  ... Enero 2013 Liferay 140
  • 141. VI. Plantillas y Temas o 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_id Enero 2013 Liferay 141
  • 142. VI. Plantillas y Temas o Ficheros VM o Admite control de flujo y pseudo-funciones o #if() o #else o #end o #foreach($var in $conjunto) o #parse() o #set() o #language() o #css() o #js() Enero 2013 Liferay 142
  • 143. VI. Plantillas y Temas o Ejemplo: Plantilla Portlet.vm <header class="portlet-topper"> <menu class="portlet-topper-toolbar" id="portlet-topper-toolbar_$Portlet_id" type="toolbar"> #if ($Portlet_display.isShowBackIcon()) <a href="$Portlet_back_url" class="portlet-icon-back"> #language("return-to-full-page")</a> #else $theme.iconOptions() $theme.iconMinimize() $theme.iconMaximize() $theme.iconClose() #end </menu> </header> Enero 2013 Liferay 143
  • 144. Contenidos I. Liferay y Tecnologías Java Involucradas II. Instalación de Liferay III. Gestión de Contenidos IV. Desarrollo de Portlets V. Desarrollo de Plugins y Hooks VI. Plantillas y Temas VII. Otras Consideraciones Enero 2013 Liferay 144
  • 145. VII. Otras Consideraciones o Admin Server Enero 2013 Liferay 145
  • 146. VII. Otras Consideraciones o 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 LOG Enero 2013 Liferay 146
  • 147. VII. Otras Consideraciones o 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 servidor Enero 2013 Liferay 147
  • 148. VII. Otras Consideraciones o Alta disponibilidad o Ejecutar un portal en servidores paralelos o Con balanceo de carga o Y robustez al fallo Enero 2013 Liferay 148
  • 149. VII. Otras Consideraciones o Alta disponibilidad o Ejemplo 1: Apache HTTP Server + mod_jk + Tomcat Enero 2013 Liferay 149
  • 150. VII. Otras Consideraciones o Alta disponibilidad o Ejemplo 2: Apache HTTP Server + mod_proxy + Tomcat Enero 2013 Liferay 150
  • 151. VII. Otras Consideraciones o 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 centralizada Enero 2013 Liferay 151
  • 152. VII. Otras Consideraciones o 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. properties Enero 2013 Liferay 152
  • 153. VII. Otras Consideraciones o 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.xml Enero 2013 Liferay 153
  • 154. VII. Otras Consideraciones o 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=false Enero 2013 Liferay 154
  • 155. VII. Otras Consideraciones o 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 DBMS Enero 2013 Liferay 155
  • 156. VII. Otras Consideraciones o 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 > Reindexar Enero 2013 Liferay 156
  • 157. VII. Otras Consideraciones o Cluster de BD o Liferay no implementa clustering o Pero se puede simular con JNDI o TOMCAT/conf/catalina/localhost/root.xml <Resource name="jdbc/LiferayPool" type="javax.sql.DataSource" driverClassName="org.continuent.sequoia.driver.Driver" url="jdbc: sequoia://192.168.10.19:25322,192.168.10.20:25323/lportal" auth=" Container" username="usr" password="pwd" maxActive="20" /> o Middleware Sequoia (http://sequoia. continuent.org) Enero 2013 Liferay 157
  • 158. VII. Otras Consideraciones o 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.xml Enero 2013 Liferay 158
  • 159. VII. Otras Consideraciones o 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.xml Enero 2013 Liferay 159
  • 160. VII. Otras Consideraciones o Partición de BD o Configuración portal-ext.properties: # Particiona por instancias de LR shard.selector=com.liferay.portal.dao.shard. RoundRobinShardSelector # alternativa: ManualShardSelector # Otros modos hay que implementarlos properties.shard.available.names=xxx,yyy,zzz shard.default.name=xxx jdbc.default.* jdbc.xxx.* Enero 2013 Liferay 160
  • 161. VII. Otras Consideraciones o 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.xml Enero 2013 Liferay 161
  • 162. VII. Otras Consideraciones o dynamic-data-source-spring.xml <bean id="dynamicDataSourceTargetSource" class="com.liferay. portal.dao.jdbc.aop. DynamicDataSourceTargetSource"> <property name="readDataSource"> <bean class="com.liferay.portal.dao.jdbc.spring. DataSourceFactoryBean"> <property name="porpertyPrefix" value="jdbc.read." /> </bean> </property> <property name="writeDataSource"> <bean ... </property> </bean> Enero 2013 Liferay 162
  • 163. VII. Otras Consideraciones o shard-data-source-spring.xml <bean id="shardDataSource1" class="org.springframework.jdbc. datasource.LazyConnectionDataSourceProxy"> <property name="targetDataSource"> <bean class="com.liferay.portal.dao.jdbc.spring. DataSourceFactoryBean"> <property name="porpertyPrefix" value="jdbc.xxx." /> </bean> </property> </bean> Enero 2013 Liferay 163
  • 164. VII. Otras Consideraciones o 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 concurrentes Enero 2013 Liferay 164
  • 165. VII. Otras Consideraciones o 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 manual Enero 2013 Liferay 165
  • 166. VII. Otras Consideraciones o 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=ajp13 Enero 2013 Liferay 166
  • 167. VII. Otras Consideraciones o 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.conf Enero 2013 Liferay 167
  • 168. VII. Otras Consideraciones  Otras recomendaciones  Evitar el uso de código Java en páginas JSP  Taglibs y expresiones EL  Utilizar <liferay-util:buffer> al suplantar JSP <liferay-util:buffer var="html"> <liferay-util:include page="/.../pagina.jsp" /> </ liferay-util:buffer> ${html} Enero 2013 Liferay 168
  • 169. VII. Otras Consideraciones  Algoritmos para GC en Java  Serial Collector  Tipo Stop-the-World  -XX:+UseSerialGC  Parallel [Compacting] Collector  -XX:+UseParallelGC  -XX:+UseParallelOldGC  Concurrent Mark-Sweep Collector  -XX:+UseConcMarkSweepGC  -XX:+CMSIncrementalMode Enero 2013 Liferay 169
  • 170. VII. Otras Consideraciones  Algoritmos para GC en Java Enero 2013 Liferay 170
  • 171. VII. Otras Consideraciones  Algoritmos para GC en Java Serial CMS Parallel Modo Compacting Enero 2013 Liferay 171
  • 172. VII. Otras Consideraciones  Algoritmos para GC en Java  Garbage-First (G1)  GC de servidor con soporte para varios procesadores y amplia memoria  Incluido en JRE 7  Memoria dividida en "cards" de 512 byte referenciadas desde una tabla de cards  -XX:+UseG1GC Enero 2013 Liferay 172
  • 173. VII. Otras Consideraciones o 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=true Enero 2013 Liferay 173
  • 174. VII. Otras Consideraciones o 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ático Enero 2013 Liferay 174
  • 175. VII. Otras Consideraciones o 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=256m Enero 2013 Liferay 175
  • 176. VII. Otras Consideraciones o 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=true Enero 2013 Liferay 176
  • 177. Muchas Gracias Óliver Centeno Álvarez Enero 2013 Liferay 177

Hinweis der Redaktion

  1. Personales ( My Yahoo! and iGoogle ) Académicos () Gubernamentales Corporativos (Intranets) De dominio específico
  2. 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.