Configuración de la persistencia de sesión para Liberty

Cuando los datos de sesión se deben mantener entre reinicios de un servidor o una anomalía de servidor imprevista, puede configurar Liberty para persistir los datos de sesión en una base de datos. Esta configuración permite que varios servidores compartan la misma sesión de datos y que se puedan recuperar los datos de la sesión en caso de migración tras error.

Acerca de esta tarea

Para configurar uno o varios servidores en Liberty para persistir datos de sesión en una base de datos, complete los pasos siguientes.

Procedimiento

  1. Defina una configuración de gestión de sesiones compartida que se pueda reutilizar entre todos los servidores. Debe completar los pasos siguientes, como un requisito mínimo:
    1. Habilitar la característica sessionDatabase-1.0.
    2. Definir un origen de datos:
      <dataSource id="SessionDS" ... />
    3. Haga referencia al origen de datos desde la configuración de base de datos de la sesión.
      <httpSessionDatabase id="SessionDB" dataSourceRef="SessionDS" ... />
    4. Haga referencia a la ubicación del almacenamiento persistente desde la configuración de gestión de sesiones.
      <httpSession storageRef="SessionDB" ... />
    Nota: No son obligatorios el atributo storageRef del elemento httpSession ni el atributo id del elemento httpSessionDatabase. Si está habilitada la característica sessionDatabase-1.0 y el elemento httpSessionDatabase hace referencia a un origen de datos válido, se habilita la persistencia de sesiones aun cuando no esté establecido el atributo storageRef.

    Consulte Persistencia de sesión de base de datos si desea detalles sobre los elementos httpSession y httpSessionDatabase.

    Por ejemplo, puede crear un archivo denominado ${shared.config.dir}/httpSessionPersistence.xml como se indica a continuación:
    <server description="Demonstrates HTTP Session Persistence Configuration">
    
        <featureManager>
            <feature>sessionDatabase-1.0</feature>
            <feature>servlet-3.0</feature>
        </featureManager>
    
        <httpEndpoint id="defaultHttpEndpoint" host="*" httpPort="${httpPort}">
            <tcpOptions soReuseAddr="true"/>
        </httpEndpoint>
    
        <fileset id="DerbyFiles" includes="*.jar"
    dir="${shared.resource.dir}/derby/client"/>
        <library id="DerbyLib" filesetRef="DerbyFiles"/>
        <jdbcDriver id="DerbyDriver" libraryRef="DerbyLib"/>
        <dataSource id="SessionDS" jdbcDriverRef="DerbyDriver">
            <properties.derby.client user="user1" password="password1" 
                                     databaseName="${shared.resource.dir}/databases/SessionDB" 
                                     createDatabase="create"/>
        </dataSource>
    
        <httpSessionDatabase id="SessionDB" dataSourceRef="SessionDS"/>
        <httpSession storageRef="SessionDB" cloneId="${cloneId}"/>
    
        <application id="test" name="test" type="ear" location="${shared.app.dir}/test.ear"/>    
    
    </server>
    Nota: Cuando se configuren varios servidores para la persistencia de sesiones de datos en la misma base de datos, los servidores deben compartir la misma configuración de gestión de sesiones. No se da soporte a ninguna otra configuración. Por ejemplo, un servidor no puede utilizar un esquema de varias filas cuando otro servidor utiliza un esquema de una sola fila.

    El plug-in de servidor HTTP utiliza el ID de clon que se inserta en la cabecera de solicitud/respuesta para mantener la afinidad de sesiones entre solicitudes. Si bien el ID del clon no suele cambiar, en Liberty, el ID del clon se genera cuando se inicia un servidor por primera vez y se vuelve a generar si se inicia el servidor con la opción --clean. Para uso en producción, la asignación manual de un ID de clon garantizará que el ID es estable y que la afinidad de sesiones se mantiene correctamente. El ID del clon debe ser exclusivo para cada servidor y puede tener una longitud de 8 a 9 caracteres alfanuméricos y se especifica en el paso 3.

  2. Incluya la configuración de gestión de sesiones compartidas en todos los servidores. Por ejemplo, cree dos archivos server.xml para instancias de servidor denominados s1 y s2, como se indica a continuación :
    • ${wlp.user.dir}/servers/s1/server.xml
    • ${wlp.user.dir}/servers/s2/server.xml
    <server description="Example Server">
        <include location="${shared.config.dir}/httpSessionPersistence.xml"/>
    </server>

    Consulte Utilización de elementos include en los archivos de configuración.

  3. Especifique variables exclusivas en el archivo bootstrap.properties de cada servidor.
    • ${wlp.user.dir}/servers/s1/bootstrap.properties
      httpPort=9081
      cloneId=s1
    • ${wlp.user.dir}/servers/s2/bootstrap.properties
      httpPort=9082
      cloneId=s2
  4. Cree una tabla para la persistencia de sesiones antes de iniciar los servidores.
    • Si desea cambiar el tamaño de fila, el nombre de tabla o el nombre del espacio de tabla predeterminados, consulte Persistencia de sesión de base de datos si desea detalles sobre el elemento httpSessionDatabase.
    • Si el servidor está instalado en z/OS, tiene que crear manualmente la tabla. Si el servidor está utilizando z/OS DB2 para la persistencia de sesiones, tiene que realizar los diferentes pasos para crear manualmente la tabla.
    • Si el servidor está utilizando DB2 para la persistencia de sesiones, puede aumentar el tamaño de página para optimizar el rendimiento de la escritura de grandes cantidades de datos en la base de datos.
  5. Sincronice los relojes del sistema de todas las máquinas que alojan servidores Liberty. Si no están sincronizados los relojes del sistema, puede producirse una invalidación antes de tiempo
  6. Opcional: Si es necesario, integre sesiones HTTP y la seguridad en Liberty. De forma predeterminada, después de crear una sesión y acceder a la misma desde un recurso protegido con la seguridad habilitada, sólo el propietario original de la sesión podrá acceder a ella. La seguridad de sesiones (integración de seguridad) está habilitada de forma predeterminada.
  7. Opcional: Si es necesario, Instale y configure el plug-in de servidor web para direccionar las solicitudes a cada uno de los servidores que ha configurado. La afinidad de sesiones solo se mantiene si su configuración de plug-in especifica los ID de clon que coinciden con los ID de clon definidos en la configuración del servidor.

Icono que indica el tipo de tema Tema de tarea

Nombre de archivo: twlp_admin_session_persistence.html