1 Reply Latest reply on Jun 1, 2007 4:59 AM by cpage cpage

    org.hibernate.HibernateException: Unable to locate current J

    PAOLETTI Mickaël Newbie

      Hi. I will want to get a list of all object in my portal. I use the "PortalObjectContainer" service. So I have add this service in my "jboss-portlet.xml" :

      <service>
       <service-name>PortalObjectContainer</service-name>
       <service-class> org.jboss.portal.core.model.portal.PortalObjectContainer
       </service-class>
       <service-ref>:container=PortalObject</service-ref>
      </service>
      


      And after, I have create this class :

      @Name("portletInfo")
      @Scope(ScopeType.SESSION)
      public class PortletInfo {
      
       PortletContext portletContext;
      
       @Create
       public void initPortletInfo() {
       Object requete = FacesContext.getCurrentInstance().getExternalContext().getRequest();
       if (requete instanceof RenderRequest) {
       this.portletContext = (PortletContext) ((RenderRequest) requete).getAttribute("javax.portlet.PortletContext");
      
       }
       }
      
       /**
       * Retourne la valeur de portletContext.
       *
       * @return valeur de portletContext.
       */
       public PortletContext getPortletContext() {
       return this.portletContext;
       }
      
       /**
       * Définit la valeur de portletContext.
       *
       * @param portletContext valeur de portletContext à définir.
       */
       public void setPortletContext(PortletContext portletContext) {
       this.portletContext = portletContext;
       }
      


      I use this class to get my service :
      @Name("dashboardManager")
      public class DashboardManager {
      
       List<SelectItem> lstPortalObject;
      
      
       @In(create = true)
       PortletInfo portletInfo;
      
       @Create
       public void initialize() {
       initLstPortalObject();
       }
      
       public void initLstPortalObject() {
       // chargement de la liste des PortalObject
       this.lstPortalObject = new ArrayList<SelectItem>();
       PortalObjectContainer objectContainer = (PortalObjectContainer) this.portletInfo.getPortletContext().getAttribute("PortalObjectContainer");
       Collection<PortalObject> colPort = objectContainer.getRootObject().getChildren();
       for (PortalObject object : colPort) {
       this.lstPortalObject.add(new SelectItem(object, object.getName()));
       }
      
       }
      
       /**
       * Retourne la valeur de lstPortalObject.
       *
       * @return valeur de lstPortalObject.
       */
      
       public List<SelectItem> getLstPortalObject() {
       return this.lstPortalObject;
       }
      
       /**
       * Définit la valeur de lstPortalObject.
       *
       * @param lstPortalObject valeur de lstPortalObject à définir.
       */
       public void setLstPortalObject(List<SelectItem> lstPortalObject) {
       this.lstPortalObject = lstPortalObject;
       }
      }
      


      And in my "*.xhtml", I put the lstPortelObject in a "selectManyListbox". When I deploy my portal, there is no error, but when I execute it, there is this error :
      09:55:53,536 ERROR [D2DFaceletViewHandler] Problem in renderResponse: Unable to locate current JTA transaction
      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:541)
       at org.jboss.portal.core.impl.model.portal.PersistentPortalObjectContainer.getObjectNode(PersistentPortalObjectContainer.java:246)
       at org.jboss.portal.core.impl.model.portal.AbstractPortalObjectContainer.getObject(AbstractPortalObjectContainer.java:141)
       at org.jboss.portal.core.impl.model.portal.AbstractPortalObjectContainer.getRootObject(AbstractPortalObjectContainer.java:92)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
       at java.lang.reflect.Method.invoke(Unknown Source)
       at org.jboss.mx.interceptor.AttributeDispatcher.invoke(AttributeDispatcher.java:99)
       at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
       at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
       at org.jboss.mx.interceptor.ModelMBeanAttributeInterceptor.invoke(ModelMBeanAttributeInterceptor.java:197)
       at org.jboss.mx.interceptor.PersistenceInterceptor.invoke(PersistenceInterceptor.java:76)
      ...
      ...
      


      Can you help me please.
      Best regards.