如何使用JBoss EAP中的另一个jar覆盖WEB-INF/lib中jar中的某些类?

coo*_*fan 6 java jboss jboss7.x

如果要调用要覆盖的类com.example.FooServlet并且这个类在jar中WEB-INF/lib/foo.jar,那么如何使用com.example.FooServlet另一个jar中调用的类来覆盖它,比如说bar.jar

或者有没有办法确保bar.jar首先加载?

制作bar.jar一个模块是不行的,因为FooServlet从许多罐子里进口大量的类WEB-INF/lib.


正如我上面所说的,我试图bar.jar在一个模块中包含,但没有找到类或没有类def错误(记不清楚)作为FooServlet扩展/实现一些额外的类/接口在WEB-INF /中的第三方jar中库.

我不允许触摸foo.jar或任何已经存在的罐子WEB-INF/lib.

Hug*_* M. 3

你说你不能碰现有的罐子,而且你似乎暗示你可以将你的罐子添加WEB-INF/lib到.

根据这个

  • 下的 jar 没有指定的优先顺序WEB-INF/lib/*.jar
    所以如果你bar.jar在那里添加,你不知道它是在之前还是之后加载foo.jar
  • servlet 规范规定WEB-INF/classes必须先加载下面的类,然后再加载下面的任何内容WEB-INF/lib/*.jar

假设您可以在 下添加一个 jar WEB-INF/lib,那么您应该能够在 下添加一个类(或几个)WEB-INF/classes,而无需触及现有的类。
因此,如果您希望首先加载其中的类bar.jar,您可以解压该 jar 的内容WEB-INF/classes(或者仅解压缩您想要优先加载的类 - 例如WEB-INF/classes/com/example/FooServlet.class)。