Camel Components for Google App Engine
Warning |
---|
This component is deprecated and will be removed form Camel 2.18 onwards. |
Tip | ||
---|---|---|
| ||
|
The Camel components for Google App Engine (GAE) are part of the camel-gae
project and provide connectivity to GAE's cloud computing services. They make the GAE cloud computing environment accessible to applications via Camel interfaces. Following this pattern for other cloud computing environments could make it easier to port Camel applications from one cloud computing provider to another. The following table lists the cloud computing services provided by Google App Engine and the supporting Camel components. The documentation of each component can be found by following the link in the Camel Component column.
Div | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||
|
...
...
...
Not supported yet.
|
Camel context
Setting up a SpringCamelContext
on Google App Engine differs between Camel 2.1 and higher versions. The problem is that usage
Camel context
Usage of the CamelContext
implementations org.apache.camel.impl.DefaultCamelContext
and org.apache.camel.spring.SpringCamelContext
on GAE is not possible out of the box. JMX must be disabled because the javax.management
package is not part of the GAE JRE. Usage of the Camel-specific Spring configuration XML schema from the http://camel.apache.org/schema/spring
namespace doesn't work either. Camel uses a JAXB-dependent bean definition parser but JAXB is (currently) not supported by GAE. To work around these restrictions camel-gae
provides namespace requires JAXB and Camel 2.1 depends on a Google App Engine SDK version that doesn't support JAXB yet. This limitation has been removed since Camel 2.2.
JMX must be disabled in any case because the javax.management
package isn't on the App Engine JRE whitelist.
Camel 2.1
camel-gae
2.1 comes with the following CamelContext
implementations.
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<beans xmlns="http://www.springframework.org/schema/beans"
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-2.5.xsd">
<bean id="camelContext"
class="org.apache.camel.component.gae.context.GaeSpringCamelContext">
<property name="routeBuilder" ref="myRouteBuilder" />
</bean>
<bean id="myRouteBuilder"
class="org.example.MyRouteBuilder">
</bean>
</beans>
|
Alternatively, use the routeBuilders
property of the GaeSpringCamelContext
for setting a list of route builders. Using this approach, a SpringCamelContext
can be configured on GAE without the need for JAXB.
Camel 2.2 or higher
With Camel 2.2 or higher, applications can use the http://camel.apache.org/schema/spring
namespace for configuring a SpringCamelContext
but still need to disable JMX. Here's an example.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:camel="http://camel.apache.org/schema/spring"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd">
<camel:camelContext id="camelContext">
<camel:jmxAgent id="agent" disabled="true" />
<camel:routeBuilder ref="myRouteBuilder"/>
</camel:camelContext>
<bean id="myRouteBuilder"
class="org.example.MyRouteBuilder">
</bean>
</beans>
|
Anchor | ||||
---|---|---|---|---|
|
The web.xml
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<servlet>
<servlet-name>CamelServlet</servlet-name>
<servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>appctx.xml</param-value>
</init-param>
</servlet>
<!--
Mapping used for external requests
-->
<servlet-mapping>
<servlet-name>CamelServlet</servlet-name>
<url-pattern>/camel/*</url-pattern>
</servlet-mapping>
<!--
Mapping used for web hooks accessed by task queueing service.
-->
<servlet-mapping>
<servlet-name>CamelServlet</servlet-name>
<url-pattern>/worker/*</url-pattern>
</servlet-mapping>
</web-app>
|
...