- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试通过制作项目来学习 JSP 和 servlet。我的目标不是关注 JPA、ORM 和持久性甚至现在是 EJB。所以,请不要告诉我阅读有关它的教程或书籍。不幸的是,我不应该使用 SQL 查询与数据库交互。相反,我使用预先编写的 JPA 代码来管理持久性而我专注于 jsp 和 servlet。
当我运行我的项目时,出现错误 - java.lang.IllegalStateException: Unable to retrieve EntityManagerFactory for unitName AffableBeanPU。
我的项目位于- https://github.com/double-whammy/affablebean.git下载为 zip 按钮位于右下角。
注意 - 我的 persistence.xml 文件位于 META-INF 文件夹中。我再次检查并构建了我的项目。所以可以排除这个原因。
我用谷歌搜索,但没有任何解决方案有帮助。我该如何解决这个错误?
MyProject
|
|__java (src folder)
| |
| |__controller (package)
| | |__ControllerServlet.java
| |
| |__entity (entity classes here)
| |__session (facade classes for each entity class)
|
|
|__WebContent
|
|__WEB-INF
|
|__view
| |__category.jsp
| |
| |etc...
|
|__index.jsp
异常(exception):
Time|Info: Redirecting to /index.jsf
Time|Info: Admin Console: Initializing Session Attributes...
Time|Warning: EJB5184:A system exception occurred during an invocation on EJB CategoryFacade,
method: public java.util.List session.AbstractFacade.findAll()
Time|Warning: javax.ejb.EJBException
at com.sun.ejb.containers.EJBContainerTransactionManager.processSystemException(EJBContainerTransactionManager.java:748)
at com.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:698)
at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:503)
at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4475)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2009)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1979)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:220)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
at com.sun.proxy.$Proxy193.findAll(Unknown Source)
at session.__EJB31_Generated__CategoryFacade__Intf____Bean__.findAll(Unknown Source)
at controller.ControllerServlet.init(ControllerServlet.java:31)
at javax.servlet.GenericServlet.init(GenericServlet.java:244)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1583)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:1212)
etc ................................................... etc...
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalStateException: Unable to retrieve EntityManagerFactory for unitName AffableBeanPU
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.init(EntityManagerWrapper.java:138)
at com.sun.enterprise.container.common.impl.EntityManagerWrapper._getDelegate(EntityManagerWrapper.java:171)
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.getCriteriaBuilder(EntityManagerWrapper.java:834)
at session.AbstractFacade.findAll(AbstractFacade.java:41)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
etc ................................................... etc...
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:212)
... 33 more
Time|Severe: WebModule[/AffableBean]StandardWrapper.Throwable
javax.ejb.EJBException
at com.sun.ejb.containers.EJBContainerTransactionManager.processSystemException(EJBContainerTransactionManager.java:748)
at com.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:698)
at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:503)
etc ................................................... etc...
at session.__EJB31_Generated__CategoryFacade__Intf____Bean__.findAll(Unknown Source)
at controller.ControllerServlet.init(ControllerServlet.java:31)
at javax.servlet.GenericServlet.init(GenericServlet.java:244)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1583)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:1212)
etc ................................................... etc...
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalStateException: Unable to retrieve EntityManagerFactory for unitName AffableBeanPU
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.init(EntityManagerWrapper.java:138)
at com.sun.enterprise.container.common.impl.EntityManagerWrapper._getDelegate(EntityManagerWrapper.java:171)
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.getCriteriaBuilder(EntityManagerWrapper.java:834)
at session.AbstractFacade.findAll(AbstractFacade.java:41)
etc ................................................... etc...
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:212)
... 33 more
Time|Warning: StandardWrapperValve[ControllerServlet]: Allocate exception for servlet ControllerServlet
java.lang.IllegalStateException: Unable to retrieve EntityManagerFactory for unitName AffableBeanPU
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.init(EntityManagerWrapper.java:138)
at com.sun.enterprise.container.common.impl.EntityManagerWrapper._getDelegate(EntityManagerWrapper.java:171)
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.getCriteriaBuilder(EntityManagerWrapper.java:834)
at session.AbstractFacade.findAll(AbstractFacade.java:41)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
etc ................................................... etc...
持久性.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="AffableBeanPU"
transaction-type="JTA">
<jta-data-source>jdbc/affablebean</jta-data-source>
<properties>
<property name="eclipselink.logging.level" value="FINEST" />
</properties>
</persistence-unit>
</persistence>
最佳答案
/META-INF/persistence.xml
必须在运行时类路径中结束,而不是在网络资源中。因此,您需要将它放在 Java 源文件夹中,而不是 Web 内容文件夹中。 persistence.xml
与 Web 资源无关,但与 Java bean 相关。
向上移动:
MyProject
|-- java (src folder)
| |-- controller
| | `--ControllerServlet.java
| |-- entity
| |-- session
| `-- META-INF
| `-- persistence.xml <-- Here.
`--WebContent
`-- WEB-INF
|-- view
| |-- category.jsp
| `-- etc..
`-- index.jsp
这样,构建将在 /WEB-INF/classes
中使用 /META-INF/persistence.xml
生成正确的 WAR 结构。您似乎正在使用 Eclipse,您也可以通过在项目属性中选择 JPA facet 来实现。
这样 Eclipse 将在正确的位置生成一个 persistence.xml
。
关于java - 无法修复 java.lang.IllegalStateException : Unable to retrieve EntityManagerFactory for unitName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24892866/
我有一个看起来像这样的通用 DAO 类: public class GenericDaoJpa implements GenericDao { private final Class typ
当我尝试到达特定端点时,出现异常,提示“无法检索 unitNameparent_module 的 EntityManagerFactory” 但是,由于我在模块上构建了项目,因此出现此错误。当我将所有
这是我第一次尝试实体 bean,我反复收到以下错误: java.lang.IllegalStateException: Unable to retrieve EntityManagerFactory
我正在做一个项目,到目前为止进展顺利,直到我检查了另一个团队的最新更改,以处理最新的文件(不要专注于那个文件)。我正在使用 Tomcat OpenEJB 3.1、JPA 和 Hibernate 3.2
在我的 Eclipse 动态 Web 项目中,我使用 JPA。我已经在 TomEE 服务器下的 tomee.xml 中创建了连接,并且工作正常。我创建了一个 persistence.xml 文件,如下
这是来自堆栈跟踪的(底部)错误: Caused by: java.lang.IllegalStateException: Unable to retrieve EntityManagerFactory
我是 JavaEE 新手,目前正在学习 JavaEE7。我安装了 JavaEE7 并下载了 NetBeans 8.0.2,因此我可以通过此处发布的网络研讨会来关注: https://www.youtu
我需要执行新工作的测试任务,但我似乎处于昏迷状态。我在持久性上下文方面有一些问题。我使用 Glassfish 3 和本教程:http://uaihebert.com/?p=834 jdbc/CrudD
我在这里和网上看到了一些关于此的问题,但它们似乎与我收到的错误消息不太相符。 我一直在我的代码中使用 JPA 注释来处理数据库。我使用@PersistenceContext 注释来配置实体管理器。在我
我正在尝试通过制作项目来学习 JSP 和 servlet。我的目标不是关注 JPA、ORM 和持久性甚至现在是 EJB。所以,请不要告诉我阅读有关它的教程或书籍。不幸的是,我不应该使用 SQL 查询与
我希望有人能帮助我解决一个非常令人沮丧的问题。 我想使用 Arquillian 来测试我正在开发的 Web 应用程序,但我很难尝试让 JPA 测试运行。我是 Arquillian 的新手,我必须承认我
在 Delphi 中,创建 ActiveX 控件曾经比现在更流行。然而,仍然可以使用 Delphi 创建 ActiveX 控件。本题假设Delphi 2007,但无论您使用什么Delphi版本,它都应
我是一名优秀的程序员,十分优秀!