【问题标题】:How to specify JAXB annotated classes when using Camel CXF rest endpoint?使用 Camel CXF 休息端点时如何指定 JAXB 注释类?
【发布时间】:2017-06-19 17:18:59
【问题描述】:

我有工作 Camel CXF 端点,在这样的 spring 文件中定义:

<cxf:cxfEndpoint id="myEndpoint" address="myAddress"
  serviceClass="myServiceClass"
  loggingFeatureEnabled="true" skipFaultLogging="true" >

它工作正常,可以自动获取我用@XmlRootElement 和@XmlSeeAlso 注释的JAXB 类。两个项目使用相同的端点定义,我想将一些类移动到它们相应的子项目中,因为我确实需要它们访问该子项目中的其他类。问题是,要做到这一点,我必须从顶级类的 @XmlSeeAlso 注释中删除它们。我已经尝试过了,并且在子项目中实例化端点时创建的 JAXB 上下文不知道这些类。解决此问题的最简单方法是什么?最初我认为很容易找到一个属性,该属性允许我指定一个或多个由 CXF 提供给 JAXB 上下文的附加类,但是我看不到如何将 CXF 文档中给出的配置应用到骆驼语境。例如这里配置:

http://cxf.apache.org/docs/jax-rs-data-bindings.html

谈论使用“extraClass”属性:

<bean id="jaxb" class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
  <property name="extraClass">
     <list>
       <value>org.apache.cxf.jaxrs.resources.SuperBook</value>  
     </list>
  </property>
</bean>

但是,在 Camel 中创建路线时,我看不到如何应用它?

【问题讨论】:

    标签: jaxb apache-camel jax-rs cxf


    【解决方案1】:
     <cxf:dataBinding>
                <bean id="extraJaxBClasses" class="org.apache.cxf.jaxb.JAXBDataBinding">
                    <property name="extraClass">
                        <list>
                            <value>your class here</value>
                            <value>your class here</value>
                        </list>
                    </property>
                </bean>
            </cxf:dataBinding>
    

    【讨论】:

    • 我遇到了类似的情况,我得到了它与这段代码一起工作 - 它就像一个魅力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多