因为我发现在Tomcat 7源代码中名为bindThread()
的类中多次调用名为StandardContext
的方法,特别是在名为startInternal()
的方法中。我不明白为什么需要多次调用这个方法。
实际上bindThread()
设置了线程上下文类加载器,但我不知道为什么仍然多次在bindThread()
调用中使用unbindThread()
和startInternal()
方法对。
答案 0 :(得分:0)
Web应用程序启动和停止通常在容器类加载器生效时发生。启动(和停止)过程的某些部分(例如,触发应用程序侦听器)需要在Web应用程序类加载器生效的情况下进行。 bindThread()和unbindThread()分别是切换到Web应用程序类加载器并再次返回的方法。启动和停止的各种元素必须按特定顺序发生,因此必须在类加载器之间来回切换。