Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 非法访问异常:Eclipse持久性本地化_Java_Jpa - Fatal编程技术网

Java 非法访问异常:Eclipse持久性本地化

Java 非法访问异常:Eclipse持久性本地化,java,jpa,Java,Jpa,我正在使用JPA和SpringMVC开发一个web应用程序,我遇到了一个关于Eclipse持久化本地化的恼人的异常。以下是堆栈跟踪: mars 09, 2014 2:23:06 PM org.apache.catalina.loader.WebappClassLoader findResourceInternal Infos: Illegal access: this web application instance has been stopped already. Could not lo

我正在使用JPA和SpringMVC开发一个web应用程序,我遇到了一个关于Eclipse持久化本地化的恼人的异常。以下是堆栈跟踪:

mars 09, 2014 2:23:06 PM org.apache.catalina.loader.WebappClassLoader findResourceInternal
Infos: Illegal access: this web application instance has been stopped already.  Could not load org/eclipse/persistence/internal/localization/i18n/LoggingLocalizationResource_fr.properties.  The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
mars 09, 2014 2:23:06 PM org.apache.catalina.loader.WebappClassLoader loadClass
Infos: Illegal access: this web application instance has been stopped already.  Could not load org.eclipse.persistence.internal.localization.i18n.LoggingLocalizationResource_fr_FR.  The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1600)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
    at java.util.ResourceBundle$Control.newBundle(ResourceBundle.java:2566)
    at java.util.ResourceBundle.loadBundle(ResourceBundle.java:1436)
    at java.util.ResourceBundle.findBundle(ResourceBundle.java:1400)
    at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1296)
    at java.util.ResourceBundle.getBundle(ResourceBundle.java:795)
    at org.eclipse.persistence.internal.localization.EclipseLinkLocalization.buildMessage(EclipseLinkLocalization.java:60)
    at org.eclipse.persistence.internal.localization.EclipseLinkLocalization.buildMessage(EclipseLinkLocalization.java:34)
    at org.eclipse.persistence.internal.localization.LoggingLocalization.buildMessage(LoggingLocalization.java:25)
    at org.eclipse.persistence.logging.AbstractSessionLog.formatMessage(AbstractSessionLog.java:987)
    at org.eclipse.persistence.logging.DefaultSessionLog.log(DefaultSessionLog.java:142)
    at org.eclipse.persistence.internal.sessions.AbstractSession.log(AbstractSession.java:3480)
    at org.eclipse.persistence.internal.sessions.AbstractSession.log(AbstractSession.java:4669)
    at org.eclipse.persistence.internal.sessions.AbstractSession.log(AbstractSession.java:4641)
    at org.eclipse.persistence.internal.sessions.AbstractSession.log(AbstractSession.java:4617)
    at org.eclipse.persistence.internal.sessions.AbstractSession.log(AbstractSession.java:4539)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.logout(DatabaseSessionImpl.java:937)
    at org.eclipse.persistence.sessions.server.ServerSession.logout(ServerSession.java:776)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.removeSessionFromGlobalSessionManager(EntityManagerSetupImpl.java:511)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.undeploy(EntityManagerSetupImpl.java:2850)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.close(EntityManagerFactoryDelegate.java:267)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.finalize(EntityManagerFactoryDelegate.java:344)
    at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
    at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:101)
    at java.lang.ref.Finalizer.access$100(Finalizer.java:32)
    at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:190)

由于我是JPA和SpringMVC的新手,我不知道是什么导致了这个异常。我为什么会有这个异常以及如何解决它?谢谢。

我已将Eclipse WTP服务器设置为“在生成事件后自动发布”。每次自动发布后,我都会遇到与您显示的相同的错误消息

解决这个问题有两种方法

  • 将Eclipse服务器设置改为“从不自动发布”

  • 添加一个Servlet关闭钩子,它确实显式关闭JPA的EntityManagerFactory

您可以轻松地向ServletContextListener添加shotton钩子。在我的例子中,这是一个GuiceServletContextListener,但它应该对任何ServletContextListener都有效

import javax.persistence.EntityManagerFactory;
import javax.servlet.ServletContextEvent;
import javax.servlet.annotation.WebListener;

import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.servlet.GuiceServletContextListener;

@WebListener
public class BmjServletContextListener extends GuiceServletContextListener {

    Injector injector;

    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        injector.getInstance(EntityManagerFactory.class).close(); // <--- POI !!
        super.contextDestroyed(servletContextEvent);
    }

    public void contextInitialized(ServletContextEvent servletContextEvent) {
        super.contextInitialized(servletContextEvent);
    }

    protected Injector getInjector() {
        injector = Guice.createInjector(new MyModule1(), new MyModule2());
        return injector;
    }
}
import javax.persistence.EntityManagerFactory;
导入javax.servlet.ServletContextEvent;
导入javax.servlet.annotation.WebListener;
导入com.google.inject.Guice;
导入com.google.inject.Injector;
导入com.google.inject.servlet.GuiceServletContextListener;
@网络监听器
公共类BmjServletContextListener扩展了GuiceServletContextListener{
注入器;
公共无效上下文已销毁(ServletContextEvent ServletContextEvent){

injector.getInstance(EntityManagerFactory.class).close();//我也遇到了同样的问题,你找到解决这个问题的方法了吗?@也很遗憾,没有,我只是从头开始重新启动了我的项目:/(谢天谢地,这不是一个大问题)