Apache Camel: Integration Nirvana

Size: px
Start display at page:

Download "Apache Camel: Integration Nirvana"

Transcription

1 Apache Camel: Integration Nirvana Jonathan Anstey, Senior Engineer, Progress Software Corporation 3/20/2009 Most up to date version available at DZone

2 Introduction Take any integration project and you have multiple applications talking over multiple transports on multiple platforms. As you can imagine, in large enterprise applications this can get complex very fast. Much of the complexity stems from two issues: 1. dealing with the specifics of applications and transports, and 2. coming up with good solutions to integration problems. Making your applications speak transports and APIs is relatively easy on its own. I'm sure everyone knows how to send JMS messages to their broker of choice; though it still requires in depth knowledge of the JMS specification, which many developers may not have. On top of that, what happens when you want to route that JMS message to another application? You then have to take care of mapping the JMS message to the application plus handle any new concepts related to the application. Add a dozen other applications into the mix and you've got quite a headache on your hands. Ignoring the mechanics of how to connect with multiple transports and APIs, we can focus on the high level design of how applications interact. Fortunately, most solutions to enterprise integration problems have been formalized already. Gregor Hohpe and Bobby Woolfe's book, Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions, boils down years of experience from enterprise architects into a set of sixty five Enterprise Integration Patterns (EIPs). This is great but we still have to hand code all parts of these patterns; these are not packaged solutions, only recommendations. Apache Camel was created with the intention of addressing these two issues. In this article I'll show you how it actually does this. What is Camel? Apache Camel is an open source Java framework that focuses on making integration easier and more accessible to developers. It does this by providing: concrete implementations of all the widely used EIPs connectivity to a great variety of transports and APIs easy to use Domain Specific Language (DSL) to wire EIPs and transports together Figure 1 shows how these three items actually map to Camel concepts. To give you a good understanding of how Camel is organized, we will discuss Components, Endpoints, Processors, and the Domain Specific Language (DSL). There is of course a lot more going on here under the hood but we'll leave that for another discussion.

3 Figure 1: High level view of Camel's architecture. Components are the extension point in Camel to add connectivity to other systems. The core of Camel is very small to keep dependencies low, promote embeddability, etc. and as a result contains only 12 essential components. There are over 60 components outside the core. To expose these systems to the rest of Camel, Components provide an Endpoint interface. By using URIs, you can send or receive messages on Endpoints in a uniform way. For instance, to receive messages from a JMS queue aqueue and send them to a file system directory "c:/tmp", you could use URIs like "jms:aqueue" and "file:c:\tmp". Processors are used to manipulate and mediate messages in between Endpoints. All of the EIPs are defined as Processors or sets of Processors. As of writing, Camel supports 41 patterns from the EIP book, 6 other integration patterns, and many other useful Processors. To wire Processors and Endpoints together, Camel defines a Java DSL. The term DSL is used a bit loosely here as it usually implies the involvement of a compiler or interpreter that can process keywords specific to a particular domain. In Camel, DSL means a fluent Java API that contains methods named like terms from the EIP book. Its best explained with an example from("jms:aqueue").filter().xpath("/person[@name='jon']").to("file:c:\tmp"); Here we define a routing rule in a single Java statement that will consume messages from the "jms:aqueue" Endpoint, send them through a Message Filter Processor, which will then send on messages passing the XPath condition to the "file:c:\tmp" endpoint. Messages failing the condition will be dropped. You can also configure your routes in a XML-based Spring configuration file. This configuration file is a lot more verbose and less auto complete friendly than the Java DSL;

4 many prefer it though because of its direct access to Spring concepts and no requirement for compilation after changes. Here is what the earlier example would look like in Spring: <camelcontext xmlns=" <route> <from uri="jms:aqueue"/> <filter> <to uri="file:c:\tmp"/> </filter> </route> </camelcontext> These are the concepts that Camel was built upon. Since then many other interesting features have been added. Details of these are left up to the reader to investigate. To get you started, some of these include: Pluggable data formats and type converters for easy message transformation between Artix Data Services, CSV, EDI, Flatpack, HL7, JAXB, JSON, XmlBeans, XStream, Zip, etc. Pluggable languages to create expressions or predicates for use in the DSL. Some of these languages include: EL, JXPath, Mvel, OGNL, BeanShell, JavaScript, Groovy, Python, PHP, Ruby, SQL, XPath, XQuery, etc. Support for the integration of beans and POJOs in various places in Camel. Excellent support for testing distributed and asynchronous systems using a messaging approach and much more... Example A motorcycle parts business, Rider Auto Parts, supplies parts to motorcycle manufacturers. Over the years they've changed the way they receive orders several times. Initially, orders were placed by uploading CSV files to an FTP server. The message format was later changed to XML. Currently they provide a web site to submit orders as XML messages over HTTP. All of these messages are converted to an internal POJO format before processing. Rider Auto Parts states to any new customers to use the web interface to place orders. However, because of existing agreements with customers, they must keep all the old message formats and interfaces up and running. Solution using EIPs Rider Auto Parts faces a pretty common problem; over years of operation businesses acquire software baggage in the form of transports/data formats that are popular at the time. Using patterns from the EIP book we can envision the solution as something like Figure 2.

5 Figure 2: This shows the solution to Rider Auto Parts integration problem using notation from the Enterprise Integration Patterns book. So we have several patterns in use here. 1. There are two Message Endpoints; one for FTP connectivity and another for HTTP. 2. Messages from these endpoints are fed into the incomingorderqueue Message Channel 3. The messages are consumed from the incomingorderqueue and routed by a Content- Based Router to one of two Message Translators. As the EIP name implies, the routing destination depends on the content of the message. In this case we need to route based on whether the content is a CSV or XML file. 4. Both Message Translators convert the message content into a POJO, which is fed into the orderqueue Message Channel. The whole section that uses a Content-Based Router and several Message Translators is referred to as a Normalizer. This composite pattern has a unique graphic to depict it but was left out here in favor of its sub-patterns to make things clearer. Implementation using Camel As mentioned before, Camel has a small core set of components included by default. The rest of the components exist as separate modules. In applications that require many types

6 of connectivity it is useful to figure out what Camel modules to include. Listing 1 shows the dependencies using Apache Maven for the Camel implementation of the Rider Auto Parts example. Of course, you don't need to use Apache Maven for dependencies - it is just the easiest way to rapidly add new dependencies to your applications. The list of dependencies includes support for core Camel, ActiveMQ, JAXB marshaling, CSV marshaling, and HTTP. To make the example easier to try out, I've opted to use the File endpoint instead of the FTP. If we were using the FTP endpoint we would need to add a dependency on the camel-ftp module as well. Listing 1: Maven dependencies for the Camel implementation <dependencies> <!-- Core Camel support --> <groupid>org.apache.camel</groupid> <artifactid>camel-core</artifactid> <version>${camel-version</version> <groupid>org.apache.camel</groupid> <artifactid>camel-spring</artifactid> <version>${camel-version</version> <!-- ActiveMQ connectivity for Camel --> <groupid>org.apache.activemq</groupid> <artifactid>activemq-camel</artifactid> <version>${activemq-version</version> <!-- Add support for JAXB marshaling --> <groupid>org.apache.camel</groupid> <artifactid>camel-jaxb</artifactid> <version>${camel-version</version> <!-- Add support for CSV marshaling --> <groupid>org.apache.camel</groupid> <artifactid>camel-csv</artifactid> <version>${camel-version</version> <!-- Add support for HTTP --> <groupid>org.apache.camel</groupid> <artifactid>camel-jetty</artifactid> <version>${camel-version</version> <!-- Embedded ActiveMQ broker --> <groupid>org.apache.activemq</groupid> <artifactid>activemq-core</artifactid> <version>${activemq-version</version> <groupid>org.apache.xbean</groupid>

7 <artifactid>xbean-spring</artifactid> <version>${xbean-spring-version</version> </dependencies> While it is perfectly legitimate to use Camel as a standalone Java application, it is often useful to embed it in a container. In this case, we will be loading Camel from Spring. The Spring beans XML file is shown in Listing 2. First we start an embedded Apache ActiveMQ broker and connect Camel to it. We also load up some helper beans that we will reference from the DSL. Finally, the camelcontext element tells Camel to look for routes in the org.fusesource.camel package. Routes are Java classes that extend the RouteBuilder class in Camel. Listing 2: Spring XML file that configures an embedded ActiveMQ broker, several beans used in the Camel route, and initializes the Camel Context to search for routes in the org.fusesource.camel package. <beans xmlns=" xmlns:xsi=" xsi:schemalocation=" <broker xmlns=" usejmx="false" persistent="false"> <transportconnectors> <transportconnector uri="tcp://localhost:61616" /> </transportconnectors> </broker> <bean id="jms" class="org.apache.activemq.camel.component.activemqcomponent"> <property name="brokerurl" value="tcp://localhost:61616"/> </bean> <bean id="normalizer" class="org.fusesource.camel.ordernormalizer"/> <bean id="orderhelper" class="org.fusesource.camel.orderhelper"/> <camelcontext xmlns=" <package>org.fusesource.camel</package> </camelcontext> </beans> The real meat of the Camel implementation lies in the OrderRouter class (shown in Listing 3). This class extends RouteBuilder, so it will be automatically picked up and loaded by Camel's runtime. Looking back at Figure 2, we need to receive orders from an FTP (substituted with File) and HTTP endpoint, formatted as shown in Listing 4. In the DSL we can specify these incoming endpoints with two from elements. Both from elements are connected to a to("jms:incomingorderqueue") element, which will send the messages to a queue on the ActiveMQ broker.

8 Listing 3: Route definitions for the example. The routing rules are specified using a fluent API, referred to as Camel's DSL. public class OrderRouter extends RouteBuilder public void configure() throws Exception { JaxbDataFormat jaxb = new JaxbDataFormat("org.fusesource.camel"); // Receive orders from two endpoints from("file:src/data?noop=true").to("jms:incomingorderqueue"); from("jetty: // Do the normalization from("jms:incomingorderqueue").convertbodyto(string.class).choice().when().method("orderhelper", "isxml").unmarshal(jaxb).to("jms:orderqueue").when().method("orderhelper", "iscsv").unmarshal().csv().to("bean:normalizer").to("jms:orderqueue"); In the case of the HTTP endpoint, there are a couple of extra things to mention. First off the HTTP client will be expecting a response from the application so we have to handle that. In Camel, we have full control over what the client gets back from the HTTP endpoint. Each response is determined by the last method in our current route definition (each Java statement is a route definition). In our case we use the transform method to set the response to the constant string "OK". Since we handle the response ourselves, we don t want any response to come from the JMS incomingorderqueue. To send to this queue in a fire-and-forget fashion we add the inonly modifier. It is important to note at this point that when writing Camel DSL in a modern Java IDE, selection of the next processing step is easy because of auto complete. The auto complete feature basically gives you a list of processors (i.e. EIPs) to choose from at any point in your route. Since fluent APIs chain methods together, the only method you need to remember is the from; all other methods are shown via auto complete. Listing 4: Incoming message formats; XML on the left, CSV on the right. <?xml version="1.0" encoding="utf-8"?> <order name="motor" amount="1"/> "name", "amount" "brake pad", "2" The next section of DSL in Listing 3 specifies the Normalizer, complete with Content-Based Router and two Message Translators. First we specify that we want to consume messages from the incomingorderqueue on the ActiveMQ broker. The content based routing of the messages is done with the choice and when methods. In our case, we want to send CSV messages to one Message Translator and XML messages to another. To check what type of message we have we will be using a simple Java bean shown in Listing 5. Of course, this is demonstration code only; for production cases you would want to add more thorough checking of content types.

9 Listing 5: Java bean that contains helper methods to be used in the DSL. public class OrderHelper { public boolean iscsv(string body) { return!body.contains("<?xml"); public boolean isxml(string body) { return body.contains("<?xml"); If the message has XML content, we use the JAXB data format to unmarshal the XML payload into an Order object. As shown in Listing 6, the Order object has JAXB annotations to describe the mapping to XML. You of course don't need to use JAXB here; it just makes things very easy as you don't have to do any nasty XML parsing by hand. Listing 6: The Order domain class with JAXB annotations for easy mapping to and public class Order implements Serializable private String private int amount; public Order() { public Order(String name, int amount) { this.name = name; this.amount = public String tostring() { return "Order[" + name + ", " + amount + "]"; For the transformation from CSV to Order object, we don't have a nice JAXB analogue. We do have support in Camel for unmarhsaling CSV content into a List though. We use this in combination with a custom bean to do the complete transformation. The OrderNormalizer bean shown in Listing 7 takes the List of Lists created by the CSV unmarshaler and creates a new Order object from it. Listing 7: Java bean that takes the CSV data and creates a new Order domain object from it. public class OrderNormalizer { public Order fromcsvtoorder(list<list<string>> body) { List<String> orderheaders = body.get(0); List<String> ordervalues = body.get(1); return new Order(orderValues.get(0), Integer.parseInt(orderValues.get(1))); At this point, successfully normalized messages are sent to the orderqueue for processing

10 by some other application at the Rider Auto Parts business. Conclusion In this article I've shown two common problems that an integration developer may face: dealing with the specifics of applications and transports, and coming up with good solutions to integration problems. The Apache Camel project provides a nice answer to both of these problems. As the example has shown, solving integration problems with Camel is straight forward and results in relatively concise code. In my opinion it is the closest thing to integration nirvana that we have today. Links 1. Apache Camel 2. FUSE Mediation Router (based on Apache Camel) 3. Enterprise Integration Patterns 4. Jon s Blog 5. Article source code - Author Jonathan Anstey is a senior engineer working for Progress Software Corporation specializing in the enterprise integration space. Jon focuses mostly on Apache Camel and its Progress endorsed likeness, FUSE Mediation Router. He also works on the Apache ActiveMQ and Apache ServiceMix projects.

Boss integration and automation. Tal Portal JBoss Enterprise Consultant

Boss integration and automation. Tal Portal JBoss Enterprise Consultant Boss integration and automation Tal Portal JBoss Enterprise Consultant talpor@matrix.co.il Agenda ESB Background JBoss Fuse ESB JBoss BPM Suite(BPM + BRMS) Pergola Approval Request Scenario Agenda ESB

More information

Service Oriented Integration With Apache ServiceMix

Service Oriented Integration With Apache ServiceMix Service Oriented Integration With Apache ServiceMix Bruce Snyder bsnyder@apache.org October 2008 Keystone, Colorado Bruce Snyder Service Oriented Integration With Apache ServiceMix Slide 1 Agenda Enterprise

More information

SOA-14: Continuous Integration in SOA Projects Andreas Gies

SOA-14: Continuous Integration in SOA Projects Andreas Gies Service Mix 4 Topologies Principal Architect http://www.fusesource.com http://open-source-adventures.blogspot.com About the Author Principal Architect PROGRESS - Open Source Center of Competence Degree

More information

Fuse ESB Enterprise Routing Expression and Predicate Languages

Fuse ESB Enterprise Routing Expression and Predicate Languages Fuse ESB Enterprise Routing Expression and Predicate Languages Version 7.1 December 2012 Integration Everywhere Routing Expression and Predicate Languages Version 7.1 Updated: 08 Jan 2014 Copyright 2012

More information

Camel User Guide. Apache ServiceMix Version 4.5.0

Camel User Guide. Apache ServiceMix Version 4.5.0 Camel User Guide Apache ServiceMix Version 4.5.0 1 1. Introduction Apache Camel is a powerful open source integration framework based on known Enterprise Integration Patterns with powerful Bean Integration.

More information

Taking Apache Camel For a Ride. Bruce Snyder 11 April 2008 Amsterdam, The Netherlands

Taking Apache Camel For a Ride. Bruce Snyder 11 April 2008 Amsterdam, The Netherlands Taking Apache Camel For a Ride Bruce Snyder 11 April 2008 Amsterdam, The Netherlands System Integration 2 3 Apache Camel http://activemq.apache.org/camel/ 4 What is Apache Camel? 5 Enterprise Integration

More information

See JAXB for details how you can control namespace prefix mappings when marshalling using SOAP data format.

See JAXB for details how you can control namespace prefix mappings when marshalling using SOAP data format. SOAP SOAP DataFormat Available as of Camel 2.3 SOAP is a Data Format which uses JAXB2 and JAX-WS annotations to marshal and unmarshal SOAP payloads. It provides the basic features of Apache CXF without

More information

Integration Patterns for Mission Critical System of. Systems. OpenSplice DDS. Julien ENOCH Engineering Team Lead PrismTech.

Integration Patterns for Mission Critical System of. Systems. OpenSplice DDS. Julien ENOCH Engineering Team Lead PrismTech. Integration Patterns for Mission Critical System of OpenSplice Systems Julien ENOCH Engineering Team Lead PrismTech julien.enoch@prismtech.com System Integration Challenges OpenSplice Subsystems integration

More information

Taking Apache Camel For a Ride

Taking Apache Camel For a Ride Taking Apache Camel For a Ride Bruce Snyder bsnyder@apache.org October 2008 Keystone, Colorado Bruce Snyder Taking Apache Camel for a Ride Slide 1 Taking Apache Camel For a Ride Bruce Snyder Taking Apache

More information

Red Hat JBoss Fuse Service Works Integration Recipes, Best Practices & Cheat Codes

Red Hat JBoss Fuse Service Works Integration Recipes, Best Practices & Cheat Codes Red Hat JBoss Fuse Service Works Integration Recipes, Best Practices & Cheat Codes Keith Babo SwitchYard Project Lead, Red Hat There is Still Time To Leave We will be talking integration and SOA If your

More information

Chapter 9. Inter-Bundle Communication

Chapter 9. Inter-Bundle Communication Chapter 9. Inter-Bundle Communication with the NMR While the OSGi framework provides a model of synchronous communication between bundles (through method invocations on OSGi services), it currently does

More information

Java Lounge. Integration Solutions madeeasy ComparisonofJava Integration Frameworks. Mario Goller

Java Lounge. Integration Solutions madeeasy ComparisonofJava Integration Frameworks. Mario Goller Java Lounge Integration Solutions madeeasy ComparisonofJava Integration Frameworks Mario Goller 28.05.2013 BASEL BERN LAUSANNE ZÜRICH DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MÜNCHEN STUTTGART

More information

JBI based ESB as backbone for SOI applications. Michael Wisler Zühlke Engineering AG Submission ID: 687

JBI based ESB as backbone for SOI applications. Michael Wisler Zühlke Engineering AG Submission ID: 687 JBI based ESB as backbone for SOI applications Michael Wisler Zühlke Engineering AG Submission ID: 687 Goal of this talk 2 This session brings the JBI (Java Business Integration) standard in contex t to

More information

SOA-14: Continuous Integration in SOA Projects Andreas Gies

SOA-14: Continuous Integration in SOA Projects Andreas Gies Tooling for Service Mix 4 Principal Architect http://www.fusesource.com http://open-source-adventures.blogspot.com About the Author Principal Architect PROGRESS - Open Source Center of Competence Degree

More information

Hiram Chirino Platform Architect June 5th Whats's new in Fuse 6.2

Hiram Chirino Platform Architect June 5th Whats's new in Fuse 6.2 Hiram Chirino Platform Architect June 5th 2015 Whats's new in Fuse 6.2 What is JBoss Fuse? JBoss Fuse: Red Hat JBoss Fuse Developer tools Management Console Cluster Management Management Hawtio Fabric8

More information

AMon A Monitoring System for ActiveMQ

AMon A Monitoring System for ActiveMQ A Monitoring System for ActiveMQ Joe Fernandez joe.fernandez@ttmsolutions.com Total Transaction Management, LLC 570 Rancheros Drive, Suite 140 San Marcos, CA 92069 760-591-0273 www.ttmsolutions.com 1 Designed

More information

Using beans with Camel

Using beans with Camel Using beans with Camel This chapter covers Understanding the Service Activator EIP How Camel looks up beans using registries How Camel selects bean methods to invoke Bean parameter binding with single

More information

ESB, OSGi, and the Cloud

ESB, OSGi, and the Cloud ESB, OSGi, and the Cloud Making it Rain with ServiceMix 4 Jeff Genender CTO Savoir Technologies Jeff Genender - Who is this Shmoe? Apache CXF JSR 316 - Java EE 6 Rules of Engagement Engage yourself! Agenda

More information

Enterprise Messaging With ActiveMQ and Spring JMS

Enterprise Messaging With ActiveMQ and Spring JMS Enterprise Messaging With ActiveMQ and Spring JMS Bruce Snyder bruce.snyder@springsource.com SpringOne 29 Apr 2009 Amsterdam, The Netherlands 1 Agenda Installing ActiveMQ Configuring ActiveMQ Using Spring

More information

RadBlue s S2S Quick Start Package (RQS) Developer s Guide. Version 0.1

RadBlue s S2S Quick Start Package (RQS) Developer s Guide. Version 0.1 RadBlue s S2S Quick Start Package (RQS) Developer s Guide Version 0.1 www.radblue.com April 17, 2007 Trademarks and Copyright Copyright 2007 Radical Blue Gaming, Inc. (RadBlue). All rights reserved. All

More information

Android Validating Xml Against Schema Java Example

Android Validating Xml Against Schema Java Example Android Validating Xml Against Schema Java Example I am working with XML and JAXB as I am unmarshalling and marshalling the XML into Java objects and vice versa. Now I am trying to validate our XML against.

More information

Ruby on Rails Welcome. Using the exercise files

Ruby on Rails Welcome. Using the exercise files Ruby on Rails Welcome Welcome to Ruby on Rails Essential Training. In this course, we're going to learn the popular open source web development framework. We will walk through each part of the framework,

More information

Service Oriented Integration With Apache ServiceMix. Bruce Snyder 21 Nov 2008 Malmo, Sweden

Service Oriented Integration With Apache ServiceMix. Bruce Snyder 21 Nov 2008 Malmo, Sweden Service Oriented Integration With Apache ServiceMix Bruce Snyder bsnyder@apache.org 21 Nov 2008 Malmo, Sweden Agenda Enterprise Service Bus Java Business Integration Apache ServiceMix ESB 2 What is an

More information

Apache CXF Web Services

Apache CXF Web Services Apache CXF Web Services Dennis M. Sosnoski Vancouver Java Users Group August 23, 2011 http://www.sosnoski.com http://www.sosnoski.co.nz About me Java, web services, and SOA expert Consultant and mentor

More information

ARTIX PROGRESS. Using the Artix Library

ARTIX PROGRESS. Using the Artix Library ARTIX PROGRESS Using the Artix Library Version 5.6, May 2011 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. These materials and all Progress software products

More information

The Extensible Markup Language (XML) and Java technology are natural partners in helping developers exchange data and programs across the Internet.

The Extensible Markup Language (XML) and Java technology are natural partners in helping developers exchange data and programs across the Internet. 1 2 3 The Extensible Markup Language (XML) and Java technology are natural partners in helping developers exchange data and programs across the Internet. That's because XML has emerged as the standard

More information

Apache Camel Developer's Cookbook

Apache Camel Developer's Cookbook Apache Camel Developer's Cookbook Scott Cranton Jakub Korab Chapter No. 9 "Testing" In this package, you will find: A Biography of the authors of the book A preview chapter from the book, Chapter NO.9

More information

JBI User's Guide. Apache ServiceMix Version 4.5.0

JBI User's Guide. Apache ServiceMix Version 4.5.0 JBI User's Guide Apache ServiceMix Version 4.5.0 1 1. Introduction to JBI 1.1. What is JBI? TODO: Describe what the JBI specification is all about 1.2. Message Exchange Patterns TODO: Describe the four

More information

Real World Messaging With Apache ActiveMQ. Bruce Snyder 7 Nov 2008 New Orleans, Louisiana

Real World Messaging With Apache ActiveMQ. Bruce Snyder 7 Nov 2008 New Orleans, Louisiana Real World Messaging With Apache ActiveMQ Bruce Snyder bsnyder@apache.org 7 Nov 2008 New Orleans, Louisiana Do You Use JMS? 2 Agenda Common questions ActiveMQ features 3 What is ActiveMQ? Message-oriented

More information

RED HAT JBOSS FUSE. A lightweight, flexible integration platform

RED HAT JBOSS FUSE. A lightweight, flexible integration platform RED HAT JBOSS FUSE A lightweight, flexible integration platform TECHNOLOGY OVERVIEW We knew that our previous integration hub simply wouldn t allow us to meet our goals. With Red Hat JBoss Fuse, we re

More information

Wednesday, May 22, 13. Java Business Integration

Wednesday, May 22, 13. Java Business Integration Java Business Integration Java Business Integration Enterprise Application Integration and B2B often require non-standard technology this causes lock-in! no single provider can give us all we need. JBI

More information

Realization of EAI Patterns with Apache Camel

Realization of EAI Patterns with Apache Camel Institut für Architektur von Anwendungssystemen Universität Stuttgart Universitätsstraße 38 70569 Stuttgart Studienarbeit Nr. 2127 Realization of EAI Patterns with Apache Camel Pascal Kolb Studiengang:

More information

EAI War Stories. ! Alexander Martin Praxisbeispiele zu EAI-Pattern und Lessons Learned

EAI War Stories. ! Alexander Martin Praxisbeispiele zu EAI-Pattern und Lessons Learned EAI War Stories Praxisbeispiele zu EAI-Pattern und Lessons Learned! Alexander Heusingfeld, @goldstift Martin Huber, @waterback We take care of it - personally! EAI Pattern in 2013? Nobody uses them anymore!

More information

EMBEDDED MESSAGING USING ACTIVEMQ

EMBEDDED MESSAGING USING ACTIVEMQ Mark Richards EMBEDDED MESSAGING USING ACTIVEMQ Embedded messaging is useful when you need localized messaging within your application and don t need (or want) an external message broker. It s a good technique

More information

Crossing boarders with the bus Integrating enterprise data with public APIs!

Crossing boarders with the bus Integrating enterprise data with public APIs! Crossing boarders with the bus Integrating enterprise data with public APIs! What is Mule?" 2 Not a donkey" All contents Copyright 2009, MuleSoft Inc.! 3 Not a llama" 4 Not a camel" 5 BaaS: Beer As A Service"

More information

Quickstart Guide. Apache ServiceMix Version SNAPSHOT

Quickstart Guide. Apache ServiceMix Version SNAPSHOT Quickstart Guide Apache ServiceMix Version 7.0.0-SNAPSHOT 1 1. Introduction First of all, welcome to the Apache ServiceMix project! The goal of this Quickstart guide is to give you a 20-minute overview

More information

Flexible EAI-Lösungen mit Glassfish

Flexible EAI-Lösungen mit Glassfish Flexible EAI-Lösungen mit Glassfish Praxisbeispiele und War Stories zu EAI-Pattern Alexander Heusingfeld, @goldstift Martin Huber, @waterback We take care of it - personally! EAI Pattern in 2013? EAI

More information

IoT with Apache ActiveMQ, Camel and Spark

IoT with Apache ActiveMQ, Camel and Spark IoT with Apache ActiveMQ, Camel and Spark Burr Sutter - Red Hat Agenda Business & IT Architecture IoT Architecture IETF IoT Use Case Ingestion: Apache ActiveMQ, Apache Camel Analytics: Apache Spark Demos

More information

Java EE 7: Back-end Server Application Development 4-2

Java EE 7: Back-end Server Application Development 4-2 Java EE 7: Back-end Server Application Development 4-2 XML describes data objects called XML documents that: Are composed of markup language for structuring the document data Support custom tags for data

More information

A short introduction to Web Services

A short introduction to Web Services 1 di 5 17/05/2006 15.40 A short introduction to Web Services Prev Chapter Key Concepts Next A short introduction to Web Services Since Web Services are the basis for Grid Services, understanding the Web

More information

Jaxb2 Maven Plugin Could Not Process Schema

Jaxb2 Maven Plugin Could Not Process Schema Jaxb2 Maven Plugin Could Not Process Schema The JAXB2 Maven Plugin project was moved to GitHub. These pages are no longer maintained and therefore do not provide the actual information. Resource entries,

More information

The Telegram component has no options. However, the Telegram component does support 24 endpoint options, which are listed below:

The Telegram component has no options. However, the Telegram component does support 24 endpoint options, which are listed below: Telegram Telegram Component Available as of Camel 2.18 The Telegram component provides access to the Telegram Bot API. It allows a Camel-based application to send and receive messages by acting as a Bot,

More information

Solace JMS Integration with Red Hat JBoss Fuse (6.0)

Solace JMS Integration with Red Hat JBoss Fuse (6.0) Solace JMS Integration with Red Hat JBoss Fuse (6.0) Document Version 1.0 September, 2014 This document is an integration guide for using Solace JMS as a JMS provider in Red Hat JBoss Fuse. Red Hat JBoss

More information

Notes. Submit homework on Blackboard The first homework deadline is the end of Sunday, Feb 11 th. Final slides have 'Spring 2018' in chapter title

Notes. Submit homework on Blackboard The first homework deadline is the end of Sunday, Feb 11 th. Final slides have 'Spring 2018' in chapter title Notes Ask course content questions on Slack (is651-spring-2018.slack.com) Contact me by email to add you to Slack Make sure you checked Additional Links at homework page before you ask In-class discussion

More information

Spoilt for Choice Which Integration Framework to choose? Mule ESB. Integration. Kai Wähner

Spoilt for Choice Which Integration Framework to choose? Mule ESB. Integration.  Kai Wähner Spoilt for Choice Which Integration Framework to choose? Integration vs. Mule ESB vs. Main Tasks Evaluation of Technologies and Products Requirements Engineering Enterprise Architecture Management Business

More information

Why real integration developers ride Camels

Why real integration developers ride Camels Why real integration developers ride Camels Christian Posta Principal Middleware Specialist/Architect Blog: http://blog.christianposta.com Twitter: @christianposta Email: christian@redhat.com Committer

More information

Mastering Apache Camel

Mastering Apache Camel Mastering Apache Camel Table of Contents Mastering Apache Camel Credits About the Author About the Reviewers www.packtpub.com Support files, ebooks, discount offers, and more Why subscribe? Free access

More information

Using Scala for building DSL s

Using Scala for building DSL s Using Scala for building DSL s Abhijit Sharma Innovation Lab, BMC Software 1 What is a DSL? Domain Specific Language Appropriate abstraction level for domain - uses precise concepts and semantics of domain

More information

Revisit Spring XML to object message and object to XML transformation.

Revisit Spring XML to object message and object to XML transformation. Lab Exercise Service Activators - Lab 7 Throughout this tutorial series, you have seen many service activators without really knowing what a service activator is or does generically at least. It is time

More information

Getting Started with Web Services

Getting Started with Web Services Getting Started with Web Services Getting Started with Web Services A web service is a set of functions packaged into a single entity that is available to other systems on a network. The network can be

More information

PublishMQ SPI Implementation

PublishMQ SPI Implementation PublishMQ SPI Implementation Table of Contents Screenshots................................................................................ 2 Invoke an action.........................................................................

More information

Introduction to JMS & Apache ActiveMQ

Introduction to JMS & Apache ActiveMQ Introduction to JMS & Apache ActiveMQ The web meeting will begin shortly Dial-in Information: Participant Code: 90448865 US Toll free: (1) 877 375 2160 US Toll: (1) 973 935 2036 United Kingdom: 08082348621

More information

Building Large Scale Distributed Systems with AMQP. Ted Ross

Building Large Scale Distributed Systems with AMQP. Ted Ross Building Large Scale Distributed Systems with AMQP Ted Ross tross@apache.org Agenda What is AMQP? Why is AMQP important to large distributed enterprises? How is the Apache Community making AMQP a reality?

More information

JAVASCRIPT JQUERY AJAX FILE UPLOAD STACK OVERFLOW

JAVASCRIPT JQUERY AJAX FILE UPLOAD STACK OVERFLOW page 1 / 5 page 2 / 5 javascript jquery ajax file pdf I marked it as a duplicate despite the platform difference, because as far as I can see the solution is the same (You can't and don't need to do this

More information

Developing a Web Server Platform with SAPI support for AJAX RPC using JSON

Developing a Web Server Platform with SAPI support for AJAX RPC using JSON 94 Developing a Web Server Platform with SAPI support for AJAX RPC using JSON Assist. Iulian ILIE-NEMEDI Informatics in Economy Department, Academy of Economic Studies, Bucharest Writing a custom web server

More information

Speech 2 Part 2 Transcript: The role of DB2 in Web 2.0 and in the IOD World

Speech 2 Part 2 Transcript: The role of DB2 in Web 2.0 and in the IOD World Speech 2 Part 2 Transcript: The role of DB2 in Web 2.0 and in the IOD World Slide 1: Cover Welcome to the speech, The role of DB2 in Web 2.0 and in the Information on Demand World. This is the second speech

More information

SUN. Java Platform Enterprise Edition 6 Web Services Developer Certified Professional

SUN. Java Platform Enterprise Edition 6 Web Services Developer Certified Professional SUN 311-232 Java Platform Enterprise Edition 6 Web Services Developer Certified Professional Download Full Version : http://killexams.com/pass4sure/exam-detail/311-232 QUESTION: 109 What are three best

More information

Sun Java TM Composite Applications Platform Suite Implementing Selected EAI Patterns

Sun Java TM Composite Applications Platform Suite Implementing Selected EAI Patterns Sun Java TM Composite Applications Platform Suite Implementing Selected EAI Patterns Michael Czapski, Enterprise Architect, Sun Microsystems Frank Kieviet, Senior Staff Engineer, Sun Microsystems TS-5301

More information

Getting Started with Web Services

Getting Started with Web Services Getting Started with Web Services Getting Started with Web Services A web service is a set of functions packaged into a single entity that is available to other systems on a network. The network can be

More information

Groovy. Extending Java with scripting capabilities. Last updated: 10 July 2017

Groovy. Extending Java with scripting capabilities. Last updated: 10 July 2017 Groovy Extending Java with scripting capabilities Last updated: 10 July 2017 Pepgo Limited, 71-75 Shelton Street, Covent Garden, London, WC2H 9JQ, United Kingdom Contents About Groovy... 3 Install Groovy...

More information

Active Endpoints. ActiveVOS Platform Architecture Active Endpoints

Active Endpoints. ActiveVOS Platform Architecture Active Endpoints Active Endpoints ActiveVOS Platform Architecture ActiveVOS Unique process automation platforms to develop, integrate, and deploy business process applications quickly User Experience Easy to learn, use

More information

Jaxb Validate Xml Against Multiple Xsd

Jaxb Validate Xml Against Multiple Xsd Jaxb Validate Xml Against Multiple Xsd I have created an XSD file in my Java project that defines a user-editable When the program runs, it uses JAXB to validate that the user has not made any mistakes

More information

CXF for the Enterprise and Web. Dan Diephouse

CXF for the Enterprise and Web. Dan Diephouse CXF for the Enterprise and Web Dan Diephouse 1 Today Our dilemma CXF? What s that? The Customer Service RESTful rendition SOAP rendition Conclusions 2 Our Dilemma 3 Survey! SURVEY! 4 What is CXF? Services

More information

Excel Xml Xsd Validation Java Using Jaxb

Excel Xml Xsd Validation Java Using Jaxb Excel Xml Xsd Validation Java Using Jaxb These OASIS CAM standard XML validation templates can include use of content written in Java, implements an XML and JSON validation framework using the NOTE: if

More information

Embedding Python in Your C Programs

Embedding Python in Your C Programs 1 of 7 6/18/2006 9:05 PM Embedding Python in Your C Programs William Nagel Abstract C, meet Python. Python, this is C. With surprisingly little effort, the Python interpreter can be integrated into your

More information

camel.apache.org/eip from neworder choice from neworder choice when iswidget to widget from neworder choice when iswidget to widget otherwise to therest from (neworder) choice when (iswidget) to (widget)

More information

Semantic Analysis. Lecture 9. February 7, 2018

Semantic Analysis. Lecture 9. February 7, 2018 Semantic Analysis Lecture 9 February 7, 2018 Midterm 1 Compiler Stages 12 / 14 COOL Programming 10 / 12 Regular Languages 26 / 30 Context-free Languages 17 / 21 Parsing 20 / 23 Extra Credit 4 / 6 Average

More information

Red Hat JBoss Fuse 6.3

Red Hat JBoss Fuse 6.3 Red Hat JBoss Fuse 6.3 Developing and Deploying Applications In-depth examples of how to create, build, and run JBoss Fuse applications Last Updated: 2018-02-07 Red Hat JBoss Fuse 6.3 Developing and Deploying

More information

Nick Terkay CSCI 7818 Web Services 11/16/2006

Nick Terkay CSCI 7818 Web Services 11/16/2006 Nick Terkay CSCI 7818 Web Services 11/16/2006 Ning? Start-up co-founded by Marc Andreeson, the co- founder of Netscape. October 2005 Ning is an online platform for painlessly creating web apps in a jiffy.

More information

CONFIGURING A SPRING DEVELOPMENT ENVIRONMENT

CONFIGURING A SPRING DEVELOPMENT ENVIRONMENT Module 5 CONFIGURING A SPRING DEVELOPMENT ENVIRONMENT The Spring Framework > The Spring framework (spring.io) is a comprehensive Java SE/Java EE application framework > Spring addresses many aspects of

More information

Extreme Java Productivity with Spring Roo and Spring 3.0

Extreme Java Productivity with Spring Roo and Spring 3.0 Extreme Java Productivity with Spring Roo and Spring 3.0 Rod Johnson Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Agenda Motivation

More information

Dynamic Database Schemas and Multi-Paradigm Persistence Transformations

Dynamic Database Schemas and Multi-Paradigm Persistence Transformations Grand Valley State University ScholarWorks@GVSU Technical Library School of Computing and Information Systems 2017 Dynamic Database Schemas and Multi-Paradigm Persistence Transformations Ryan D. Norton

More information

Open ESB v2, Open ESB.next and Project Fuji. Andreas Egloff Lead Architect SOA / Business Integration Sun Microsystems

Open ESB v2, Open ESB.next and Project Fuji. Andreas Egloff Lead Architect SOA / Business Integration Sun Microsystems Open ESB v2, Open ESB.next and Project Fuji Andreas Egloff Lead Architect SOA / Business Integration Sun Microsystems 1 Introduction 2 Project Open ESB Over 600 members and 600,000 downloads CDDL license

More information

MODERN APPLICATION ARCHITECTURE DEMO. Wanja Pernath EMEA Partner Enablement Manager, Middleware & OpenShift

MODERN APPLICATION ARCHITECTURE DEMO. Wanja Pernath EMEA Partner Enablement Manager, Middleware & OpenShift MODERN APPLICATION ARCHITECTURE DEMO Wanja Pernath EMEA Partner Enablement Manager, Middleware & OpenShift COOLSTORE APPLICATION COOLSTORE APPLICATION Online shop for selling products Web-based polyglot

More information

SUMMARY LAYERED ARCHITECTURE

SUMMARY LAYERED ARCHITECTURE SUMMARY Introduction Layered architecture Event driven architecture Microservices architecture SOFTWARE ARCHITECTURE PATTERNS INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica

More information

Oracle Enterprise Pack for Eclipse 11g Hands on Labs

Oracle Enterprise Pack for Eclipse 11g Hands on Labs Oracle Enterprise Pack for Eclipse 11g Hands on Labs This certified set of Eclipse plug-ins is designed to help develop, deploy and debug applications for Oracle WebLogic Server. It installs as a plug-in

More information

SHORT NOTES / INTEGRATION AND MESSAGING

SHORT NOTES / INTEGRATION AND MESSAGING SHORT NOTES / INTEGRATION AND MESSAGING 1. INTEGRATION and MESSAGING is related to HOW to SEND data to and receive from ANOTHER SYSTEM or APPLICATION 2. A WEB SERVICE is a piece of software designed to

More information

Agenda. SOA defined Introduction to XFire A JSR 181 Service Other stuff Questions

Agenda. SOA defined Introduction to XFire A JSR 181 Service Other stuff Questions SOA Today with Agenda SOA defined Introduction to XFire A JSR 181 Service Other stuff Questions Service Oriented 1. to orient around services 2. buzzword 3.... Service oriented is NOT (but can be) NEW

More information

Domain-Specific Languages Language Workbenches

Domain-Specific Languages Language Workbenches Software Engineering with and Domain-Specific Languages Language Workbenches Peter Friese Itemis peter.friese@itemis.de Markus Voelter Independent/itemis voelter@acm.org 1 Programming Languages C# Erlang

More information

Asynchronous OSGi: Promises for the masses. Tim Ward.

Asynchronous OSGi: Promises for the masses. Tim Ward. Asynchronous OSGi: Promises for the masses Tim Ward http://www.paremus.com info@paremus.com Who is Tim Ward? @TimothyWard Senior Consulting Engineer, Trainer and Architect at Paremus 5 years at IBM developing

More information

Javascript Validator Xml Schema Eclipse Plugin

Javascript Validator Xml Schema Eclipse Plugin Javascript Validator Xml Schema Eclipse Plugin Summary: XML Schema validation fails when importing external schema Jesper, yes we contribute these xml's via plugins but the issue fails even without it.

More information

CNIT 129S: Securing Web Applications. Ch 3: Web Application Technologies

CNIT 129S: Securing Web Applications. Ch 3: Web Application Technologies CNIT 129S: Securing Web Applications Ch 3: Web Application Technologies HTTP Hypertext Transfer Protocol (HTTP) Connectionless protocol Client sends an HTTP request to a Web server Gets an HTTP response

More information

RED HAT JBOSS FUSE A lightweight, lexible integration platform

RED HAT JBOSS FUSE A lightweight, lexible integration platform RED HAT JBOSS FUSE A lightweight, lexible integration platform TECHNOLOGY OVERVIEW We knew that our previous integration hub simply wouldn t allow us to meet our goals. With Red Hat JBoss Fuse, we re now

More information

Client Side JavaScript and AJAX

Client Side JavaScript and AJAX Client Side JavaScript and AJAX Client side javascript is JavaScript that runs in the browsers of people using your site. So far all the JavaScript code we've written runs on our node.js server. This is

More information

Packaging Data for the Web

Packaging Data for the Web Packaging Data for the Web EN 605.481 Principles of Enterprise Web Development Overview Both XML and JSON can be used to pass data between remote applications, clients and servers, etc. XML Usually heavier

More information

Copyright 2014 Blue Net Corporation. All rights reserved

Copyright 2014 Blue Net Corporation. All rights reserved a) Abstract: REST is a framework built on the principle of today's World Wide Web. Yes it uses the principles of WWW in way it is a challenge to lay down a new architecture that is already widely deployed

More information

Formal Methods of Software Design, Eric Hehner, segment 1 page 1 out of 5

Formal Methods of Software Design, Eric Hehner, segment 1 page 1 out of 5 Formal Methods of Software Design, Eric Hehner, segment 1 page 1 out of 5 [talking head] Formal Methods of Software Engineering means the use of mathematics as an aid to writing programs. Before we can

More information

Red Hat JBoss Fuse 6.2.1

Red Hat JBoss Fuse 6.2.1 Red Hat JBoss Fuse 6.2.1 Getting Started Learn to solve problems with Red Hat JBoss Fuse Last Updated: 2017-09-21 Red Hat JBoss Fuse 6.2.1 Getting Started Learn to solve problems with Red Hat JBoss Fuse

More information

Integrating Legacy Assets Using J2EE Web Services

Integrating Legacy Assets Using J2EE Web Services Integrating Legacy Assets Using J2EE Web Services Jonathan Maron Oracle Corporation Page Agenda SOA-based Enterprise Integration J2EE Integration Scenarios J2CA and Web Services Service Enabling Legacy

More information

Copyright 2013, Oracle and/or its affiliates. All rights reserved. CON-7777, JMS and WebSocket for Lightweight and Efficient Messaging

Copyright 2013, Oracle and/or its affiliates. All rights reserved. CON-7777, JMS and WebSocket for Lightweight and Efficient Messaging 1 JMS and WebSocket for Lightweight and Efficient Messaging Ed Bratt Senior Development Manager, Oracle Amy Kang Consulting Member Technical Staff, Oracle Safe Harbor Statement please note The following

More information

Red Hat JBoss Fuse 6.1

Red Hat JBoss Fuse 6.1 Red Hat JBoss Fuse 6.1 Getting Started Learn to solve problems with Red Hat JBoss Fuse Last Updated: 2017-10-12 Red Hat JBoss Fuse 6.1 Getting Started Learn to solve problems with Red Hat JBoss Fuse JBoss

More information

Artix Version Getting Started with Artix: Java

Artix Version Getting Started with Artix: Java Artix Version 5.6.4 Getting Started with Artix: Java Micro Focus The Lawn 22-30 Old Bath Road Newbury, Berkshire RG14 1QN UK http://www.microfocus.com Copyright Micro Focus 2017. All rights reserved. MICRO

More information

Rolling out Web Services the Right Way with Spring-WS

Rolling out Web Services the Right Way with Spring-WS Rolling out Web Services the Right Way with Spring-WS Arjen Poutsma Senior Consultant Interface21 Spring-WS Lead 1 About me Over ten years of experience in Enterprise Software Development Three years of

More information

SCA Java Runtime Overview

SCA Java Runtime Overview SCA Java Runtime Overview Software Organization Source Code Locations If you take a Tuscany SCA Java source distribution or look in the Tuscany subversion repository (http://svn.apache.org/repos/asf/tuscany/java/sc

More information

Define a Java SE class for running/testing your Spring Integration components.

Define a Java SE class for running/testing your Spring Integration components. Lab Exercise Understanding Channels - Lab 1 Channels are an integral part of any Spring Integration application. There are many channels to choose from. Understanding the basic channel types (subscribable

More information

Setting Up the Development Environment

Setting Up the Development Environment CHAPTER 5 Setting Up the Development Environment This chapter tells you how to prepare your development environment for building a ZK Ajax web application. You should follow these steps to set up an environment

More information

Red Hat JBoss Fuse 6.3

Red Hat JBoss Fuse 6.3 Red Hat JBoss Fuse 6.3 SwitchYard Development Guide Develop applications with SwitchYard Last Updated: 2018-02-07 Red Hat JBoss Fuse 6.3 SwitchYard Development Guide Develop applications with SwitchYard

More information

Making SOA Groovy Paul Fremantle,

Making SOA Groovy Paul Fremantle, Paul Fremantle, pzf@apache.org Who am I? Paul Fremantle Co-founder of WSO2 - open source SOA middleware company Member of the Apache Software Foundation Committer and Release Manager on Apache Synapse

More information

Developing RESTful Services Using JAX-RS

Developing RESTful Services Using JAX-RS Developing RESTful Services Using JAX-RS Bibhas Bhattacharya CTO, Web Age Solutions Inc. April 2012. Many Flavors of Services Web Services come in all shapes and sizes XML-based services (SOAP, XML-RPC,

More information

Managing REST API. The REST API. This chapter contains the following sections:

Managing REST API. The REST API. This chapter contains the following sections: This chapter contains the following sections: The REST API, page 1 Identifying Entities, page 2 Configuring a POJO Class for REST API Support, page 2 Input Controllers, page 2 Implementing a Workflow Task,

More information