spring - UnknownServiceException: ConnectionProvider in Hibernate 4 -


i've upgraded spring web application hibernate 3.6 4.2, , done necessary changes far can see. application seems run fine, tests use hibernate via spring's application context test support, , these fail sporadically error:

caused by: org.hibernate.service.unknownserviceexception: unknown service requested [org.hibernate.service.jdbc.connections.spi.connectionprovider] @ org.hibernate.service.internal.abstractserviceregistryimpl.getservice(abstractserviceregistryimpl.java:126) @ org.hibernate.internal.abstractsessionimpl.getjdbcconnectionaccess(abstractsessionimpl.java:261) @ org.hibernate.engine.jdbc.internal.jdbccoordinatorimpl.<init>(jdbccoordinatorimpl.java:97) @ org.hibernate.engine.transaction.internal.transactioncoordinatorimpl.<init>(transactioncoordinatorimpl.java:87) @ org.hibernate.internal.sessionimpl.<init>(sessionimpl.java:253) @ org.hibernate.internal.sessionfactoryimpl$sessionbuilderimpl.opensession(sessionfactoryimpl.java:1599) @ org.hibernate.internal.sessionfactoryimpl.opensession(sessionfactoryimpl.java:965) @ org.springframework.orm.hibernate4.hibernatetransactionmanager.dobegin(hibernatetransactionmanager.java:412) 

they seem run more reliably when run in default filesystem order, running them in random order @ moment reproduce more easily. once error happens once, similar tests after seem fail too. tests set @dirtiescontext annotation spring test runner ought recreating new applicationcontext (and sessionfactory , hsqldb mem db) each class. there shouldn't leaking 1 test class next.

any ideas? not having connectionprovider sounds hibernate either still starting up, or in middle of shutting down.

you should create session factory object once in application , should not destroy in whole application. if trying close once created session factory object , want use same object above exception ie. error creating session: org.hibernate.service.unknownserviceexception: unknown service requested [org.hibernate.engine.jdbc.connections.spi.connectionprovider] in above scenario should create hibernate util , define fields below:

import org.hibernate.hibernateexception; import org.hibernate.sessionfactory; import org.hibernate.boot.registry.standardserviceregistry; import org.hibernate.boot.registry.standardserviceregistrybuilder; import org.hibernate.cfg.configuration; public class hibernateutil {  private static configuration configuration; private static standardserviceregistry builder; private static sessionfactory factory;  static { try { configuration = new configuration().configure("/com/hibernate/hibernate.cfg.xml"); builder = new standardserviceregistrybuilder().applysettings(configuration.getproperties()).build(); factory = configuration.buildsessionfactory(builder); } catch (hibernateexception he) { system.err.println("error creating session: " + he); throw new exceptionininitializererror(he); } }  public static sessionfactory getsessionfactory() { return factory; }  public static void closesessionfactory() { if (factory != null) { try { standardserviceregistrybuilder.destroy(builder); } catch (exception e) { e.printstacktrace(); } } } } 

Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -