我试图了解在什么条件下destroySubContext在Tomcat中失败。我正试图销毁我创建的Context,因此下次启动该服务时将无法createContext。我的代码如下:

  private Context srvCtx;
  public void init(ServletConfig servletconfig) throws ServletException {
      super.init(servletconfig);
      Context initCtx = new InitialContext();
      srvCtx = initCtx.createSubcontext("myapp");
  }

  public void destroy()
  {
      try
      {
          if (srvCtx != null)
          {
              srvCtx.destroySubcontext("myapp");
              srvCtx.close();
          }
      }
      catch(NamingException e)
      {
          log_.error(new LogQueueMessageStructure("Couldn't unbind the context",3016),e);
      }

  }


我的代码有什么问题,如何调试此问题?

最佳答案

您正在将上下文创建为initCtx的子上下文:

srvCtx = initCtx.createSubcontext("myapp");


但是,当销毁它时,似乎要破坏它作为srvCtx的子上下文。

srvCtx.destroySubcontext("myapp");


myapp上下文不是srvCtx的子上下文,而是initCtx的子上下文。它应该更好地与

initCtx.destroySubcontext("myapp");

10-07 15:12