Entrades amb etiqueta session .

Modificar el tiempo de sesión de Liferay

Data de publicació 29/04/16 09:30

La duración de la sesión de Liferay por defecto es de 30 minutos. Hoy os mostraremos como modificar este valor.

Podemos encontrar este valor dentro del portal.properties de Liferay.

  • portal.properties (Liferay src): /portal/portal-impl/classes
  • portal.properties (Server): /webapps/ROOT/WEB-INF/lib/portal-impl.jar
    #
    # Specify the number of minutes before a session expires. This value is
    # always overridden by the value set in web.xml.
    #
    session.timeout=30

 

Al estar como propiedad de portal podemos sobrescribirla des del portal-ext.properties o el portal-setup-wizard.properties

  • portal-ext.properties: /webapps/ROOT/WEB-INF/classes/
  • portal-setup-wizard.properties: /liferay-portal-x.x-xx-xxx/
    session.timeout=240

 

Tal y como indican en el propio portal.properties, este cambio no es suficiente, ya que prevalece el valor que se encuentra en el archivo web.xml

  • web.xml (Liferay src): /portal-web/docroot/WEB-INF/
  • web.xml (Server): /webapps/ROOT/WEB-INF/
<session-config>
    <session-timeout>30</session-timeout>
</session-config>

 

La forma recomendada de modificar este tipo de propiedades es mediante un Ext Plugin.

Al crear un nuevo Ext Plugin, se nos generarán diversos directorios y archivos. El que queremos modificar nosotros ya se encuentra en (/docroot/WEB-INF/ext-web/docroot/WEB-INF/web.xml ). Solamente es necesario editarlo y añadir únicamente el tag que queremos modificar. No es necesario como en otros casos poner todo el contenido, ya se encargará de hacer el merge con el archivo original.

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <session-config></session-config>
</web-app>

En nuestro caso eliminamos el tag <session-timeout> para que tome como válido el valor que pongamos en el portal-ext.properties, siendo más sencillo controlar dicho valor.

Una vez aplicado el EXT podremos observar que el archivo web.xml de nuestro servidor que antes contenía <session-timeot> dentro de <session-config>, ahora ya no tiene esa propiedad. Desde este momento ya podremos modificar el tiempo de sesión desde las propiedades del portal.

Recordad que para aplicar un EXT es necesario reiniciar después de hacer el deploy, y si ya existía un EXT anterior, según la situación, puede ser necesario limpiar Liferay antes de aplicar de nuevo un Ext Plugin (más información aquí).

Un saludo.

Filtros de búsqueda en sesión

Data de publicació 11/04/16 11:28

Todos nos hemos encontrado alguna vez, al programar portlets en Liferay, con la necesidad de presentar al usuario un listado de elementos y un pequeño formulario con una serie de campos para filtrar los resultados de dicho listado. Si estamos usando el search container de Liferay, nos encontraremos con que tenemos que guardar los valores de los filtros si queremos mantenerlos al clicar en algún botón del search container. Por ejemplo, si tenemos un listado de casas, y filtramos por año de construcción, si el resultado tiene varias páginas de registros, nos encontraremos que al clicar en el botón de siguiente página, habremos perdido el filtro de año de construcción.

La manera "Estándard" como se hace esto en Liferay es guardando los valores de los filtros como preferencias del portlet, de manera que siempre que vayamos al listado nos encontraremos con los filtros que teníamos puestos en la última búsqueda que hicimos. Esto es así incluso si nuestra sesión ha expirado o si la hemos cerrado. Al volver a entrar nuestras credenciales e ir al listado, veremos los filtros tal y como estaban la última vez.

Hay situaciones en las que queremos que la funcionalidad sea similar a esta, pero que al cerrar sesión, o cuando la sesión expire, los filtros se borren y aparezcan los valores por defecto de los mismos al volver a entrar al listado. Para este caso, lo que habría que hacer sería guardar los filtros en la sesión.

Para conseguir esto, tendremos que tener, en el jsp de formularios de filtro, algo similar a esto:

...
String keywordFilter = SessionParamUtil.getString(request, "keywordFilter""");
String descriptionFilter = SessionParamUtil.getString(request, "descriptionFilter""");
String commentsFilter = SessionParamUtil.getString(request, "commentsFilter""");
...

 

Aquí definimos las variables donde guardaremos los filtros y, en vez de usar la clase ParamUtil, como es habitual, usaremos SessionParamUtil, que busca el parámetro también en la sesión (no sólo en la request).

Además, en nuestro controlador tendremos que poner el código encargado de recoger los filtros de la request y de guardarlos en la sesión:

public void render(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException{
        PortletSession portletSession = renderRequest.getPortletSession();
        Enumeration<String> params = renderRequest.getParameterNames();
        while(params.hasMoreElements()){
            String param = params.nextElement();
            if(!param.endsWith("Filter")) continue;
            portletSession.setAttribute(param, renderRequest.getParameter(param), PortletSession.PORTLET_SCOPE);
        }
        super.render(renderRequest, renderResponse);
}

 

En este caso hemos modificado la función render de nuestro controlador para que guarde todos los parámetros de la request cuyo nombre acabe en "Filter".

voilà, ya tenemos nuestros filtros guardados en sesión!

 

Esperamos que os haya sido de ayuda, hasta la próxima!!

Bloggers recents Bloggers recents

Oscar Rodríguez
Apunts: 9
Estrelles: 2
Data: 28/09/16
David Berruezo
Apunts: 14
Estrelles: 1
Data: 22/07/16
Javi Martín
Apunts: 2
Estrelles: 1
Data: 20/05/16
Javier Torres
Apunts: 5
Estrelles: 3
Data: 11/04/16
Sergi Mingueza
Apunts: 4
Estrelles: 1
Data: 19/10/15
Matilde Gallardo
Apunts: 1
Estrelles: 0
Data: 26/02/15
Adrià Vilà
Apunts: 4
Estrelles: 4
Data: 31/08/14
Elena Ruiz
Apunts: 1
Estrelles: 2
Data: 13/03/14