我正在使用Spring 3.1和Eclipselink 2與Tomcat,但由於某些原因數據不持久.. 儘管表正在生成。Spring Eclipselink持久性問題(無插入)
調度-servlet.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"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="com.myapp.user.controllers" />
<mvc:annotation-driven />
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/"
p:suffix=".jsp" />
</beans>
的applicationContext.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"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<aop:aspectj-autoproxy />
<context:load-time-weaver aspectj-weaving="on"/>
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
<bean id="loadTimeWeaver" class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
<bean id="jpaVendorAdapter"
class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter">
<property name="database" value="MYSQL"/>
<property name="showSql" value="true"/>
<property name="generateDdl" value="false"/>
<property name="databasePlatform" value="org.eclipse.persistence.platform.database.MySQLPlatform"/>
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:persistenceUnitName="myAppPU"
p:persistenceXmlLocation="classpath*:META-INF/persistence.xml"
p:jpaVendorAdapter-ref="jpaVendorAdapter"
p:loadTimeWeaver-ref="loadTimeWeaver"
p:dataSource-ref="dataSource"
/>
<bean id="txManager"
class="org.springframework.orm.jpa.JpaTransactionManager"
p:entityManagerFactory-ref="entityManagerFactory"
p:dataSource-ref="dataSource"
/>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/qpdb?zeroDateTimeBehavior=convertToNull"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</bean>
<tx:annotation-driven transaction-manager="txManager" />
</beans>
的persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="myAppPU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>com.myapp.entities.GenericUser</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/qpdb?zeroDateTimeBehavior=convertToNull"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<!--<property name="eclipselink.weaving" value="static"/>-->
</properties>
</persistence-unit>
</persistence>
WelcomeController.java
package com.myapp.user.controllers;
import com.myapp.entities.GenericUser;
import java.math.BigInteger;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
@Transactional(propagation=Propagation.SUPPORTS)
@Controller
public class WelcomeController {
@PersistenceContext
private EntityManager entityManager;
public WelcomeController() {
}
@RequestMapping({"/"})
public String showPublicPage(Map<String, Object> model) {
GenericUser gu = new GenericUser();
addUser(gu);
return "welcome";
}
@Transactional(propagation= Propagation.REQUIRED,readOnly=false)
public void addUser(GenericUser gu) {
gu.setUserID(BigInteger.ONE);
gu.setEmail("asdfadf");
entityManager.persist(gu);
}
}
GenericUser.java
package com.myapp.entities;
import java.io.Serializable;
import java.math.BigInteger;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
@Entity
@Table(name="generic_user")
public class GenericUser implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "USER_ID")
private BigInteger userID;
@Column(name = "USERNAME")
private String username;
@Column(name = "EMAIL")
private String email;
@Column(name = "PASSWORD")
private String password;
public BigInteger getUserID() {
return userID;
}
public void setUserID(BigInteger id) {
this.userID = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public int hashCode() {
int hash = 0;
hash += (userID != null ? userID.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof GenericUser)) {
return false;
}
GenericUser other = (GenericUser) object;
if ((this.userID == null && other.userID != null) || (this.userID != null && !this.userID.equals(other.userID))) {
return false;
}
return true;
}
@Override
public String toString() {
return "com.myapp.entities.GenericUser[ id=" + userID + " ]";
}
}
我起tomcat與-javaagent:路徑/到/彈簧劑2.5.6.SEC03.jar
Tomcat的登錄
年07月11 ,2013 9:30:36 PM org.apache.catalina.core.ApplicationContext log
信息:銷燬Spring FrameworkServlet'調度程序'
2013年7月11日下午九時30分36秒org.apache.catalina.core.ApplicationContext登錄
信息:關閥彈簧根WebApplicationContext的
2013年7月11日下午9點33分13秒org.apache。 catalina.core.ApplicationContext登錄
信息:在類路徑
檢測到7月11日無春WebApplicationInitializer類型,2013下午9時33分13秒org.apache.catalina.core.ApplicationContext登錄
IN FO:初始化春根WebApplicationContext的
2013年7月11日下午9時33分13秒org.apache.catalina.core.StandardContext listenerStart
嚴重:異常發送上下文初始化事件監聽器類org.springframework的實例。 web.context.ContextLoaderListener
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:來自ServletContext資源的XML文檔中的第52行[/WEB-INF/applicationContext.xml]無效;嵌套異常是org.xml.sax.SAXParseException; lineNumber:52; columnNumber:6;處理指令目標匹配「[xX] [mM] [lL]」是不允許的。
在org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396)
在org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader。的java:302)
在org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)
在org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader。的java:209)
在org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
在org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicati onContext.java:125)
在org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
在org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext。的java:131)
在org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:522)
在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext的.java:436)
在org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385)
在org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284 )
在org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
在org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779)
在org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273)
在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
在有機apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
在org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
在org.apache.catalina。 core.StandardHost.addChild(StandardHost.java:615)
在org.apache.catalina.startup.HostConfig.deployDescriptor在(HostConfig.java:649)
在org.apache.catalina.startup.HostConfig $ DeployDescriptor.run(HostConfig.java:1585)
java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:471)
在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:334)
在java.util中。 concurrent.FutureTask.run(FutureTask。Java的:166)
在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
引起:org.xml.sax.SAXParseException; lineNumber:52; columnNumber:6;處理指令目標匹配「[xX] [mM] [lL]」是不允許的。
在com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
在com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper。 fatalError(ErrorHandlerWrapper.java:177)
在com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:441)
在com.sun.org.apache。 xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
在com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1388)
在com.sun.org.apache.xerces.internal.impl.XMLScanner.scanPIData( XMLScanner.java:675)
在com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanPIData(XMLDocumentFragmentScannerImpl.java:980)
在com.sun.org.apache.xerces。 internal.impl.XMLScanner.scanPI(XMLScanner.java:643)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl $ PrologDriver.next(XMLDocumentS cannerImpl.java:913)
在com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
在com.sun.org.apache.xerces。 internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
在com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489)
在COM。 sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
在com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
在com.sun.org.apache.xerces.internal.parsers.XMLParser.parse (XMLParser.java:123)
在com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:237)
在com.sun.org.apache.xerces .internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:300)
at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(De faultDocumentLoader。Java的:75)
在org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388)
... 27多個
2013年7月11日9:33: 13日下午org.apache.catalina.core.ApplicationContext登錄
信息:關閥彈簧根WebApplicationContext的
2013年7月11日下午9點33分十三秒org.apache.catalina.core.StandardContext listenerStop
嚴重:異常發送上下文破壞事件監聽器類org.springframework.web.context.ContextLoaderListener的實例
java.lang.IllegalStateException:Bean工廠未初始化或已關閉 - 通過訪問豆之前所說的「刷新」的ApplicationContext
在org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:172)
在org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1066)
在org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1040)
在org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:988)
在org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:556)
在org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:142)
在org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4819)
在org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5466)
在有機apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160)
在org.apache.catalina。 core.ContainerBase.addChildInternal(ContainerBase.java:895)
在org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
在org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
在有機apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:649)
在org.apache.catalina.startup.HostConfig $ DeployDescriptor.run(HostConfig.java:1585)
在java.util中。 concurrent.Executors $ RunnableAdapter.call(執行人。Java的:471)
在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:334)
在java.util.concurrent.FutureTask.run(FutureTask.java:166)
在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:603)
在java.lang中.Thread.run(Thread.java:722)
2013年7月11日下午9時33分15秒org.apache.catalina.core.ApplicationContext登錄
信息:在類路徑
檢測到7月11日無春WebApplicationInitializer類型,2013下午9時33分15秒org.apache.catalina.core.ApplicationContext登錄
信息:初始化春根WebApplicationContext的
2013年7月11日下午9時33分18秒org.apache.catalina.core.ApplicationContext登錄
INFO:初始化春FrameworkServlet的 '調度'
2013年7月11日下午9點34分32秒org.apache.catalina.core.ApplicationContext登錄
信息:銷燬春FrameworkServlet的 '調度'
2013年7月11日下午9時34分32秒org.apache.catalina.core.ApplicationContext登錄
信息:關閥彈簧根WebApplicationContext的
2013年7月11日下午9時34分34秒org.apache.catalina。 core.Application語境日誌
信息:在類路徑
2013年7月11日下午九時34分34秒檢測org.apache.catalina.core.ApplicationContext日誌中沒有春天WebApplicationInitializer類型
信息:初始化春根的WebApplicationContext
2013年7月11日下午9時34分37秒org.apache.catalina.core.ApplicationContext登錄
信息:初始化春FrameworkServlet的 '調度'
應用程序成功運行並打開「歡迎」的看法,但數據(GenericUser區)沒有堅持......
你的applicationContext.xml對線路52可能是一個problema行:'
renanlf
修正了..但是現在沒有名稱爲myAppPU的持久化單元可以找到...... persistence.xml進入build/web/WEB-INF/classes/META-INF/build ..之後,我在applicationContext.xml中指定了persistenceXmlLocation ...任何想法? – PrawDG