org.hibernate.HibernateException: Unable to locate current J
eagleit Jun 1, 2007 4:14 AMHi. 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.