首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Classloader过滤

Classloader过滤
EN

Stack Overflow用户
提问于 2011-12-28 18:46:46
回答 3查看 2.2K关注 0票数 2

我以前问过一个相关的问题--但这并不完全一样。早些时候我被告知,如果问题有点不同,不要在同一个帖子中提出额外的问题。所以我发布了这个新问题。如果我不应该这样做,请告诉我。

我有一个web应用程序(war文件)。属于apache-commons-lang的Jar与其他jar文件一起添加到WEB-INF库中。但是,与apache-commons-lang相关的较早版本的jar也存在于系统库中,并且在部署时,系统类路径中的jar文件优先,并且我得到了"classnotfound“错误。必须为WEB-INF中指定的类指定prefer WEB-INF- classes,才能优先于系统Classloader.However中存在的类。我只希望这个特定的jar优先于系统类加载器。当我发布了类似的问题时,有人建议我在weblogic中使用“过滤类加载器”。当我有耳朵的时候,这个解决方案效果很好。但是,我不能在war文件中添加weblogic-application.xml,也不能使用这个类加载器过滤概念。有没有出路?谢谢。

EN

回答 3

Stack Overflow用户

发布于 2011-12-30 01:37:12

我对WebLogic不是很熟悉,但是如果你知道新的jar是如何使用的,并且该代码的入口就像实例化一个类并执行一个启动方法一样简单,那么你可能会得到一个定制的类加载器?请参阅http://tshrestha.blogspot.com/2011/12/using-custom-classloader.html上的示例

但我承认,一些WebLogic专家知道如何通过WebLogic本身的一些配置来实现这一点。

票数 1
EN

Stack Overflow用户

发布于 2012-02-21 16:01:45

我的一位同事指出,在weblogic.xml中指定相关的包可以解决这个问题。然而,它还没有尝试过。

代码语言:javascript
复制
    <wls:prefer-application-packages>
        <wls:package-name>javax.faces.*</wls:package-name>
        <wls:package-name>com.sun.faces.*</wls:package-name>
        <wls:package-name>javax.xml.*</wls:package-name>
        <wls:package-name>org.apache.xerces.*</wls:package-name>
        <wls:package-name>antlr.*</wls:package-name>
        <wls:package-name>org.apache.log4j.*</wls:package-name>
        <wls:package-name>org.apache.commons.*</wls:package-name>
    </wls:prefer-application-packages>
票数 0
EN

Stack Overflow用户

发布于 2012-03-21 18:06:45

我不是weblogic专家,但我看到了两种方法(没有尝试过,只是猜测)

1)只在WEB-INF中保留所需的war,并将其余war移动到不同的位置,并将它们指向war的MANIFEST.MF

2)将war捆绑到一个空白ear中,并在ear的MANIFEST.MF中指定所有jars,并在weblogic-application.xml中指定首选项类。这个想法是让war和ear成为同一个应用程序的一部分,这样web应用程序就可以使用相同的类加载器(而不是使用‘prefer web-inf-classes’)。

编辑:对于第一点,我验证了weblogic忽略了war文件的Manifest文件。因此,第一个sol不起作用。另外,关于第二个解决方案,如果ear中没有ejb,weblogic会盲目地忽略ear的Manifest。因此,您必须将WAR库移动到APP-INF\lib或简单地移动到ear的lib目录,并在weblogic-application.xml中指定首选包apache-commons-lang。无论如何,不要认为这是一个有效的解决方案(特别是当您不想仅仅为了创建一个ear而创建它时)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8654862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档