jetty WebappClassLoader 问题
一、
背景:
一个main方法启动一个java app和一个jetty webserver
但是jetty webserver 获取不到java app的数据。【就是jetty web action不能获取 app中对象的返回结果】
1.只用jstl-1.2.jar ,不需要standard.jar
但是jetty webserver 获取不到java app的数据。【就是jetty web action不能获取 app中对象的返回结果】
原因:两部分程序有两个classLoader
解决方案:都用sun的 AppClassLoader
sun.misc.Launcher$AppClassLoader@558fe7c3
jetty WebappClassLoader
解决方案:都用sun的 AppClassLoader
把jetty的loader设为sun的
AppClassLoader:
ClassLoader t_classLoader = Thread.currentThread().getContextClassLoader();
WebAppContext.setClassLoader();
二、
然后访问web应用,出现jstl错误:
http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
解决方案:
2.同时调整classLoader
URLClassLoader t_newClassLoader = new URLClassLoader( new URL[] { t_urlTaglibs }, classLoader);
URLClassLoader t_newClassLoader = new URLClassLoader( new URL[] { t_urlTaglibs }, classLoader);
Thread. currentThread().setContextClassLoader(t_newClassLoader);
jettyServer.start();