JFinal的包放在web容器的共享目录下无法初始化

rainmanhhh 发布于 2016/07/19 09:46
阅读 128
收藏 0

如果有多个项目都使用jfinal,希望能将jfinal的包放到web容器的共享目录下

但实验后发现这样会造成JFinalFilter读取自己写的Config类(继承JFinalConfig)失败,Class.forName时抛出ClassNotFoundException

问题是JFinalFilter还是final的无法继承,自己写个Filter又无法访问core下面的类,都是default权限的

貌似是ClassLoader加载顺序的问题,其他框架也有类似的情况(把类或者包名配置在xml里面,共享目录下的类通过反射去加载项目路径下的类,不知道是如何避免同样问题的

加载中
0
JFinal
JFinal

    试试这个方案:自己创建一个 MyJFinalFilter,将 JFinalFilter 中的代码完全 copy 过来,然后项目中的 web.xml 中使用 MyJFinalFilter。这个 MyJFinalFilter 可以放在 web 容器共享目录下,也可以以项目依赖的方式存在。

    楼主这个需求我也是头一次碰到,由于 jfinal 的 jar 包一共才 300K 多点,项目启动加载到内存的空间占用几乎可以忽略不计,所以不建议放在 web 容器共享目录。而且让项目自己持有 jfinal jar,更有利于项目将来独立部署到各种环境中,否则你是要再去处理 jar 包的问题的。

   而且随着时间的推移,jfinal 版本也在不断更新,未来再处理的时候,你还得去搞清楚这个项目依赖的 jfinal 版本。

JFinal
JFinal
回复 @rainmanhhh : 放在项目中更省事,300K 多点的体积,没必要去做这个事情,要知道做这个事情,你还得将部署的 war 中 lib 下的 jfinal jar 一个个删除,耗费的这个时间不值得
rainmanhhh
rainmanhhh
我试过copy的办法,但Filter中还引用了jfinal.core中的其他类,都是default权限的……
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部