[Error] Problemas con SLF4JLogFactory y Alfresco 4.2.x

Muy buenas.

Cuando nos toca trabajar con la SDK 1.1.1 – porque algunas veces puede ocurrir que nos encontremos algún cliente sigue usando Alfresco 4.2.x – nos tocará lidiar con esta versión de SDK siguiendo la tabla de compatibilidades publicada por Alfresco. Si utilizamos el arqueotipo “todo en uno” por defecto tenemos un error nada más arrancar:

GRAVE: Servlet /alfresco threw load() exception
org.apache.commons.discovery.DiscoveryException: Class org.apache.commons.logging.impl.SLF4JLogFactory does not implement org.apache.commons.logging.LogFactory
at org.apache.commons.discovery.tools.ClassUtils.verifyAncestory(ClassUtils.java:180)
at org.apache.commons.discovery.tools.SPInterface.verifyAncestory(SPInterface.java:201)
at org.apache.commons.discovery.tools.SPInterface.newInstance(SPInterface.java:195)
at org.apache.commons.discovery.tools.DiscoverClass.newInstance(DiscoverClass.java:579)
at org.apache.commons.discovery.tools.DiscoverSingleton.find(DiscoverSingleton.java:418)
at org.apache.commons.discovery.tools.DiscoverSingleton.find(DiscoverSingleton.java:378)
at org.apache.axis.components.logger.LogFactory$1.run(LogFactory.java:45)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.axis.components.logger.LogFactory.getLogFactory(LogFactory.java:41)
at org.apache.axis.components.logger.LogFactory.<clinit>(LogFactory.java:33)
at org.apache.axis.transport.http.AxisServletBase.<clinit>(AxisServletBase.java:58)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.springsource.loaded.ri.ReflectiveInterceptor.jlrConstructorNewInstance(ReflectiveInterceptor.java:1002)
at org.springsource.loaded.ri.ReflectiveInterceptor.jlClassNewInstance(ReflectiveInterceptor.java:989)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:138)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5033)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5317)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

Incluso el error está reconocido por Alfresco en este ticket, pero lamentablemente la solución que proponen no funciona :-(

Después de horas de quebramiento de cabeza, cientos de pruebas y combinaciones, esto es lo que me funcionó:

Sigue leyendo

[Tutorial] Mi primer proyecto Alfresco con Maven

¡Muy buenas a tod@s!

Hace algún tiempo estuve echándole una mano a David Selma con su proyecto de carrera basado en Alfresco, en concreto con la configuración de un proyecto Maven para extender algunas funcionalidades de Alfresco. Eso, sumado a la insistencia de mi colega Jordi Solis, me ha llevado a publicar este mini tutorial para ayudar a aquellas personas que están empezando con Alfresco y Maven os resulte algo más sencillo “echar a andar”.

Este tutorial está pensado para que en unos minutos seas capaz de configurar dos proyectos, uno para el repositorio (que irá dirigido a la aplicación de Alfresco) y otro para Share, probarlo y no morir en el intento :-)

Antes de empezar…

Sigue leyendo

[Tip] Alfresco: Cómo saber dónde autentica un usuario

¡Muy buenas!

Hace poco, en un cliente que tiene una instalación de Alfresco con autenticación habilitada para NTLM (nativo de Alfresco) y en ldap, tuve que chequear un problema de duplicidad de usuarios y necesité comprobar dónde se autenticaban los usuarios de Alfresco: Si tiraban de autenticación interna o lo hacían externamente.
Por si os ocurre alguna vez, me gustaría explicar cómo podéis comprobarlo y, además, así no se me olvida para el día de mañana ;-)

Sigue leyendo

Conseguir un MER (Modelo Entidad Relación) de la base de datos de Alfresco

Buenas.

Hay a veces que necesitamos ojear la base de datos en Alfresco para comprobar si hay algo mal en ella: Por ejemplo si tenemos datos a nulo que no se nos muestran en la interfaz. Muchas veces es necesario echar un vistazo a las tablas que tienen Alfresco para realizar la consulta adecuada: Ver qué dependencias tienen las tablas, relaciones, contraints, etc…

Me gustaría compartiros cómo podéis extraer el Modelo Entidad Relación de vuestra instalación de Alfresco. Por supuesto la herramienta que os voy a enseñar la podéis usar con otras aplicaciones distintas, pero en este post nos centraremos en Alfresco.

Sigue leyendo