Error al recoger usuario de SHARE al hacer login

cancel
Showing results for 
Search instead for 
Did you mean: 
jlniveiro
Member II

Error al recoger usuario de SHARE al hacer login

Hola,

Estoy intentando hacer una clase para recoger al usuario que se autentica en SHARE (y si lo consigue o no) para posteriormente llevar un registro de acceso en una base de datos paralelea. En principio me he creado una clase que hereda de LoginController y que la he definido en el contexto de la siguiente forma:

    <!– Controlador de inicio de sesión–>
    <bean id="loginController" class="es.login.CNCALoginController">
       <property name="cacheSeconds" value="-1" />
       <property name="useExpiresHeader"><value>true</value></property>
       <property name="useCacheControlHeader"><value>true</value></property>
       <property name="userFactory" ref="user.factory"></property>
    </bean>

Esta forma de hacerlo lo he visto en otros foros y por lo que dicen asi me funcionaria pero me estoy encontrando un error al arrancar el Tomcat, pues me dice que no encuentra el bean con la referencia "user.factory". En mi clase tengo definido el metodo setter correspondiente. El error que me muestra es:

2014-08-12 15:11:22,251 ERROR [web.context.ContextLoader] [localhost-startStop-1] Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loginController' defined in file [/opt/alfresco/tomcat/shared/classes/alfresco/extension/CNCA-webscripts-context.xml]: Cannot resolve reference to bean 'user.factory' while setting bean property 'userFactory'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'user.factory' is defined
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
at org.alfresco.web.app.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:63)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:976)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1653)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
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:724

Estoy utilizando Alfresco Community 4.2e. ¿Como puedo obtener el UserFactory? ¿tiene otro nombre en la versión que manejo?. Muchas gracias. Un saludo.
7 Replies
jlniveiro
Member II

Re: Error al recoger usuario de SHARE al hacer login

No ha salido bien el mensaje. En el contexto he puesto:

    <!– Controlador de inicio de sesión–>
    <bean id="loginController" class="es.login.MyLoginController">
       <property name="cacheSeconds" value="-1" />
       <property name="useExpiresHeader"><value>true</value></property>
       <property name="useCacheControlHeader"><value>true</value></property>
       <property name="userFactory" ref="user.factory"></property>
    </bean>
angelborroy
Alfresco Employee

Re: Error al recoger usuario de SHARE al hacer login

El nombre sigue siendo el mismo, lo que parece ocurrir es que Spring está intentando cargar tu bean personalizado antes de cargar los beans de <CODE>spring-surf</CODE>. Prueba a declarar tu loginController con un <CODE>depends-on="user.factory"</CODE>

Suerte!
Hyland Developer Evangelist
jlniveiro
Member II

Re: Error al recoger usuario de SHARE al hacer login

    Hola Angel,

  Muchas gracias por tu ayuda. He probado lo que me comentas pero aun ni me funciona. EL error que me muestra ahora es

2014-08-14 08:34:05,212  ERROR [web.context.ContextLoader] [localhost-startStop-1] Context initialization failed
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'user.factory' is defined
   at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:527)
   at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1083)
   at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:274)
   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
   at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:281)
   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)

  Es probable que esté cargando mi bean antes que los de spring-surf y de ahi que no lo localice. No se que hacer.
jlniveiro
Member II

Re: Error al recoger usuario de SHARE al hacer login

  Para dar mas detalles de como lo tengo configurado, he declarado el bean en un fichero custom-context.xml dentro de /alfresco/extension, pues fuera de esa localizacion no encuentra la clase que me he creado (en webapps/alfresco/WEB-INF/lib/). Sigo probando cosas a ver si doy con la tecla.

   Un saludo.
angelborroy
Alfresco Employee

Re: Error al recoger usuario de SHARE al hacer login

Te recomendaría que utilizases los arquetipos AMP facilitados por la Maven Alfresco SDK, eso te permitirá empaquetar tus desarrollos de una manera más segura.

En cuanto al problema, también puedes intentar inicializar la User Factory en tu programación. La línea debería ser algo así <CODE>UserFactory userFactory = FrameworkUtil.getServiceRegistry().getUserFactory();</CODE>
Hyland Developer Evangelist
jlniveiro
Member II

Re: Error al recoger usuario de SHARE al hacer login

Pues es probable que tenga que hacerlo a través de programacion, aunque Eclipse me dice que FrameworkUtil está deprecated. Por eso estoy intentando inyectarlo para evitar problemas a futuro.

  Muchas gracias.
  Un saludo.
jlniveiro
Member II

Re: Error al recoger usuario de SHARE al hacer login

He obtenido el UserFactory mediante programación (desde el FrameworkUtil) y funciona sin problemas…. aunque el modo de obtención del UserFactory esté deprecado. Gracias Angel por todo…

   Un saludo.