Oracle 10g Webapp中的JAXB 2
时间:2020-03-06 14:42:46 来源:igfitidea点击:
我有一个使用JAXB 2的Web应用程序。当部署在Oracle 10g应用服务器上时,一旦尝试封送XML文件,我就会收到错误消息。事实证明,Oracle在一个罐子中包含了JAXB 1,该罐子被重命名为" xml.jar"。
如何强制我的Web应用程序使用我在WEB-INF / lib中部署的jaxb jar版本,而不是Oracle强制将其放入类路径中的版本,理想情况下是通过配置,而不必弄乱代码中的类加载器?
解决方案
使用与Oracle实例不同的JVM,并确保其库不在类路径中。
我假设我们使用以前的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地狱是因为它"全有或者全无"。这里似乎还有另一种更有条件的方式。我还没尝试过那个...
如果我们仍在使用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>
...以及我们要跳过的软件包。