We are using Tridion 2013 SP1 HR1 with Websphere 8.5. Recently we started getting this kind of exception when querying the broker:
org.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.service.jdbc.connections.spi.ConnectionProvider] at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:126) at org.hibernate.internal.AbstractSessionImpl.getJdbcConnectionAccess(AbstractSessionImpl.java:254) at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.(JdbcCoordinatorImpl.java:75) at org.hibernate.engine.transaction.internal.TransactionCoordinatorImpl.(TransactionCoordinatorImpl.java:87) at org.hibernate.internal.SessionImpl.(SessionImpl.java:227) at org.hibernate.internal.SessionFactoryImpl$SessionBuilderImpl.openSession(SessionFactoryImpl.java:1636) at org.hibernate.ejb.EntityManagerImpl.getRawSession(EntityManagerImpl.java:120) at org.hibernate.ejb.EntityManagerImpl.getSession(EntityManagerImpl.java:97) at org.hibernate.ejb.AbstractEntityManagerImpl.setDefaultProperties(AbstractEntityManagerImpl.java:267) at org.hibernate.ejb.AbstractEntityManagerImpl.postInit(AbstractEntityManagerImpl.java:179) at org.hibernate.ejb.EntityManagerImpl.(EntityManagerImpl.java:89) at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:125) at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:120) at sun.reflect.GeneratedMethodAccessor68.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56) at java.lang.reflect.Method.invoke(Method.java:620) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.invokeProxyMethod(AbstractEntityManagerFactoryBean.java:376) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean$ManagedEntityManagerFactoryInvocationHandler.invoke(AbstractEntityManagerFactoryBean.java:517) at com.sun.proxy.$Proxy56.createEntityManager(Unknown Source) at com.tridion.storage.persistence.JPABaseDAO.getEntityManager(JPABaseDAO.java:53) at com.tridion.storage.persistence.JPABaseDAO.executeQueryListResult(JPABaseDAO.java:264) at com.tridion.storage.persistence.JPABaseDAO.executeQueryListResult(JPABaseDAO.java:249) at com.tridion.storage.persistence.JPABaseDAO.executeQueryListResult(JPABaseDAO.java:220) at com.tridion.storage.persistence.JPABaseDAO.executeQuerySingleResult(JPABaseDAO.java:199) at com.tridion.storage.persistence.JPAItemDAO.findByPrimaryKey(JPAItemDAO.java:218) at com.tridion.storage.caching.CachedItemDAO.findByPrimaryKey(CachedItemDAO.java:67) at com.tridion.storage.caching.CachedItemDAO.findByPrimaryKey(CachedItemDAO.java:83) at com.tridion.meta.ComponentMetaFactory.getMeta(ComponentMetaFactory.java:105) at com.deltalloyd.dlva.dao.impl.NewsDAOImpl.getSortedComponentMetasList(NewsDAOImpl.java:190) at com.deltalloyd.dlva.dao.impl.NewsDAOImpl.findLast(NewsDAOImpl.java:120) at com.deltalloyd.dlva.tridion.taglib.NewsCollection.doTag(NewsCollection.java:54) at com.ibm._jsp._index._jspx_meth_bus_newscollection_0(_index.java:1477) at com.ibm._jsp._index.access$0(_index.java:1465) at com.ibm._jsp._index$_indexHelper.invoke0(_index.java:3264) at com.ibm._jsp._index$_indexHelper.invoke(_index.java:3313) at com.deltalloyd.dlva.tridion.taglib.CacheTag.doTag(CacheTag.java:38) at com.ibm._jsp._index._jspx_meth_bus_cache_0(_index.java:1897) at com.ibm._jsp._index._jspService(_index.java:398) at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:99) at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1230) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:779) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478) at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178) at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:122) at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:220) at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136) at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:97) at com.deltalloyd.dlva.filters.NewsArticleFilter.doFilter(NewsArticleFilter.java:55) at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195) at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91) at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:967) at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1107) at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3923) at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304) at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1006) at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662) at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:463) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:530) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:316) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:287) at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214) at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113) at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175) at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) at com.ibm.io.async.AsyncChannelFuture$1.run(AsyncChannelFuture.java:205) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1881)
I think the relevant part of this message is the following:
org.springframework.orm.jpa.AbstractEntityManagerFactoryBean$ManagedEntityManagerFactoryInvocationHandler.invoke(AbstractEntityManagerFactoryBean.java:517) at com.sun.proxy.$Proxy56.createEntityManager(Unknown Source) at com.tridion.storage.persistence.JPABaseDAO.getEntityManager(JPABaseDAO.java:53) at
It seems that the Tridion JPABaseDAO relies on Spring to get an "entity manager", but that something goes wrong in the EntityManagerFactory. Presumably there is a configuration setting somewhere that controls this behaviour.
Restarting the web application makes the problem disappear for a while, but not permanently.
What can cause this problem? What is the best strategy for solving it?