在实际项目中,我们经常需要使用第三方的类库。这些类库应该放在哪里?EJB应用一般都有被“卸出”(这里指装入的反向过程)的能力,这种能力由部署时装入它们的类装载器支持。如果我们把第三方类库放入应用服务器的标准类路径([jboss安装目录]\server\all\lib),这些类很可能完全失去被卸出的能力。这样,如果EJB应用要更新某个第三方类库的版本,重新部署EJB应用时,第三方类库也要重新部署。在这种情形下,把第三方类库放
入应用服务器标准类路径很不方便,因为每次部署EJB应用时,都要重新启动整个应用服务器,这显然不是理想的选择。适合放入应用服务器类路径的第三方类库通常是一些通用类库,如JDBC驱动。
对于针对特定应用的第三方类库,最理想的选择是把他们放入EJB Jar 文件中。每一个JAR文件里都有一个manifest文件,这个文件由jar工具自动创建,默认名字是MANIFEST.MF。我们可以在manifest文件中加入一个Class-Path属性,引用它所依赖的JAR文件。我们可以手工编辑manifest.mf文件,在原有内容的基础上,添加
Class-Path属性。Class-Path属性的值是用来搜索第三方类库的相对URL。这个URL总是相对于包含Class-Path属性的组件。单个Class-Path属性内可以指定多个URL,一个manifest文件可以包含多个Class-Path属性。
假设本例EJB使用了两个第三方类库,名为:Upload.jar,Socket.jar,修改后的manifest.mf文件内容如下:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 1.5 .0_ 01 -b08 (Sun Microsystems Inc.)
Class-Path: Upload.jar Socket.jar
注意:Class-Path: 与Upload.jar 之间有一空格分隔(缺少了空格就会发生找不到jar 文件),多个jar 文件之间需
要用空格分隔。Class-Path所在行还需要进行回车换行。