You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Michael Bernagou <bl...@gmail.com> on 2007/12/18 10:23:10 UTC

T5 tapestry-hibernate error?

Something wired when tapestry try to get the HibernateSession :

Error invoking service builder method
org.apache.tapestry.hibernate.HibernateModule.build(HibernateSessionSource,
ThreadCleanupHub) (at HibernateModule.java:62) (for service
'HibernateSessionManager'): Exception constructing service
'HibernateSessionSource': Error invoking constructor
org.apache.tapestry.internal.hibernate.HibernateSessionSourceImpl(Log,
Collection, ClassNameLocator) (at HibernateSessionSourceImpl.java:35) (for
service 'HibernateSessionSource'): No service implements the interface
org.apache.commons.logging.Log.

java.lang.RuntimeException No service implements the interface
org.apache.commons.logging.Log.
Stack trace

   - org.apache.tapestry.ioc.internal.RegistryImpl.getService(
   RegistryImpl.java:553)
   -
   org.apache.tapestry.ioc.internal.services.MasterObjectProviderImpl.provide
   (MasterObjectProviderImpl.java:46)
   - org.apache.tapestry.ioc.internal.RegistryImpl.getObject(
   RegistryImpl.java:665)
   - org.apache.tapestry.ioc.internal.RegistryImpl.getObject(
   RegistryImpl.java:722)
   - org.apache.tapestry.ioc.internal.ObjectLocatorImpl.getObject(
   ObjectLocatorImpl.java:50)
   -
   org.apache.tapestry.ioc.internal.util.InternalUtils.calculateParameterValue
   (InternalUtils.java:217)
   -
   org.apache.tapestry.ioc.internal.util.InternalUtils.calculateParameters
   (InternalUtils.java:248)
   -
   org.apache.tapestry.ioc.internal.util.InternalUtils.calculateParametersForConstructor
   (InternalUtils.java:235)
   -
   org.apache.tapestry.ioc.internal.ConstructorServiceCreator.createObject
   (ConstructorServiceCreator.java:46)
   -
   org.apache.tapestry.ioc.internal.SingletonServiceLifecycle.createService
   (SingletonServiceLifecycle.java:31)
   -
   org.apache.tapestry.ioc.internal.LifecycleWrappedServiceCreator.createObject
   (LifecycleWrappedServiceCreator.java:54)
   -
   org.apache.tapestry.ioc.internal.InterceptorStackBuilder.createObject(
   InterceptorStackBuilder.java:54)
   -
   org.apache.tapestry.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject
   (RecursiveServiceCreationCheckWrapper.java:61)
   -
   org.apache.tapestry.ioc.internal.services.JustInTimeObjectCreator.createObject
   (JustInTimeObjectCreator.java:67)
   - org.apache.tapestry.internal.hibernate.HibernateSessionManagerImpl
   .<init>(HibernateSessionManagerImpl.java:31)
   - org.apache.tapestry.hibernate.HibernateModule.build(
   HibernateModule.java:62)
   - sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   - sun.reflect.NativeMethodAccessorImpl.invoke(
   NativeMethodAccessorImpl.java:39)
   - sun.reflect.DelegatingMethodAccessorImpl.invoke(
   DelegatingMethodAccessorImpl.java:25)
   - java.lang.reflect.Method.invoke(Method.java:585)
   -
   org.apache.tapestry.ioc.internal.ServiceBuilderMethodInvoker.createObject
   (ServiceBuilderMethodInvoker.java:76)
   -
   org.apache.tapestry.ioc.internal.services.PerThreadServiceCreator.initialValue
   (PerThreadServiceCreator.java:50)
   - java.lang.ThreadLocal$ThreadLocalMap.getAfterMiss(ThreadLocal.java
   :374)
   - java.lang.ThreadLocal$ThreadLocalMap.get(ThreadLocal.java:347)
   - java.lang.ThreadLocal$ThreadLocalMap.access$000(ThreadLocal.java
   :225)
   - java.lang.ThreadLocal.get(ThreadLocal.java:127)
   -
   org.apache.tapestry.ioc.internal.services.PerThreadServiceCreator.createObject
   (PerThreadServiceCreator.java:56)
   - papo.dao.impl.UserDaoImpl.getUser(UserDaoImpl.java:35)

The origin of the problem is when trying to getSession() :

public class UserDaoImpl implements UserDao {
    private static Log log = LogFactory.getLog(UserDaoImpl.class);

    private Session session;
    public Session getSession() { return session; }
    public void setSession(Session session) { this.session = session; }

    public UserDaoImpl(Session session) {
        setSession(session);
    }

    /**
     * Récupére un User pour un login et password donné
     *
     * @param login
     * @param password
     * @return Operateur
     */
    public User getUser(String login, String password) {
        log.debug("Recherche du User login : " + login);
        try {
            Query q = getSession().createQuery("from User u where u.login =
:login and u.password = :pwd");
...
}

Tapestry-ioc is responsible to get the constructor call :

   public static void bind(ServiceBinder binder) {
     ...
     binder.bind(UserDao.class, UserDaoImpl.class);
     ...
   }


No idea, still investigating. I tried to clear tomcat cache, check the
libraries... maybe something missing somewhere.

T5.0.6 for core/annotation and ioc and T5.0.5 for tapestry-hibernate, maybe
it is that the problem.
-- 
Michael Bernagou
Java Developper

Re: T5 tapestry-hibernate error?

Posted by Michael Bernagou <bl...@gmail.com>.
Ok, the problem is the lib version.

So, synchronized all the libraries versions :D

2007/12/18, Michael Bernagou <bl...@gmail.com>:
>
> Something wired when tapestry try to get the HibernateSession :
>
> Error invoking service builder method
> org.apache.tapestry.hibernate.HibernateModule.build(HibernateSessionSource,
> ThreadCleanupHub) (at HibernateModule.java:62) (for service
> 'HibernateSessionManager'): Exception constructing service
> 'HibernateSessionSource': Error invoking constructor
> org.apache.tapestry.internal.hibernate.HibernateSessionSourceImpl(Log,
> Collection, ClassNameLocator) (at HibernateSessionSourceImpl.java:35) (for
> service 'HibernateSessionSource'): No service implements the interface
> org.apache.commons.logging.Log.
>
> java.lang.RuntimeException No service implements the interface
> org.apache.commons.logging.Log.
> Stack trace
>
>    - org.apache.tapestry.ioc.internal.RegistryImpl.getService(
>    RegistryImpl.java:553)
>    -
>    org.apache.tapestry.ioc.internal.services.MasterObjectProviderImpl.provide
>    (MasterObjectProviderImpl.java :46)
>    - org.apache.tapestry.ioc.internal.RegistryImpl.getObject(
>    RegistryImpl.java:665)
>    - org.apache.tapestry.ioc.internal.RegistryImpl.getObject(
>    RegistryImpl.java:722)
>    - org.apache.tapestry.ioc.internal.ObjectLocatorImpl.getObject (
>    ObjectLocatorImpl.java:50)
>    -
>    org.apache.tapestry.ioc.internal.util.InternalUtils.calculateParameterValue
>    (InternalUtils.java:217)
>    -
>    org.apache.tapestry.ioc.internal.util.InternalUtils.calculateParameters
>    (InternalUtils.java :248)
>    -
>    org.apache.tapestry.ioc.internal.util.InternalUtils.calculateParametersForConstructor
>    (InternalUtils.java:235)
>    -
>    org.apache.tapestry.ioc.internal.ConstructorServiceCreator.createObject
>    (ConstructorServiceCreator.java :46)
>    -
>    org.apache.tapestry.ioc.internal.SingletonServiceLifecycle.createService
>    (SingletonServiceLifecycle.java:31)
>    -
>    org.apache.tapestry.ioc.internal.LifecycleWrappedServiceCreator.createObject
>    (LifecycleWrappedServiceCreator.java :54)
>    -
>    org.apache.tapestry.ioc.internal.InterceptorStackBuilder.createObject
>    (InterceptorStackBuilder.java:54)
>    -
>    org.apache.tapestry.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject
>    (RecursiveServiceCreationCheckWrapper.java :61)
>    -
>    org.apache.tapestry.ioc.internal.services.JustInTimeObjectCreator.createObject
>    (JustInTimeObjectCreator.java:67)
>    - org.apache.tapestry.internal.hibernate.HibernateSessionManagerImpl
>    .<init>(HibernateSessionManagerImpl.java :31)
>    - org.apache.tapestry.hibernate.HibernateModule.build(
>    HibernateModule.java:62)
>    - sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>    - sun.reflect.NativeMethodAccessorImpl.invoke(
>    NativeMethodAccessorImpl.java :39)
>    - sun.reflect.DelegatingMethodAccessorImpl.invoke(
>    DelegatingMethodAccessorImpl.java:25)
>    - java.lang.reflect.Method.invoke(Method.java:585)
>    -
>    org.apache.tapestry.ioc.internal.ServiceBuilderMethodInvoker.createObject(
>    ServiceBuilderMethodInvoker.java:76)
>    -
>    org.apache.tapestry.ioc.internal.services.PerThreadServiceCreator.initialValue
>    (PerThreadServiceCreator.java:50)
>    - java.lang.ThreadLocal$ThreadLocalMap.getAfterMiss(ThreadLocal.java:374)
>    - java.lang.ThreadLocal$ThreadLocalMap.get(ThreadLocal.java:347)
>    - java.lang.ThreadLocal$ThreadLocalMap.access$000(ThreadLocal.java
>    :225)
>    - java.lang.ThreadLocal.get(ThreadLocal.java:127)
>    -
>    org.apache.tapestry.ioc.internal.services.PerThreadServiceCreator.createObject(
>    PerThreadServiceCreator.java:56)
>    - papo.dao.impl.UserDaoImpl.getUser(UserDaoImpl.java:35)
>
> The origin of the problem is when trying to getSession() :
>
> public class UserDaoImpl implements UserDao {
>     private static Log log = LogFactory.getLog(UserDaoImpl.class);
>
>     private Session session;
>     public Session getSession() { return session; }
>     public void setSession(Session session) { this.session = session; }
>
>     public UserDaoImpl(Session session) {
>         setSession(session);
>     }
>
>     /**
>      * Récupére un User pour un login et password donné
>      *
>      * @param login
>      * @param password
>      * @return Operateur
>      */
>     public User getUser(String login, String password) {
>         log.debug("Recherche du User login : " + login);
>         try {
>             Query q = getSession().createQuery("from User u where u.login= :login and
> u.password = :pwd");
> ...
> }
>
> Tapestry-ioc is responsible to get the constructor call :
>
>    public static void bind(ServiceBinder binder) {
>      ...
>      binder.bind(UserDao.class, UserDaoImpl.class);
>      ...
>    }
>
>
> No idea, still investigating. I tried to clear tomcat cache, check the
> libraries... maybe something missing somewhere.
>
> T5.0.6 for core/annotation and ioc and T5.0.5 for tapestry-hibernate,
> maybe it is that the problem.
> --
> Michael Bernagou
> Java Developper




-- 
Michael Bernagou
Java Developper