java - sessionFactory - Spring hibernate integration problem -
i'm new in spring framework (2.5.6) , have hibernate integration problem on glassfish server (open source edition 3). add when use tomcat server (v 7.0) ok.
i have following code (springwebglassfishhibernate-data.xml
):
<?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean"> <property name="persistenceunitname" value="carrentalpersistenceunit" /> </bean> <bean id="sessionfactory" class="org.springframework.orm.hibernate3.annotation.annotationsessionfactorybean" factory-bean="entitymanagerfactory" factory-method="getsessionfactory"> </bean> <bean id="transactionmanager" class="org.springframework.orm.hibernate3.hibernatetransactionmanager"> <property name="sessionfactory" ref="sessionfactory" /> </bean>
but when run server following error:
severe: exception while loading app java.lang.exception: java.lang.illegalstateexception: containerbase.addchild: start: org.apache.catalina.lifecycleexception: org.springframework.beans.factory.beancreationexception: error creating bean name 'sessionfactory' defined in servletcontext resource [/web-inf/configuration_xmls/springwebglassfishhibernate-data.xml]: no matching factory method found: factory bean 'entitymanagerfactory'; factory method 'getsessionfactory' @ com.sun.enterprise.web.webapplication.start(webapplication.java:117) @ org.glassfish.internal.data.engineref.start(engineref.java:126) @ org.glassfish.internal.data.moduleinfo.start(moduleinfo.java:241) @ org.glassfish.internal.data.applicationinfo.start(applicationinfo.java:236) @ com.sun.enterprise.v3.server.applicationlifecycle.deploy(applicationlifecycle.java:339) @ com.sun.enterprise.v3.server.applicationlifecycle.deploy(applicationlifecycle.java:183) @ org.glassfish.deployment.admin.deploycommand.execute(deploycommand.java:272) @ com.sun.enterprise.v3.admin.commandrunnerimpl$1.execute(commandrunnerimpl.java:305) @ com.sun.enterprise.v3.admin.commandrunnerimpl.docommand(commandrunnerimpl.java:320) @ com.sun.enterprise.v3.admin.commandrunnerimpl.docommand(commandrunnerimpl.java:1176) @ com.sun.enterprise.v3.admin.commandrunnerimpl.access$900(commandrunnerimpl.java:83) @ com.sun.enterprise.v3.admin.commandrunnerimpl$executioncontext.execute(commandrunnerimpl.java:1235) @ com.sun.enterprise.v3.admin.commandrunnerimpl$executioncontext.execute(commandrunnerimpl.java:1224) @ com.sun.enterprise.v3.admin.adminadapter.docommand(adminadapter.java:365) @ com.sun.enterprise.v3.admin.adminadapter.service(adminadapter.java:204) @ com.sun.grizzly.tcp.http11.grizzlyadapter.service(grizzlyadapter.java:166) @ com.sun.enterprise.v3.server.hk2dispatcher.dispath(hk2dispatcher.java:100) @ com.sun.enterprise.v3.services.impl.containermapper.service(containermapper.java:245) @ com.sun.grizzly.http.processortask.invokeadapter(processortask.java:791) @ com.sun.grizzly.http.processortask.doprocess(processortask.java:693) @ com.sun.grizzly.http.processortask.process(processortask.java:954) @ com.sun.grizzly.http.defaultprotocolfilter.execute(defaultprotocolfilter.java:170) @ com.sun.grizzly.defaultprotocolchain.executeprotocolfilter(defaultprotocolchain.java:135) @ com.sun.grizzly.defaultprotocolchain.execute(defaultprotocolchain.java:102) @ com.sun.grizzly.defaultprotocolchain.execute(defaultprotocolchain.java:88) @ com.sun.grizzly.http.httpprotocolchain.execute(httpprotocolchain.java:76) @ com.sun.grizzly.protocolchaincontexttask.docall(protocolchaincontexttask.java:53) @ com.sun.grizzly.selectionkeycontexttask.call(selectionkeycontexttask.java:57) @ com.sun.grizzly.contexttask.run(contexttask.java:69) @ com.sun.grizzly.util.abstractthreadpool$worker.dowork(abstractthreadpool.java:330) @ com.sun.grizzly.util.abstractthreadpool$worker.run(abstractthreadpool.java:309) @ java.lang.thread.run(thread.java:662)
maybe, paste part of pom.xml file showing dependencies:
<dependencies> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring</artifactid> <version>2.5.6</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-webmvc</artifactid> <version>2.5.6</version> </dependency> <dependency> <groupid>commons-validator</groupid> <artifactid>commons-validator</artifactid> <version>1.3.1</version> <scope>compile</scope> </dependency> <dependency> <groupid>commons-digester</groupid> <artifactid>commons-digester</artifactid> <version>2.1</version> </dependency> <dependency> <groupid>com.h2database</groupid> <artifactid>h2</artifactid> <version>1.3.146</version> </dependency> <dependency> <groupid>commons-dbcp</groupid> <artifactid>commons-dbcp</artifactid> <version>1.4</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-hibernate2</artifactid> <version>2.0.8</version> </dependency> <dependency> <groupid>org.hibernate</groupid> <artifactid>hibernate-core</artifactid> <version>3.3.2.ga</version> </dependency> <dependency> <groupid>org.hibernate</groupid> <artifactid>hibernate-annotations</artifactid> <version>3.4.0.ga</version> </dependency> <dependency> <groupid>oro</groupid> <artifactid>oro</artifactid> <version>2.0.8</version> </dependency> <dependency> <groupid>javax</groupid> <artifactid>javaee-api</artifactid> <version>6.0</version> </dependency> <dependency> <groupid>javax.servlet</groupid> <artifactid>jstl</artifactid> <version>1.2</version> </dependency> <dependency> <groupid>org.slf4j</groupid> <artifactid>slf4j-log4j12</artifactid> <version>1.5.2</version> </dependency> <dependency> <groupid>org.apache.xmlgraphics</groupid> <artifactid>fop</artifactid> <version>1.0</version> </dependency> <dependency> <groupid>xalan</groupid> <artifactid>xalan</artifactid> <version>2.7.1</version> </dependency> <dependency> <groupid>struts</groupid> <artifactid>struts</artifactid> <version>1.2.9</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-struts</artifactid> <version>2.0.8</version> </dependency> <dependency> <groupid>javax.portlet</groupid> <artifactid>portlet-api</artifactid> <version>2.0</version> </dependency> <dependency> <groupid>org.apache.tiles</groupid> <artifactid>tiles-api</artifactid> <version>2.2.2</version> </dependency> <dependency> <groupid>org.apache.tiles</groupid> <artifactid>tiles-jsp</artifactid> <version>2.2.2</version> </dependency> <dependency> <groupid>org.apache.tiles</groupid> <artifactid>tiles-compat</artifactid> <version>2.2.2</version> </dependency> <dependency> <groupid>org.apache.tiles</groupid> <artifactid>tiles-core</artifactid> <version>2.2.2</version> </dependency> <dependency> <groupid>org.apache.tiles</groupid> <artifactid>tiles-servlet-wildcard</artifactid> <version>2.2.2</version> </dependency> <dependency> <groupid>org.apache.tiles</groupid> <artifactid>tiles-el</artifactid> <version>2.2.2</version> </dependency> <dependency> <groupid>javax.faces</groupid> <artifactid>jsf-api</artifactid> <version>1.2</version> </dependency> <dependency> <groupid>javax.faces</groupid> <artifactid>jsf-impl</artifactid> <version>1.2-b19</version> </dependency> <dependency> <groupid>javassist</groupid> <artifactid>javassist</artifactid> <version>3.1</version> </dependency> <dependency> <groupid>taglibs</groupid> <artifactid>standard</artifactid> <version>1.1.2</version> </dependency> <dependency> <groupid>javax.persistence</groupid> <artifactid>persistence-api</artifactid> <version>1.0</version> </dependency> <dependency> <groupid>org.hibernate</groupid> <artifactid>hibernate-entitymanager</artifactid> <version>3.4.0.ga</version> </dependency> <dependency> <groupid>org.hibernate</groupid> <artifactid>ejb3-persistence</artifactid> <version>3.3.2.beta1</version> </dependency> <dependency> <groupid>dom4j</groupid> <artifactid>dom4j</artifactid> <version>1.6.1</version> </dependency> <dependency> <groupid>org.hibernate</groupid> <artifactid>hibernate-c3p0</artifactid> <version>3.3.2.ga</version> </dependency> <dependency> <groupid>org.apache.maven</groupid> <artifactid>maven-script-ant</artifactid> <version>2.2.1</version> </dependency> </dependencies>
what best solution problem?
i prefer not getting hibernate session factory this. jpa defines called vendor adapters, can use instead. here's snippet current working configuration:
<bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localcontainerentitymanagerfactorybean"> <property name="persistenceunitname" value="puname" /> <property name="datasource" ref="datasource" /> <property name="jpavendoradapter"> <bean class="org.springframework.orm.jpa.vendor.hibernatejpavendoradapter"> <property name="showsql" value="${hibernate.showsql}" /> <property name="databaseplatform" value="${hibernate.dialect}" /> <property name="generateddl" value="${hibernate.generateddl}" /> </bean> </property> </bean>
(the ${..}
properties resolved propertyplaceholderconfigurer
. can put them directly there)
then of course should use jpa transaction manager:
<bean id="jpatransactionmanager" class="org.springframework.orm.jpa.jpatransactionmanager"> <property name="entitymanagerfactory" ref="entitymanagerfactory" /> </bean>
and use @persistencecontext private entitymanager entitymanager;
rather hibernate session.
Comments
Post a Comment