多谢Kyle_Yin和banq.
1.这个方法肯定不行,因为我的类库里面正好用到了xalan,另外还不知道commons-fileupload.jar与系统的类库有没有冲突.
2.不考虑
4.因为我的需求是三个war程序都要用到一个或多个jar类库,我不想把这些类库重复地放在这三个war的WEB-INF/lib目录下,所以我想把它们独立出来,所以这个方法也不考虑.
3.我们要讨论的就是这个方法,我的问题是这些jar1,jar2,jar3放在哪里呢?
有两个可能:
1)和ejb-jar平行放置,即project.ejb3,project.par,projectsetup.war,projectweb.war,jar1.jar,jar2.jar,jar3.jar...平行地打包在project.ear文件中,同时在.war文件的META-INF/MANIFEST.MF中指定各自所需要的Class-Path: jar1.jar jar3.jar foobar.jar
可是我这样做了,行不通,不知道为什么?????
2)war应用程序中用到的类库(servlet,action...)打包成jar放在/WEB-INF/lib中,在这个打包的jar中进行Class-Path指定,那么此时的Class-Path应该怎么设定呢?jar1.jar又应该放在哪里呢?
请指教.
为什么第一种方法不行呢?
什么地方不妥?
> 类库问题,有套路可循:
>
> 1。最简单粗暴的办法,是放在CLASSPATH里。这个办法能保证
> 问题。比如 XERCES, XALAN
> 之类的,几乎系统各层都用。乱放这些库会引起功能紊乱,内
> 2。用 J2EE 1.4 规范 8.2 小节制定的方法:“installed
> optional package”。类似上面的方法。
>
> 3。用 Jar 文件规范制定的方法,J2EE1.4 中所谓“bundled
> optional package”。即,在用户JAR一方的
> meta-inf/manifest.mf 的 header 部分中指定:
> Class-path: jar1.jar jar2.jar jar3.jar
>
> 4。分别部署到每一个 JAR 和 WAR web-inf/lib里。
>
> 上面的方法都是符合规范的,在任何服务器上都是可行的。