2011-11-17 299 views
4

必须为Web-INF中指定的类指定prefer-web-inf-classes,以优先考虑weblogic服务器的应用程序库中存在的类。我有一个特殊情况,我需要类加载器使用WEB-INF文件夹中的一个特定jar。有没有办法做到这一点?Weblogic配置 - prefer-web-inf-classes

+0

这个类是开源的还是第三方的jar或者你的自定义类?我想知道这个类是单独需要在WEB-INF中还是不能从App类加载器加载整个jar(包括你的类)? – JoseK

+0

嗨,何塞,特定的jar是apache-commons-lang。我很抱歉 - 这是一个罐子,而不是一个班级。有没有办法做到这一点?谢谢。 –

+1

不仅仅是来自web-inf的一个罐子。这种情况下的解决方案是mgaert的答案。如果可能,将所有其他文件移到APP-INF中,并使用prefer-web-inf保留该文件,否则在application.xml中使用包级别条目(即Filtering Classloader) – JoseK

回答

2

你可能想看Filtering Classloaders

这允许在逐个包级指定要使用哪个类加载器。

你想成为小心这一点,虽然。你确定你已经是在CLassloader地狱,所以你必须诉诸这种东西,真的没有其他选择吗?

您是否考虑将JAR放入EAR的APP-INF/lib文件夹中?或将“除WEB-INF/lib中所需的所有文件”移出到APP-INF/lib?

+0

谢谢mgaert。我只是有一个战争档案,它并没有捆绑到耳边。是否有可能让过滤类加载器在WEB-INF \ lib中指定特定的包? –

1

要优先于您的WEB-INF/lib中所有与您的WebLogic lib绑定的包,将<prefer-web-inf-classes>设置为weblogic.xmlapplication-weblogic.xml为true。

<container-descriptor> 
    <prefer-web-inf-classes>true</prefer-web-inf-classes> 
</container-descriptor> 

有关更多详细信息请参阅使用筛选类加载器,weblogic.xml部署描述符元素和WebLogic的类加载器,过滤的ClassLoader类加载器和分析工具。

如果您不确定是否加载了正确的类,则可以使用WebLogic的Classloader分析工具。