【问题标题】:CXF on WebLogic: JAXBException - property not supportedWebLogic 上的 CXF:JAXBException - 不支持属性
【发布时间】:2012-06-20 12:35:18
【问题描述】:

我已经使用 cxf-codegen-plugin 生成了一个 Web 服务客户端,并且我在本地运行此代码很好,它连接到 Web 服务。

当我尝试将我的应用程序部署到我们的 WebLogic 服务器时,问题就出现了。当我的*ServiceImplService 类尝试实例化时,会抛出以下异常:

Caused by: javax.xml.bind.JAXBException: property "supressAccessorWarnings" is not supported

根据我收集到的信息,这可能源于 WebLogic 提供了一些 jaxb 相关类的旧版本。我(分别)尝试将com.sun.xml.bind.*javax.xml.*javax.jws.* 以及在绝望中甚至将com.sun.* 添加到prefer-application-packagesprefer-application-packages 元素weblogic-application.xml,但仍然是相同的结果。

有谁知道什么可以解决这个问题,或者对调试有什么建议?


一些附加信息,以防相关

  • CXF 版本:2.6.1
  • WebLogic 版本:10.3.4.0

weblogic-application.xml,没有我尝试过的任何修改:

<?xml version="1.0" encoding="ISO-8859-1"?>
<wls:weblogic-application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wls="http://www.bea.com/ns/weblogic/90" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/j2ee_1_4.xsd http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-application.xsd">
    <wls:prefer-application-packages>
        <wls:package-name>org.hibernate.*</wls:package-name>
        <wls:package-name>antlr.*</wls:package-name>
        <wls:package-name>org.springframework.*</wls:package-name>
        <wls:package-name>net.bull.*</wls:package-name>   
        <wls:package-name>org.apache.commons.*</wls:package-name>
    </wls:prefer-application-packages>
</wls:weblogic-application>

抛出的异常:

Caused by: javax.xml.bind.JAXBException: property "supressAccessorWarnings" is not supported
    at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:118)
    at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:202)
    at sun.reflect.GeneratedMethodAccessor391.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:128)
    at javax.xml.bind.ContextFinder.find(ContextFinder.java:277)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:372)
    at weblogic.wsee.jaxws.tubeline.ConfigReaderTubelineDeploymentListener.readConfigFile(ConfigReaderTubelineDeploymentListener.java:164)
    at weblogic.wsee.jaxws.tubeline.ConfigReaderTubelineDeploymentListener.init(ConfigReaderTubelineDeploymentListener.java:52)
    at weblogic.wsee.jaxws.spi.WLSServiceDelegate$WLSTubelineDeploymentListenerRepository.<init>(WLSServiceDelegate.java:323)
    at weblogic.wsee.jaxws.spi.WLSServiceDelegate.<init>(WLSServiceDelegate.java:94)
    at weblogic.wsee.jaxws.spi.WLSProvider$ServiceDelegate.<init>(WLSProvider.java:586)
    at weblogic.wsee.jaxws.spi.WLSProvider.createServiceDelegate(WLSProvider.java:120)
    at weblogic.wsee.jaxws.spi.WLSProvider.createServiceDelegate(WLSProvider.java:112)
    at weblogic.wsee.jaxws.spi.WLSProvider.createServiceDelegate(WLSProvider.java:83)
    at javax.xml.ws.Service.<init>(Service.java:56)
    at <my package name>.PutSituationServiceImplService.<init>(PutSituationServiceImplService.java:47)
    ... 7 more

【问题讨论】:

    标签: java weblogic cxf weblogic-10.x


    【解决方案1】:

    如果有人提出更好的答案,我会将其标记为已选,但现在:

    这似乎源于 WebLogic 提供 JAXB 2.0 和 JAXB 2.1 的事实,而这个版本的 CXF 使用了 JAXB 2.2 功能。

    据我了解,不可能使用prefer-package-elements 来选择 1) 已导入 JDK 的类或 2) sun 内部类使用。您可以选择将 jar 文件放在 JDK/JRE 的认可文件夹中,但我不想走这条路。

    目前我已将 CXF 降级到 v.2.2.12,这是使用 JAXB 2.1 的最后一个 CXF 版本。

    【讨论】:

      【解决方案2】:

      相同的错误是由 METRO 2.0 库引起的。当您尝试从 wdsl 创建 Web 服务时,此库会自动添加到 NetBeans 项目中。

      因为我不需要这个库,所以我把它从项目中删除了。

      【讨论】:

        猜你喜欢
        • 2012-12-12
        • 1970-01-01
        • 2021-12-29
        • 2023-04-03
        • 1970-01-01
        • 2021-07-15
        • 2011-10-25
        • 2011-07-03
        • 1970-01-01
        相关资源
        最近更新 更多