以下camel-CXF中的不同标签是做什么的

时间:2016-04-26 08:54:59

标签: apache-camel

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:cxf="http://camel.apache.org/schema/cxf"
       xmlns:jaxrs="http://cxf.apache.org/jaxrs"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd
       http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
    ">

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>

  <!-- Defined the real JAXRS back end service  -->
  <jaxrs:server id="restService"
                address="http://localhost:${CXFTestSupport.port2}/CxfRsRouterTest/rest" 
                staticSubresourceResolution="true">
    <jaxrs:serviceBeans>
      <ref bean="customerService"/>
    </jaxrs:serviceBeans>       
  </jaxrs:server>

  <bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.json.JSONProvider"/>

  <bean id="customerService" class="org.apache.camel.component.cxf.jaxrs.testbean.CustomerService" />

  <!-- Defined the server endpoint to create the cxf-rs consumer -->
  <cxf:rsServer id="rsServer" address="http://localhost:${CXFTestSupport.port1}/CxfRsRouterTest/route"
    serviceClass="org.apache.camel.component.cxf.jaxrs.testbean.CustomerService" 
    loggingFeatureEnabled="true" loggingSizeLimit="20" skipFaultLogging="true">
    <cxf:providers>
       <ref bean="jsonProvider"/>
    </cxf:providers>
  </cxf:rsServer>

  <!-- Defined the client endpoint to create the cxf-rs consumer -->
  <cxf:rsClient id="rsClient" address="http://localhost:${CXFTestSupport.port2}/CxfRsRouterTest/rest"
    serviceClass="org.apache.camel.component.cxf.jaxrs.testbean.CustomerService"
    loggingFeatureEnabled="true" skipFaultLogging="true">
    <cxf:providers>
       <ref bean="jsonProvider"/>
    </cxf:providers>
  </cxf:rsClient>

  <!-- The camel route context -->
  <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
    <route>
       <!-- Just need to ignoreDeleteMethodMessageBody -->
       <from uri="cxfrs://bean://rsServer"/>
       <to uri="log:body?level=INFO"/>
       <to uri="cxfrs://bean://rsClient?ignoreDeleteMethodMessageBody=true"/>
    </route>
  </camelContext>

</beans>

在Camel Docs中,他们说cxf:rsServer是一个REST消费者,其中cxf:rsClient是一个REST生产者,但代码反之亦然。 另外,我想了解Jaxrs标记和cxf:rsserver和cxf:rsclient标记之间的区别。

1 个答案:

答案 0 :(得分:0)

  • jaxrs:server:创建基本端点服务。
  • cxf:rsServer:是用于创建REST端点的camel组件。它会将请求转换为普通的Java对象。
  • cxf:rsClient:与rsServer相反,它将java对象转换为REST请求。

    <camelContext> <route> <from uri="cxfrs://bean://rsServer" /> <to uri="log:body?level=INFO" /> <to uri="cxfrs://bean://..=true" /> </route> </camelContext>

如果我们看一下代码示例,我们会看到这是一个代理。我们收到了一个REST请求,我们记录它然后转发它。

 <cxf:rsServer id="rsServer" address="http://localhost:${CXFTestSupport.port1}/CxfRsRouterTest/route"
    serviceClass="org.apache.camel.component.cxf.jaxrs.testbean.CustomerService" 
    loggingFeatureEnabled="true" loggingSizeLimit="20" skipFaultLogging="true">
    <cxf:providers>
       <ref bean="jsonProvider"/>
    </cxf:providers>
  </cxf:rsServer>

  <cxf:rsClient id="rsClient" address="http://localhost:${CXFTestSupport.port2}/CxfRsRouterTest/rest"
    serviceClass="org.apache.camel.component.cxf.jaxrs.testbean.CustomerService"
    loggingFeatureEnabled="true" skipFaultLogging="true">
    <cxf:providers>
       <ref bean="jsonProvider"/>
    </cxf:providers>
  </cxf:rsClient>

这些标签用于在camel-route之外配置你的cxf组件。

希望得到这个帮助。