3 Replies Latest reply on Mar 4, 2006 3:27 AM by al_kiev

    Error accesing Hibernate current session and UserModule

    Jose Noheda Newbie

      I need to access the UserModule and RoleModule. I have no problem getting them from a portlet using:


      UserModule userModule = (UserModule) context.getAttribute("UserModule");

      Now I have to get a reference from a spring bean to handle some initialization code(same WAR as the portlets). I tried:
      userModule = (UserModule) new InitialContext().lookup(ModuleConstants.USERMODULE_JNDINAME);

      It works (well, it gets a reference) but whenever I try to use any function I get:
      2006-02-14 18:26:25,809 ERROR [org.jboss.portal.core.impl.role.RoleModuleImpl] Cannot count roles
      org.hibernate.HibernateException: Unable to locate current JTA transaction
       at org.hibernate.context.JTASessionContext.currentSession(JTASessionContext.java:61)
       at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:604)
       at org.jboss.portal.core.impl.role.RoleModuleImpl.getCurrentSession(RoleModuleImpl.java:382)
       at org.jboss.portal.core.impl.role.RoleModuleImpl.getRolesCount(RoleModuleImpl.java:293)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at ........

      I'm using JBOSS Portal 2.4Alpha (latest version from CVS). Everything in the jmx-console looks fine. Any ideas?

        • 1. Re: Error accesing Hibernate current session and UserModule
          Toison Guillaume Newbie

          I'm not accessing UserModule but I got the same exception in a portlet when I tried to use my own SessionFactory, so my solution might apply to your case. Try to edit jboss-portlet.xml to add a "transaction" element :


          • 2. Re: Error accesing Hibernate current session and UserModule
            Jose Noheda Newbie

            That works great with portlets. As a matter of fact, I was using it already.

            However my problem arises when accesing the portal context from a Spring bean (not referenced by a portlet) or a servlet.

            • 3. Re: Error accesing Hibernate current session and UserModule
              al_kiev Newbie

              Had the same problem in the code that executed outside of standard TransactionInterceptor....
              the solution is to wrap your calls to transactions using the following technique:

              TransactionManager tm;
              try {
               tm = TransactionManagerProvider.JBOSS_PROVIDER.getTransactionManager();
              } catch (Exception e) {
               throw new RuntimeException(e);
              Transaction oldTx = null;
              try {
               oldTx = Transactions.applyBefore(Transactions.TYPE_REQUIRED, tm);
              .... do something ....
              } catch (TransactionException e) {
               throw new RuntimeException(e);
              } finally {
               try {
               Transactions.applyAfter(Transactions.TYPE_REQUIRED, tm, oldTx);
               } catch (TransactionException e) {
               log.error("", e);