关于JFinal的JFinalFilter的一个小建议

逝水fox 发布于 2013/09/29 14:26
阅读 1K+
收藏 2

@JFinal 之前有个朋友说他的Tomcat下有多个Web工程,都是使用JFinal,所以想把JFinal的包统一放在Tomcat的lib下去,发现启动的时候报异常说JFinalFilter在初始化的时候找不到他Webapp这边自定义的JFinalConfig实现类。

查看了一下源码发现JFinalFilter是使用Class.forName()来获取,这个方法是采用的JFinalFilter这个类的加载器。

建议是否可以改成  Thread.currentThread().getContextClassLoader().loadClass(name)  这个形式使用线程的上下文加载器来避免这个问题。

加载中
1
JFinal
JFinal

   刚试着改进了一下,结论是不能这么做,java web container 规范约定:

1:其 class loader 需要首先加载其WEB-INF 下的 jar 与 classes,好让其可以分别stop start 某个 context

2:java web container 的 class loaser 与通常的双亲委托类加载顺序是相反的

3:tomcat其 TOMCAT_HOME/lib 下的 jar 是由AppClassLoader 加载的,而 context 的 jar 与 class 是由 tomcat/jetty 自定义的 WebAppClassLoader加载的

4:如果在 JFinalConfig 中使用Thread.currentThread().getContextClassLoader().loadClass(jfinalConfig) 加载,那么 JFinalConfig 将由传统的 AppCloassLoader 加载,而 JFinalFilter 因为jfinal 1.5 改造过了class loader则由即将推出的 JFinalClassLoader加载,所以 JFinalFilter 中的 temp instanceof JFinalConfig 为 false,将报异常,jfinal 无法正常启动

     所以这个改进暂不进行 

逝水fox
逝水fox
嗯 改过了classloader那就没法了
0
JFinal
JFinal
     JFinal 1.5 改进一下这个地方,谢谢楼主支持 
0
EugeneQiu
EugeneQiu

引用来自“JFinal”的答案

     JFinal 1.5 改进一下这个地方,谢谢楼主支持 
波总,JFinal 1.5 大概什么时候出呢?
0
JFinal
JFinal

引用来自“EugeneQiu”的答案

引用来自“JFinal”的答案

     JFinal 1.5 改进一下这个地方,谢谢楼主支持 
波总,JFinal 1.5 大概什么时候出呢?
今天在整 jfinal 1.5 了,你说啥时候出呢? 
l
longxm
期待
0
l
lvosc3mc
同期待。。。
返回顶部
顶部