Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EntityManagerFactory已关闭-仅在特定计算机上_Java_Spring_Hibernate_Jpa - Fatal编程技术网

Java EntityManagerFactory已关闭-仅在特定计算机上

Java EntityManagerFactory已关闭-仅在特定计算机上,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我的代码不断抛出“EntityManagerFactory已关闭”异常 奇怪的是,它只在我们的生产机器上运行。当我在本地计算机上以完全相同的配置运行代码,同时连接到完全相同的数据库时,不会出现错误。另一件奇怪的事情是——尽管异常不断被抛出,但Hibernate似乎能够以某种方式忽略它们并成功完成事务。但过了一段时间,它无法完成任何事务,我被迫重新启动应用程序使其再次工作(重新启动后也会出现异常) 我将EntityManager注入到我的DAO类中,如下所示: @PersistenceConte

我的代码不断抛出“EntityManagerFactory已关闭”异常

奇怪的是,它只在我们的生产机器上运行。当我在本地计算机上以完全相同的配置运行代码,同时连接到完全相同的数据库时,不会出现错误。另一件奇怪的事情是——尽管异常不断被抛出,但Hibernate似乎能够以某种方式忽略它们并成功完成事务。但过了一段时间,它无法完成任何事务,我被迫重新启动应用程序使其再次工作(重新启动后也会出现异常)

我将EntityManager注入到我的DAO类中,如下所示:

 @PersistenceContext
 private EntityManager em;
我使用这些DAO主要是通过@Transactional注释的服务方法

堆栈跟踪:

2018-08-02 14:27:29,695 ERROR [stderr] (PG-JDBC EventLoop (6)) org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is java.lang.IllegalStateException: EntityManagerFactory is closed
2018-08-02 14:27:29,695 ERROR [stderr] (PG-JDBC EventLoop (6))  at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:450)
2018-08-02 14:27:29,695 ERROR [stderr] (PG-JDBC EventLoop (6))  at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:378)
2018-08-02 14:27:29,695 ERROR [stderr] (PG-JDBC EventLoop (6))  at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:474)
2018-08-02 14:27:29,695 ERROR [stderr] (PG-JDBC EventLoop (6))  at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:289)
2018-08-02 14:27:29,695 ERROR [stderr] (PG-JDBC EventLoop (6))  at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
2018-08-02 14:27:29,695 ERROR [stderr] (PG-JDBC EventLoop (6))  at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
2018-08-02 14:27:29,695 ERROR [stderr] (PG-JDBC EventLoop (6))  at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)
2018-08-02 14:27:29,695 ERROR [stderr] (PG-JDBC EventLoop (6))  at xxx.services.examination.service.ExaminationDocumentService$$EnhancerBySpringCGLIB$$ba40e12e.markDocumentError(<generated>)
2018-08-02 14:27:29,695 ERROR [stderr] (PG-JDBC EventLoop (6))  at xxx.services.examination.listener.ExaminationListener.notification(ExaminationListener.java:68)
2018-08-02 14:27:29,696 ERROR [stderr] (PG-JDBC EventLoop (6))  at com.impossibl.postgres.system.BasicContext.reportNotification(BasicContext.java:745)
2018-08-02 14:27:29,696 ERROR [stderr] (PG-JDBC EventLoop (6))  at com.impossibl.postgres.protocol.v30.ProtocolImpl.receiveNotification(ProtocolImpl.java:1143)
2018-08-02 14:27:29,696 ERROR [stderr] (PG-JDBC EventLoop (6))  at com.impossibl.postgres.protocol.v30.ProtocolImpl.dispatch(ProtocolImpl.java:781)
2018-08-02 14:27:29,696 ERROR [stderr] (PG-JDBC EventLoop (6))  at com.impossibl.postgres.protocol.v30.MessageHandler.channelRead(MessageHandler.java:45)
2018-08-02 14:27:29,696 ERROR [stderr] (PG-JDBC EventLoop (6))  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)
2018-08-02 14:27:29,696 ERROR [stderr] (PG-JDBC EventLoop (6))  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)
2018-08-02 14:27:29,696 ERROR [stderr] (PG-JDBC EventLoop (6))  at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)
2018-08-02 14:27:29,696 ERROR [stderr] (PG-JDBC EventLoop (6))  at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)
2018-08-02 14:27:29,696 ERROR [stderr] (PG-JDBC EventLoop (6))  at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)
2018-08-02 14:27:29,696 ERROR [stderr] (PG-JDBC EventLoop (6))  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)
2018-08-02 14:27:29,696 ERROR [stderr] (PG-JDBC EventLoop (6))  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)
2018-08-02 14:27:29,696 ERROR [stderr] (PG-JDBC EventLoop (6))  at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)
2018-08-02 14:27:29,696 ERROR [stderr] (PG-JDBC EventLoop (6))  at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334)
2018-08-02 14:27:29,696 ERROR [stderr] (PG-JDBC EventLoop (6))  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)
2018-08-02 14:27:29,696 ERROR [stderr] (PG-JDBC EventLoop (6))  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)
2018-08-02 14:27:29,696 ERROR [stderr] (PG-JDBC EventLoop (6))  at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926)
2018-08-02 14:27:29,696 ERROR [stderr] (PG-JDBC EventLoop (6))  at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:129)
2018-08-02 14:27:29,697 ERROR [stderr] (PG-JDBC EventLoop (6))  at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:642)
2018-08-02 14:27:29,697 ERROR [stderr] (PG-JDBC EventLoop (6))  at io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:527)
2018-08-02 14:27:29,697 ERROR [stderr] (PG-JDBC EventLoop (6))  at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:481)
2018-08-02 14:27:29,697 ERROR [stderr] (PG-JDBC EventLoop (6))  at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:441)
2018-08-02 14:27:29,697 ERROR [stderr] (PG-JDBC EventLoop (6))  at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
2018-08-02 14:27:29,697 ERROR [stderr] (PG-JDBC EventLoop (6))  at java.lang.Thread.run(Thread.java:748)
2018-08-02 14:27:29,697 ERROR [stderr] (PG-JDBC EventLoop (6)) Caused by: java.lang.IllegalStateException: EntityManagerFactory is closed
2018-08-02 14:27:29,697 ERROR [stderr] (PG-JDBC EventLoop (6))  at org.hibernate.internal.SessionFactoryImpl.validateNotClosed(SessionFactoryImpl.java:531)
2018-08-02 14:27:29,697 ERROR [stderr] (PG-JDBC EventLoop (6))  at org.hibernate.internal.SessionFactoryImpl.createEntityManager(SessionFactoryImpl.java:613)
2018-08-02 14:27:29,697 ERROR [stderr] (PG-JDBC EventLoop (6))  at org.hibernate.internal.SessionFactoryImpl.createEntityManager(SessionFactoryImpl.java:154)
2018-08-02 14:27:29,697 ERROR [stderr] (PG-JDBC EventLoop (6))  at org.springframework.orm.jpa.JpaTransactionManager.createEntityManagerForTransaction(JpaTransactionManager.java:468)
2018-08-02 14:27:29,697 ERROR [stderr] (PG-JDBC EventLoop (6))  at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:389)
2018-08-02 14:27:29,698 ERROR [stderr] (PG-JDBC EventLoop (6))  ... 31 more
(END)
2018-08-02 14:27:29695错误[stderr](PG-JDBC EventLoop(6))org.springframework.transaction.CannotCreateTransactionException:无法为事务打开JPA EntityManager;嵌套异常为java.lang.IllegalStateException:EntityManagerFactory已关闭
2018-08-02 14:27:29695 org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:450)上的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29695 org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:378)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29695 org.springframework.transaction.interceptor.TransactionSpectSupport.CreateTransactionIfEssential(TransactionSpectSupport.java:474)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29695 org.springframework.transaction.interceptor.TransactionSpectSupport.InvokeWithintTransaction(TransactionSpectSupport.java:289)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29695 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29695 org.springframework.aop.framework.ReflectiveMethodInvocation.Procedue(ReflectiveMethodInvocation.java:185)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29695 org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29695 xxx.services.examition.service.examicationDocumentService$$EnhancerBySpringCGLIB$$ba40e12e.markDocumentError()处的错误[stderr](PG-JDBC事件循环(6))
2018-08-02 14:27:29695 xxx.services.examition.listener.examicationListener.notification(examicationListener.java:68)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29696 com.impossibl.postgres.system.BasicContext.reportNotification(BasicContext.java:745)上的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29696 com.impossibl.postgres.ProtocolImpl.receiveNotification(ProtocolImpl.java:1143)上的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29696 com.impossibl.postgres.ProtocolImpl.dispatch(ProtocolImpl.java:781)上的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29696 com.impossibl.postgres.protocol.v30.MessageHandler.channelRead(MessageHandler.java:45)上的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29696 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29696 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29696 io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29696 io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29696 io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29696 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29696 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29696 io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29696 io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29696 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29696 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29696 io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29696 io.netty.channel.nio.AbstractNioByteChannel$niobytuensafe.read(AbstractNioByteChannel.java:129)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29697 io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:642)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29697 io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:527)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29697 io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:481)处的错误[stderr](PG-JDBC EventLoop(6))
2018-08-02 14:27:29697错误
<?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:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:jpa="http://www.springframework.org/schema/data/jpa"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">
    <jpa:repositories base-package="xxx.services.examination.dao"/>
    <context:annotation-config/>
    <tx:annotation-driven/>

    <!-- POSTGRES -->
    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="listenerDataSource"/>
        <property name="packagesToScan">
            <array>
                <value>xxx.services.examination</value>
            </array>
        </property>
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <!--<property name="showSql" value="true" />-->
                <property name="databasePlatform" value="org.hibernate.dialect.PostgreSQL95Dialect"/>
            </bean>
        </property>

    </bean>

    <bean id="transactionManager"
          class="org.springframework.orm.jpa.JpaTransactionManager">
    </bean>

    <bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
        <property name="poolName" value="springHikariCP" />
        <property name="dataSource" ref="innerDataSource"/>
        <property name="connectionTimeout" value="60000"/>
        <property name="maximumPoolSize" value="${postgres.max.connection.pool}"/>
    </bean>

    <bean name="innerDataSource" class="com.impossibl.postgres.jdbc.PGDataSource">
        <property name="host" value="${postgres.host}"/>
        <property name="port" value="${postgres.port}"/>
        <property name="database" value="${postgres.database}"/>
        <property name="user" value="${postgres.user}"/>
        <property name="password" value="${postgres.password}"/>
    </bean>

    <bean id="listenerDataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
        <constructor-arg ref="hikariConfig" />
    </bean>

    <!-- END POSTGRES -->


</beans>
<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">

    <display-name>xxx</display-name>

      <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:config.xml</param-value>
      </context-param>

      <listener>
        <listener-class>
          org.springframework.web.context.ContextLoaderListener
        </listener-class>
      </listener>

</web-app>