无法从无处构建Hibernate SessionFactoryexception
每次我想部署我的应用程序时,都会出现一个奇怪的错误。 我正在使用IntelliJ IDEA 2016.3。
我的应用程序是使用JSF,EJB和JPA(Hibernate)的Java WEB应用程序。 所有的库都是由IDEA下载的(在这个项目中没有Maven),所有依赖项都附带.war文件。 我正在Windows 10上部署到TomEE 7.0.2。
以下是部署中涉及的配置文件:resources.xml
JdbcDriver com.mysql.jdbc.Driver JdbcUrl jdbc:mysql://localhost:3306/my_internet_shop?autoReconnect=true&useSSL=true UserName root Password alpine validationQuery = SELECT 1 JtaManaged true
persistence.xml中
org.hibernate.jpa.HibernatePersistenceProvider my_internet_shop_db Objects.Order.CartEntity Objects.User.ContactEntity Objects.Order.OrderEntity Objects.Product.ProductEntity Objects.Section.SectionEntity Objects.Service.ServiceEntity Objects.User.UserEntity
我的堆栈跟踪:
org.apache.openejb.OpenEJBException: org.apache.openejb.OpenEJBRuntimeException: javax.persistence.PersistenceException: [PersistenceUnit: my_internet_shop] Unable to build Hibernate SessionFactory: javax.persistence.PersistenceException: [PersistenceUnit: my_internet_shop] Unable to build Hibernate SessionFactory at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:872) ... 65 more Caused by: org.apache.openejb.OpenEJBRuntimeException: javax.persistence.PersistenceException: [PersistenceUnit: my_internet_shop] Unable to build Hibernate SessionFactory at org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createDelegate(ReloadableEntityManagerFactory.java:136) at org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.(ReloadableEntityManagerFactory.java:105) at org.apache.openejb.assembler.classic.PersistenceBuilder.createEntityManagerFactory(PersistenceBuilder.java:157) at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:866) ... 65 more Caused by: javax.persistence.PersistenceException: [PersistenceUnit: my_internet_shop] Unable to build Hibernate SessionFactory at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:951) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:881) at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java:151) at org.apache.openejb.assembler.classic.EntityManagerFactoryCallable.call(EntityManagerFactoryCallable.java:122) at org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createDelegate(ReloadableEntityManagerFactory.java:134) ... 68 more Caused by: org.hibernate.HibernateException: Could not access BeanManager ListenerFactory class [org.hibernate.jpa.event.internal.jpa.ListenerFactoryBeanManagerStandardImpl] to handle CDI extensions at org.hibernate.jpa.event.spi.jpa.ListenerFactoryBuilder.buildBeanManagerListenerFactory(ListenerFactoryBuilder.java:96) at org.hibernate.jpa.event.spi.jpa.ListenerFactoryBuilder.buildStandardBeanManagerListenerFactory(ListenerFactoryBuilder.java:59) at org.hibernate.jpa.event.spi.jpa.ListenerFactoryBuilder.buildListenerFactory(ListenerFactoryBuilder.java:42) at org.hibernate.jpa.event.spi.JpaIntegrator.integrate(JpaIntegrator.java:135) at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:278) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:493) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:878) ... 71 more Caused by: java.lang.IllegalStateException: On a thread without an initialized context nor a classloader mapping a deployed app at org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:287) at org.apache.openejb.cdi.ThreadSingletonServiceImpl.getContext(ThreadSingletonServiceImpl.java:263) at org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:298) at org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:60) at org.apache.webbeans.config.WebBeansFinder.getSingletonInstance(WebBeansFinder.java:51) at org.apache.webbeans.config.WebBeansContext.getInstance(WebBeansContext.java:185) at org.apache.webbeans.config.WebBeansContext.currentInstance(WebBeansContext.java:203) at org.apache.openejb.assembler.classic.EntityManagerFactoryCallable$1.findBm(EntityManagerFactoryCallable.java:105) at org.apache.openejb.assembler.classic.EntityManagerFactoryCallable$1.invoke(EntityManagerFactoryCallable.java:96) at com.sun.proxy.$Proxy70.toString(Unknown Source) at java.lang.String.valueOf(String.java:2994) at java.lang.StringBuilder.append(StringBuilder.java:131) at org.hibernate.jpa.event.internal.jpa.ListenerFactoryBeanManagerStandardImpl.(ListenerFactoryBeanManagerStandardImpl.java:60) at org.hibernate.jpa.event.internal.jpa.ListenerFactoryBeanManagerStandardImpl.fromBeanManagerReference(ListenerFactoryBeanManagerStandardImpl.java:55) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.hibernate.jpa.event.spi.jpa.ListenerFactoryBuilder.buildBeanManagerListenerFactory(ListenerFactoryBuilder.java:80) ... 77 more
这只是提到例外的一小部分。 以下是完整的堆栈跟踪和服务器日志
所有数据库内容和JPA映射都可以。 经过双重检查,精致至完美。 事实上,我能够在Tomcat 8.5.6服务器上运行我的应用程序,但它不支持EJB,所以我需要TomEE。
这里的根删除是java.lang.IllegalStateException: On a thread without an initialized context nor a classloader mapping a deployed app
。 它出现在我的所有Hibernate-JPA项目中(即使是只有一个实体且没有错误空间的简单测试),所以我认为这是真正的服务器端配置问题。
但是,我无法在StackOverflow和互联网上找到任何关于此exception的线索。
我期待着你的帮助,很乐意得到任何帮助和建议。
您可以添加persistence.xml
要么
如果您不需要CDI / JPA集成
编辑:第一个将使工厂在运行时首次使用,第二个将禁用cdi。 这两项工作都会导致您在启动期间初始化JPA时不需要CDI(在启动cdi之前创建工厂因为cdi可以依赖它 – 鸡蛋问题)
- 当方法签名不允许抛出exception时,如何抛出exception?
- e.printStackTrace和System.out.println(e)之间的区别
- JDK8 CompletableFuture.supplyAsync如何处理interruptedException
- ClassNotFoundException与NoClassDefFoundError
- Java:catch的意义(最终的SomeException e)?
- Scala期货和`andThen`exception传播
- Thymeleaf:如何在使用Thymeleaf的JavaScript中使用布尔运算符
- 如何使用java配置和没有Web.xml处理Spring MVC中的404页面未找到exception
- exception处理模式