我使用IntelliJ 2016 Ultimate作为IDE来开发JAX-RS 2.0 Web应用程序。
在各种远程WebLogic计算机上部署为WAR工件时,webapp可以正常工作。
但是,当部署为爆炸工件时(在本地WebLogic安装上(读取:目标/ webbap目录),Jersey 有时无法正确初始化,但有以下异常: 在此上下文中,资源配置无法修改。
java.lang.IllegalStateException: The resource configuration is not modifiable in this context. at org.glassfish.jersey.server.ResourceConfig$ImmutableState.register(ResourceConfig.java:274) at org.glassfish.jersey.server.ResourceConfig$ImmutableState.register(ResourceConfig.java:221) at org.glassfish.jersey.server.ResourceConfig.register(ResourceConfig.java:453) at org.glassfish.jersey.servlet.WebComponent.(WebComponent.java:385) at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:170) at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:362) at javax.servlet.GenericServlet.init(GenericServlet.java:244) at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:343) at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:294) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:326) at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:196) at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203) at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71) at weblogic.servlet.internal.StubSecurityHelper.initServletInstance(StubSecurityHelper.java:99) at weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:93) at weblogic.servlet.internal.StubLifecycleHelper.createOneInstance(StubLifecycleHelper.java:69) at weblogic.servlet.internal.StubLifecycleHelper.(StubLifecycleHelper.java:57) at weblogic.servlet.internal.StubLifecycleHelper.(StubLifecycleHelper.java:36) at weblogic.servlet.internal.ServletStubImpl.initStubLifecycleHelper(ServletStubImpl.java:666) at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:612) at weblogic.servlet.internal.ServletStubImpl.reloadWhenClassloaderChanged(ServletStubImpl.java:562) at weblogic.servlet.internal.ServletStubImpl.checkForReload(ServletStubImpl.java:530) at weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.java:411) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:304) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78) ....
这发生在对资源的第一个请求上。对于哪种资源并不重要,我已经看到它在许多不同的资源上发生。 此时唯一的解决方案是重启webapp。
技术堆栈
IDE
很难可靠地再现,有时泽西岛的初始化连续5次失败,有时10次没有问题。
我不确定究竟出了什么问题。任何人都可以给我一些关于初始化期间究竟失败的解释,或者想知道如何调试这个问题。