代码之家  ›  专栏  ›  技术社区  ›  Ted Spradley

TOME+8.0-OperationNotSupportedException:上下文为只读]

  •  0
  • Ted Spradley  · 技术社区  · 6 年前

    在本地Eclipse IDE和远程CentOS服务器中使用tome+8.0(tomcat 9.0.12)。应用程序在本地正常启动,以前在远程服务器上正常启动。现在,在添加一个javascriptWebSocket之后,在部署到远程服务器时抛出一个NPE。

    有什么建议可以从哪里开始寻找?这是一个令人头疼的问题。

    谢谢您, 泰德S

    堆栈跟踪:

    SEVERE [http-nio-9086-exec-119] sun.reflect.NativeMethodAccessorImpl.invoke Creation of the naming context failed: [javax.naming.OperationNotSupportedException: Context is read only]
    SEVERE [http-nio-9086-exec-119] org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal Error merging Java EE JNDI entries in to war /o-test: Exception: null
     java.lang.NullPointerException
            at org.apache.catalina.core.NamingContextListener.createSubcontexts(NamingContextListener.java:1253)
            at org.apache.catalina.core.NamingContextListener.addEnvironment(NamingContextListener.java:785)
            at org.apache.catalina.core.NamingContextListener.processGlobalResourcesChange(NamingContextListener.java:432)
            at org.apache.catalina.core.NamingContextListener.propertyChange(NamingContextListener.java:382)
            at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335)
            at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:327)
            at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:263)
            at org.apache.catalina.deploy.NamingResourcesImpl.addEnvironment(NamingResourcesImpl.java:303)
            at org.apache.tomee.catalina.OpenEJBNamingResource.addEnvironment(OpenEJBNamingResource.java:78)
            at org.apache.tomee.catalina.TomcatJndiBuilder.mergeRef(TomcatJndiBuilder.java:403)
            at org.apache.tomee.catalina.TomcatJndiBuilder.mergeJndi(TomcatJndiBuilder.java:125)
            at org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1394)
            at org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1130)
            at org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:133)
            at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
            at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5007)
            at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
            at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743)
            at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719)
            at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:703)
            at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986)
            at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
            at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1651)
            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.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287)
            at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
            at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
        at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1571)
        at org.apache.catalina.manager.HTMLManagerServlet.upload(HTMLManagerServlet.java:294)
        at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:212)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:136)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
        at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:607)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
        at org.apache.tomee.catalina.OpenEJBSecurityListener$RequestCapturer.invoke(OpenEJBSecurityListener.java:97)
        at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:685)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:770)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:748)
    
    0 回复  |  直到 6 年前
        1
  •  0
  •   Ted Spradley    6 年前

    此应用程序使用此处引用的tomcat's server.xml应用程序元素中的条目从Web应用程序根目录之外的目录提供图像文件。 Serve static files from Tomcat

    <Host name="www.example.com" appBase="webapps"
                     unpackWARs="true" autoDeploy="true" >
        <Alias>example.com</Alias>
        <Valve className="org.apache.catalina.valves.AccessLogValve" 
            directory="logs"
            prefix="oneme_access_log." suffix=".txt"
            pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    
        <Context docBase="/var/www/html/example/media" 
                path="/myapp/media" 
                reloadable="true" />
    </Host>
    

    问题是通过(按此顺序)解决的

    1. 删除应用程序war文件
    2. 清除Sprint期间输入的不必要的Maven依赖项
    3. 评论元素
    4. 停止并重新启动Tomcat
    5. 取消对元素的注释
    6. 停止并重新启动Tomcat

    在上述每个步骤之后尝试部署。我不知道为什么会这样。应用程序之前已经正确部署,然后在冲刺之后,它会给出上面的错误。我怀疑马文所加的相互冲突的罐子不知何故扰乱了汤姆猫的状态。

    希望分享这对某人有帮助。

    推荐文章