2017-06-19 5 views
0

私はこのような春のファイルで定義されたキャメルCXFエンドポイントを、作業している:Camel CXFのレストエンドポイントを使用するときにJAXB注釈クラスを指定する方法は?

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

それが正常に動作し、自動的に私が@XmlRootElementと@XmlSeeAlsoで注釈されているJAXBクラスを拾うことができます。同じエンドポイントの定義が2つのプロジェクトで使用されているので、そのサブプロジェクトの他のクラスにアクセスする必要があるため、クラスの一部を適切なサブプロジェクトに移動したいと考えています。この問題を解決するには、トップレベルのクラスの@XmlSeeAlsoアノテーションからそれらを削除する必要があります。これを試してみましたが、サブプロジェクトでエンドポイントがインスタンス化されたときに作成されるJAXBコンテキストは、クラスについての知識がありません。これを解決する最も簡単な方法は何ですか?最初は、JAXBコンテキストにCXFによって与えられる1つ以上の追加クラスを指定できるプロパティを見つけるのは簡単だろうと思っていましたが、CXFドキュメントで与えられたconfigをどのように適用するかわかりませんキャメルの文脈。例えば、ここで設定:「extraClass」プロパティを使用する方法について

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

トーク:

<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> 

私はキャメルでルートを作成するときにこれを適用する方法を見ることができませんが?

答えて

0
<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> 
+0

私は同様の状況に陥り、このコードで作業しています。チャームのように機能します。 – user8198874

関連する問題