Liferay. Instalación sobre SQLServer 2000


Uno de nuestros clientes tenía el requerimiento de montar un Liferay 6.2 GA2 sobre Microsoft SQLServer 2000. Según documentación de Liferay, el portal es compatible con este SGBD, cierto, pero la instalación mediante wizard funcionará perfectamente sólo a partir de la versión 2005.

Básicamente los problemas encontrados son dos:

  1. Tipo de datos de columna nvarchar(max) no existe en SQLServer 2000.
  2. Esta versión tiene tamaño máximo de row de 8KB,como la versión 2005, pero esta última almacena en memoria extra los datos según el tipo de columna. Por el contrario, SQLServer 2000, sea cuál sea el tipo de datos, todo registro se almacenará en estos 8KB.
     

En nuestro caso, la base de datos se encuentra en una máquina remota. Ten en cuenta lo siguiente en caso que así sea:

  1. Instalar el Service Pack 3 para SQLServer 2000. Evitará bastantes problemas para acceder vía TCP a la base de datos.
  2. Habilitar el acceso TCP a la máquina en el SQLServer.
  3. Comprobar que el log así lo refleja (visible en el Enterprise Manager, en la sección Management)
  4. Testear el acceso remoto mediante Telnet a la IP y puerto (1433 por defecto). Debería aparecer pantalla en negro o mensaje conectado pero no el mensaje de “connection refused“.

En este punto, detallamos a continuación los pasos que necesitan revisión sobre el habitual proceso de instalación de Liferay. La mayoría de ellos pueden realizarse antes de llamar al ./startup.sh, es decir, antes de lanzar el wizard de instalación automática.

  1. Preparar la base de datos
    1. Crear la base de datos sobre la que se quiera instalar Liferay.
    2. Creación manual del modelo de datos.
      1. Bajarse el script de las tablas desde aquí: http://www.liferay.com/es/downloads/liferay-portal/available-releases (apartado APPLICATION SERVER PLUGINS – DATABASE SCRIPTS)
      2. En el ZIP, localizamos el script portal-tables-sql-server.sql que vamos a modificar para luego ejecutarlo manualmente en el SQLServer (antes de que lo haga Liferay automáticamente en la instalación)
        1. Reemplazar nvarchar(max) por text. (cambio en el tipo de datos de columna en todo el script)
        2. Aún con esto, si lanzáramos en el SQLServer el script modificado, veríamos que nos lanza el siguiente aviso para unas 40 tablas:
  2.  The table [Table] has been created, but its maximum row size exceeds the allowed maximum of 8060 bytes. INSERT or UPDATE to this table will fail if the resulting row exceeds the size limit

Aparece el segundo problema comentado al inicio de esta entrada. Para evitar esta situación no queda otra que modificar manualmente las tablas afectadas por superar el límite de tamaño de row de 8KB. Una opción es modificar el tamaño de los nvarchar. Puede comprobarse que el script está listo cuando en su ejecución no resulte ningún warning como el anterior.
Liferay en su instalación, sólo crea las tablas si éstas no existen. Crear el modelo de datos previa instalación es perfectamente válido. Dejaremos las tablas creadas y vamos a preparar Liferay.
 

  1. Preparar Liferay
  2.  
    1. Configuramos la conexión a la BBDD en el portal-ext.properties.
    2. Añadimos en portal-ext.properties la siguiente línea: verify.processes= Sobreescribe la propiedad que controla el disparador para la verificación de la base de datos al arrancar y la inhabilita. Por defecto Liferay, la tiene activada. 
      Una de las acciones que realiza el verificador por defecto es crear una columna para cada tabla para después eliminar dicha columna. El motivo por el que inhabilitamos la verificación es por que justamente la columna que añade Liferay es del tipo nvarchar(max), el tipo de datos incompatible. Lo ideal sería montar un verificador a medida para SQLServer 2000 pero se muestra en esta entrada de blog una solución que no implique recompilar Liferay
      Si lanzáramos el ./startup.sh antes de realizar esta acción, nos econtraríamos con el siguiente error en el log: 15:33:05,507 INFO [localhost-startStop-1][VerifySQLServer:107] Updating AnnouncementsEntry.content to use nvarchar(max) 15:33:05,509 ERROR [localhost-startStop-1][VerifySQLServer:95] java.sql.SQLException: Line 1: Incorrect syntax near ‘max’

Ya lo tenemos todo listo para lanzar la instalación.

Hasta el día de hoy, tras la instalación correcta de Liferay, únicamente se han detectado problemas con las inserciones de datos básicos que Liferay realiza para tablas de configuración, como por ejemplo, tipos de documento de la Document Library (DLFileEntryType), que es una de las tablas que deben modificarse los tipos de datos en el script. El tipo “Basic Document” no existía en el Back Office.

Esperamos que si alguna vez os encontráis con tener de realizar una instalación en este entorno, esta entrada os sirva para ahorraros algún que otro dolor de cabeza.

Hasta la próxima.


Leave a Reply

Your email address will not be published. Required fields are marked *