【问题标题】:JAXB 2 in an Oracle 10g WebappOracle 10g Web 应用程序中的 JAXB 2
【发布时间】:2010-09-13 01:01:34
【问题描述】:

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

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

【问题讨论】:

    标签: java oracle oracle10g jaxb classpath


    【解决方案1】:

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

    【讨论】:

    • 不要认为这真的是一个选择 - webapp 部署在 Oracle 10g 应用程序容器中,因此与该 JVM 相关联。
    【解决方案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。不过我自己没试过……

    【讨论】:

    • 一个很好的答案,可能会在任何理智的世界中解决我的问题。原来我们曾经有过这样的设置(我没有意识到 10g 是基于 Weblogic 的),但我的一个团队告诉我,它被删除是因为它破坏了其他东西。 DLL 地狱又来了。叹。还是谢谢。
    • 好吧,自相矛盾,我已经尝试配置 10g 来更喜欢我的 webapp 类,现在得到一个不同的错误 - 请参阅这个问题:stackoverflow.com/questions/133993/…
    【解决方案3】:

    如果您仍在使用 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>
    

    ...你想跳过的包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-08
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多