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

Popular posts from this blog

javascript - Enclosure Memory Copies -

php - Replacing tags in braces, even nested tags, with regex -