jetty WebappClassLoader 问题

codewhile 2013-06-27

jetty WebappClassLoader 问题

一、
背景:
一个main方法启动一个java app和一个jetty webserver
但是jetty webserver 获取不到java app的数据。【就是jetty web action不能获取 app中对象的返回结果】
原因:两部分程序有两个classLoader
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
 
解决方案:
1.只用jstl-1.2.jar  ,不需要standard.jar
2.同时调整classLoader
URLClassLoader t_newClassLoader = new URLClassLoader(new URL[] { t_urlTaglibs }, classLoader);
        Thread. currentThread().setContextClassLoader(t_newClassLoader);
jettyServer.start();

相关推荐