Oracle 10g Webapp中的JAXB 2

时间:2008-09-25 09:56:01

标签: java oracle oracle10g jaxb classpath

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

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

3 个答案:

答案 0 :(得分: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。我自己没试过那个......

答案 1 :(得分: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>

...包含您要跳过的包裹。

答案 2 :(得分:0)

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