Posts Tagged ‘Apache Camel’
How to Deserialize Objects with Apache Camel 2.8
import org.apache.camel.builder.RouteBuilder;
public final class SampleRouteBuilder extends RouteBuilder {
@Override
public void configure() {
from(...).unmarshal().serialization();
}
}
If you need to unmarshal an object that isn’t available to the camel-core bundle, you need enabling dynamic-import for it with the dev:dynamic-import command or using a custom processor.
How to Serialize Objects with Apache Camel 2.8
import org.apache.camel.builder.RouteBuilder;
public final class SampleRouteBuilder extends RouteBuilder {
@Override
public void configure() {
from(...).marshal().serialization();
}
}
How to Create an Apache CXF SOAP Proxy in Apache Camel 2.8 with Apache Felix Maven Bundle Plugin 2.3.5
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>br.eti.fernandoribeiro.sample</groupId>
<artifactId>sampleroute</artifactId>
<packaging>bundle</packaging>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-cxf</artifactId>
<version>2.8.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.5</version>
<extensions>true</extensions>
<configuration>
<instructions>
<DynamicImport-Package>*</DynamicImport-Package> <!-- replacing several Apache CXF imports -->
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>
SampleService.wsdl
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://www.fernandoribeiro.eti.br/ws/sample" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.fernandoribeiro.eti.br/ws/sample" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:schema elementFormDefault="qualified" targetNamespace="http://www.fernandoribeiro.eti.br/ws/sample">
<xs:element name="Sample">
<xs:complexType />
</xs:element>
<xs:element name="SampleResponse">
<xs:complexType />
</xs:element>
</xs:schema>
</wsdl:types>
<wsdl:message name="Sample">
<wsdl:part name="Sample" element="tns:Sample" />
</wsdl:message>
<wsdl:message name="SampleResponse">
<wsdl:part name="SampleResponse" element="tns:SampleResponse" />
</wsdl:message>
<wsdl:portType name="SamplePortType">
<wsdl:operation name="SampleOperation">
<wsdl:input message="tns:Sample" />
<wsdl:output message="tns:SampleResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="SampleSoapBinding" type="tns:SamplePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="SampleOperation">
<soap:operation soapAction="" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="SampleService">
<wsdl:port name="SamplePort" binding="tns:SampleSoapBinding">
<soap:address location="http://ws.fernandoribeiro.eti.br/SampleService" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:camel="http://camel.apache.org/schema/spring" xmlns:cxf="http://camel.apache.org/schema/cxf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd">
<bean id="routeBuilder" class="br.eti.fernandoribeiro.sample.SampleRouteBuilder" />
<camel:camelContext>
<camel:routeBuilder ref="routeBuilder" />
</camel:camelContext>
<cxf:cxfEndpoint id="cxfEndpoint" address="http://0.0.0.0:8080/ws/SampleService" wsdlURL="wsdl/SampleService.wsdl" endpointName="sample:SamplePort" serviceName="sample:SampleService" xmlns:sample="http://www.fernandoribeiro.eti.br/sample" />
</beans>
How to Configure Routes with Property Files in FUSE 4.4.1
1) Create the <Install Dir>/etc/sample.cfg file:
key=value
2) Use the properties in your beans.xml files:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:camel="http://camel.apache.org/schema/spring" xmlns:context="http://www.springframework.org/schema/context" xmlns:osgix="http://www.springframework.org/schema/osgi-compendium" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/osgi-compendium http://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium.xsd">
<osgix:cm-properties id="config" persistent-id="sample" />
<context:property-placeholder properties-ref="config" />
<bean id="routeBuilder" class="br.eti.fernandoribeiro.sample.SampleRouteBuilder">
<property name="property" value="${key}" />
</bean>
<camel:camelContext>
<camel:routeBuilder ref="routeBuilder" />
</camel:camelContext>
</beans>
http://static.springsource.org/osgi/docs/current/reference/html/compendium.html#compendium:cm:props
How to Route by Apache CXF Operation in Apache Camel 2.8
import org.apache.camel.builder.RouteBuilder;
public final class SampleRouteBuilder extends RouteBuilder {
public void configure() {
from("cxf:bean:cxfEndpoint").choice().when(simple("${property.jaxwsContext[javax.xml.ws.wsdl.operation]} == '{http://www.fernandoribeiro.eti.br}FirstOperation'}")).when(simple("${property.jaxwsContext[javax.xml.ws.wsdl.operation]} == '{http://www.fernandoribeiro.eti.br}SecondOperation'}"));
}
}
How to Change the Log Level of upic-openedge 1.0 in Apache ServiceMix
1) Add the following line to <Install Dir>/etc/org.ops4j.pax.logging.cfg:
log4j.category.upic-openedge=WARN
2) Restart the ESB.
Improvement to Apache Camel 2.8
It should support passing context parameters to camel-restlet.
https://issues.apache.org/jira/browse/CAMEL-4653 (vote for it!)
Improvement to Apache Camel 2.8.1
The removeProperty and getProperty methods should be aligned.
https://issues.apache.org/jira/browse/CAMEL-4462 (vote for it!)
Issue with Apache Camel 2.7.1
If you get the Warning: Both fault and exception exists on the exchange, its best practice to only set one of them warning, you may want to remove the exception from the exchange in your error handlers.
Bug in FUSE 4.4
The \system\org\apache\camel\karaf\apache-camel\2.7.1-fuse-00-43\apache-camel-2.7.1-fuse-00-43-features.xml file should actually read:
<feature name='camel-restlet' version='2.7.1-fuse-00-43' resolver='(obr)'> <feature version='2.7.1-fuse-00-43'>camel-core</feature> <bundle>mvn:org.apache.camel/camel-restlet/2.7.1-fuse-00-43</bundle> <bundle dependency="true">mvn:http://maven.restlet.org!org.restlet.jse/org.restlet/2.0.5</bundle> </feature>
I don’t have access for creating an issue.