destroySubcontext与NameNotFoudException失败

时间:2014-05-07 10:29:31

标签: tomcat servlets

我试图了解Tomcat在destroySubContext失败的条件下。我正在尝试销毁我创建的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);
      }

  } 

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

1 个答案:

答案 0 :(得分:1)

您正在创建上下文作为initCtx

的子上下文
srvCtx = initCtx.createSubcontext("myapp");

当你正在摧毁它时,似乎你试图将其作为srvCtx的子上下文来摧毁它。

srvCtx.destroySubcontext("myapp");

myapp上下文不是srvCtx的子上下文,它是initCtx的子上下文。

应该更好用
initCtx.destroySubcontext("myapp");