79.10. CXF 전송 계층에 Camel 통합
Camel Tranport를 CXF 버스에 포함하려면 CamelTransportFactory를 사용합니다. Java 및 Spring에서 이 작업을 수행할 수 있습니다.
79.10.1. Spring에서 Camel Transport 설정 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
특별한 항목을 구성하려면 applicationcontext에서 다음 코드 조각을 사용할 수 있습니다. 카멜 전송만 활성화하려는 경우 애플리케이션 컨텍스트에서는 아무것도 수행할 필요가 없습니다. 앱에서 camel-cxf-transport>-< (또는 camel-cxf.jar 미만의 경우 camel-cxf.jar를 포함 하는 즉시 앱에 cxf)를 스캔하고 CamelTransportFactory를 로드합니다.
<!-- you don't need to specify the CamelTransportFactory configuration as it is auto load by CXF bus -->
<bean class="org.apache.camel.component.cxf.transport.CamelTransportFactory">
<property name="bus" ref="cxf" />
<property name="camelContext" ref="camelContext" />
<!-- checkException new added in Camel 2.1 and Camel 1.6.2 -->
<!-- If checkException is true , CamelDestination will check the outMessage's
exception and set it into camel exchange. You can also override this value
in CamelDestination's configuration. The default value is false.
This option should be set true when you want to leverage the camel's error
handler to deal with fault message -->
<property name="checkException" value="true" />
<property name="transportIds">
<list>
<value>http://cxf.apache.org/transports/camel</value>
</list>
</property>
</bean>
79.10.2. 프로그래밍 방식으로 Camel Transport 통합 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
Camel 전송에서는 Camel 컨텍스트를 전송 팩토리로 설정하는 데 사용할 수 있는 setContext 메서드를 제공합니다. 이 공장이 효과를 발휘하려면 공장을 CXF 버스에 등록해야합니다. 여기 전체 예제가 있습니다.
import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
import org.apache.cxf.transport.ConduitInitiatorManager;
import org.apache.cxf.transport.DestinationFactoryManager;
...
BusFactory bf = BusFactory.newInstance();
Bus bus = bf.createBus();
CamelTransportFactory camelTransportFactory = new CamelTransportFactory();
// set up the CamelContext which will be use by the CamelTransportFactory
camelTransportFactory.setCamelContext(context)
// if you are using CXF higher then 2.4.x the
camelTransportFactory.setBus(bus);
// if you are lower CXF, you need to register the ConduitInitiatorManager and DestinationFactoryManager like below
// register the conduit initiator
ConduitInitiatorManager cim = bus.getExtension(ConduitInitiatorManager.class);
cim.registerConduitInitiator(CamelTransportFactory.TRANSPORT_ID, camelTransportFactory);
// register the destination factory
DestinationFactoryManager dfm = bus.getExtension(DestinationFactoryManager.class);
dfm.registerDestinationFactory(CamelTransportFactory.TRANSPORT_ID, camelTransportFactory);
// set or bus as the default bus for cxf
BusFactory.setDefaultBus(bus);