我最近就遇到了这个问题,也是在这里是我发现,(这是所有从Tomcat 7主干)
首先,If left as blank, the "common" loader will be used as Catalina's "shared"/"server" loader.
下面是相关source,
89 private void initClassLoaders() {
90 try {
91 commonLoader = createClassLoader("common", null);
92 if(commonLoader == null) {
93 // no config file, default to this loader - we might be in a 'single' env.
94 commonLoader=this.getClass().getClassLoader();
95 }
96 catalinaLoader = createClassLoader("server", commonLoader);
97 sharedLoader = createClassLoader("shared", commonLoader);
98 } catch (Throwable t) {
99 handleThrowable(t);
100 log.error("Class loader creation threw exception", t);
101 System.exit(1);
102 }
103 }
106 private ClassLoader createClassLoader(String name, ClassLoader parent)
107 throws Exception {
108
109 String value = CatalinaProperties.getProperty(name + ".loader");
110 if ((value == null) || (value.equals("")))
111 return parent;
因此,如果没有定义,它们将回退到使用common.loader条目。
至于它们在加载顺序, 这里是在加载它们的来源,从source
229 Thread.currentThread().setContextClassLoader(catalinaLoader);
230
231 SecurityClassLoad.securityClassLoad(catalinaLoader);
232
233 // Load our startup class and call its process() method
234 if (log.isDebugEnabled())
235 log.debug("Loading startup class");
236 Class<?> startupClass =
237 catalinaLoader.loadClass
238 ("org.apache.catalina.startup.Catalina");
239 Object startupInstance = startupClass.newInstance();
240
241 // Set the shared extensions class loader
242 if (log.isDebugEnabled())
243 log.debug("Setting startup class properties");
244 String methodName = "setParentClassLoader";
245 Class<?> paramTypes[] = new Class[1];
246 paramTypes[0] = Class.forName("java.lang.ClassLoader");
247 Object paramValues[] = new Object[1];
248 paramValues[0] = sharedLoader;
249 Method method =
250 startupInstance.getClass().getMethod(methodName, paramTypes);
251 method.invoke(startupInstance, paramValues);
线229套common.loader类加载器,然后行251套shared.loader classloader被设置为Catalinas父类加载器。
另请参见http://stackoverflow.com/questions/5474765/order-of-loading-jar-files-from-lib-directory – rogerdpack 2014-09-26 17:50:30