3

我有一个使用JAXB 2的 Web 应用程序。在Oracle 10g 应用服务器上部署时,我一尝试编组 XML 文件就会出错。事实证明,Oracle 将JAXB 1包含在一个偷偷改名为“xml.jar”的 jar 中。

如何强制我的 webapp 使用我部署的 jaxb jar 的版本,WEB-INF/lib而不是 Oracle 强制进入类路径的版本,最好是通过配置而不是在我的代码中弄乱类加载器?

4

3 回答 3

2

我假设您使用以前的 BEA Weblogic Server?

您可以将 weblogic.xml 文件添加到您的 WEB-INF,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
    <container-descriptor>
   <prefer-web-inf-classes>true</prefer-web-inf-classes>
    </container-descriptor>
</weblogic-web-app>

(在回复评论时,我还没有足够的声誉:-))

确实,DLL 地狱,因为它是“全有或全无”。似乎还有另一种更有条件的方式,描述为here。虽然我自己没有试过那个...

于 2008-09-25T10:05:53.287 回答
1

如果您仍在使用 Oracle 的 OC4J,则将他们的 orion-application.xml 包含在您的 EAR 的 META-INF 中。它应该看起来像......

<?xml version="1.0" encoding="UTF-8"?>
<orion-application>
    <imported-shared-libraries>
        <remove-inherited name="skip.this.package"/>
    </imported-shared-libraries>
</orion-application>

...您要跳过的包裹。

于 2009-02-13T20:55:29.013 回答
0

使用与您的 Oracle 实例不同的 JVM,并确保它们的库不在您的类路径中。

于 2008-09-25T09:58:52.993 回答