gpt4 book ai didi

java - 非法访问异常: Eclipse Persistence Localization

转载 作者:太空宇宙 更新时间:2023-11-04 15:03:41 24 4
gpt4 key购买 nike

我正在使用 JPA 和 Spring MVC 开发一个 Web 应用程序,但我遇到了一个关于 Eclipse Persistence 本地化的恼人异常。这是堆栈跟踪:

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 和 Spring MVC 的新手,我不知道是什么导致了这个异常。为什么我会出现此异常以及如何解决?谢谢。

最佳答案

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

有两种方法可以解决此问题。

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

  • 添加 Servlet 关闭 Hook ,它会显式关闭 JPA 的 EntityManagerFactory。

您可以轻松地将击倒 Hook 添加到 ServletContextListener。就我而言,这是一个 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;
}
}

关于java - 非法访问异常: Eclipse Persistence Localization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22282800/

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