gpt4 book ai didi

java - 我得到一个 PersistenceException,我不明白为什么

转载 作者:搜寻专家 更新时间:2023-11-01 03:42:55 27 4
gpt4 key购买 nike

我正在使用 EclipseLink 运行 Web 服务,它运行良好。但有时我会收到一个异常提示“无法预部署 PersistenceUnit”。我不知道为什么我会得到这个。其他一切似乎都正常,异常似乎不会干扰应用程序,它只是被捕获了。

Exception Description: Unable to predeploy PersistenceUnit [MyLibPU] in invalid state [Undeployed]
javax.persistence.PersistenceException: Exception [EclipseLink-28017] (Eclipse Persistence Services - 2.2.0.v20110202-r8913): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Unable to predeploy PersistenceUnit [MyLibPU] in invalid state [Undeployed]
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:956)
at org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:121)
at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
....
....
Caused by: Exception [EclipseLink-28017] (Eclipse Persistence Services - 2.2.0.v20110202-r8913): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Unable to predeploy PersistenceUnit [MyLibPU] in invalid state [Undeployed]
at org.eclipse.persistence.exceptions.EntityManagerSetupException.cannotPredeploy(EntityManagerSetupException.java:202)
... 30 more

在异常中,我可以找到方法中一行的踪迹:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("MyLibPU");

为什么我会收到这个?

编辑
这是当 eclipselink 日志记录设置为 FINEST 时我得到的输出。

[EL Finest]: 2012-04-23 15:19:06.025--ServerSession(2134178364)--Thread(Thread[Finalizer,8,system])--End undeploying Persistence Unit MyLibPU; session file:/home/Rox/MyLib/trunk/MyLib/build/classes/_MyLibPU; state Undeployed; factoryCount 0
[EL Finest]: 2012-04-23 15:19:06.025--ServerSession(2113649746)--Thread(Thread[Finalizer,8,system])--Begin undeploying Persistence Unit MyLibPU; session file:/home/Rox/MyLib/trunk/MyLib/src/_MyLibPU; state Deployed; factoryCount 3
[EL Finest]: 2012-04-23 15:19:06.025--ServerSession(2113649746)--Thread(Thread[Finalizer,8,system])--End undeploying Persistence Unit MyLibPU; session file:/home/Rox/MyLib/trunk/MyLib/src/_MyLibPU; state Deployed; factoryCount 2
Apr 23, 2012 3:19:06 PM com.sun.xml.internal.ws.server.sei.EndpointMethodHandler invoke
SEVERE: Exception [EclipseLink-28017] (Eclipse Persistence Services - 2.2.0.v20110202-r8913): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Unable to predeploy PersistenceUnit [MyLibPU] in invalid state [Undeployed]
javax.persistence.PersistenceException: Exception [EclipseLink-28017] (Eclipse Persistence Services - 2.2.0.v20110202-r8913): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Unable to predeploy PersistenceUnit [MyLibPU] in invalid state [Undeployed]
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:956)
at org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:121)
at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
at com.mylib.MyImplementation.getPersons(MyImplementation.java:171)
at sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.sun.xml.internal.ws.api.server.InstanceResolver$1.invoke(InstanceResolver.java:235)
at com.sun.xml.internal.ws.server.InvokerTube$2.invoke(InvokerTube.java:135)
at com.sun.xml.internal.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:246)
at com.sun.xml.internal.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:85)
at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:626)
at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:585)
at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:570)
at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:467)
at com.sun.xml.internal.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:299)
at com.sun.xml.internal.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:593)
at com.sun.xml.internal.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244)
at com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handleExchange(WSHttpHandler.java:95)
at com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handle(WSHttpHandler.java:80)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:77)
at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:83)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:80)
at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:668)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:77)
at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:640)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: Exception [EclipseLink-28017] (Eclipse Persistence Services - 2.2.0.v20110202-r8913): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Unable to predeploy PersistenceUnit [MyLibPU] in invalid state [Undeployed]
at org.eclipse.persistence.exceptions.EntityManagerSetupException.cannotPredeploy(EntityManagerSetupException.java:202)
... 30 more

[EL Finer]: 2012-04-23 15:20:06.003--Thread(Thread[pool-1-thread-61,5,main])--fixUNC: before fixing: url = file:/home/Rox/MyLib/build/classes/, authority = , file = /home/Rox/MyLib/build/classes/ (There is no English translation for this message.)
[EL Finer]: 2012-04-23 15:20:06.012--Thread(Thread[pool-1-thread-61,5,main])--fixUNC: after fixing: url = file:/home.....

编辑 2
我的 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="MyLibPU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>com.mylib.Person</class>
<class>com.mylib.Group</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/MY_DB"/>
<property name="javax.persistence.jdbc.password" value="MyPassword"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="eclipselink.logging.level" value="FINEST"/>;
<property name="eclipselink.logging.level.sql" value="FINEST"/>;
<property name="eclipselink.logging.parameters" value="true"/>;
</properties>
</persistence-unit>
</persistence>

最佳答案

如果错误是偶发的,这可能意味着这是一个时间问题。此外,显然您在应用程序的生命周期中多次创建工厂(如果我错了请告诉我)。因此,可能是对您的 Web 应用程序的并发请求触发了工厂的并发创建。这种情况可能不受支持。

无论如何只创建一次工厂是好的。参见 this question关于如何去做。然后您可以在其上同时调用 createEntityManager —— 此方法是线程安全的。

关于java - 我得到一个 PersistenceException,我不明白为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10241874/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com