Apache Camel: Integration Nirvana
|
|
- Jemima Perkins
- 6 years ago
- Views:
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 talpor@matrix.co.il Agenda ESB Background JBoss Fuse ESB JBoss BPM Suite(BPM + BRMS) Pergola Approval Request Scenario Agenda ESB
More informationService 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 informationSOA-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 informationFuse 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 informationCamel 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 informationTaking 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 informationSee 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 informationIntegration 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 informationTaking 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 informationRed 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 informationChapter 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 informationJava 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 informationJBI 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 informationSOA-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 informationHiram 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 informationAMon 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 informationUsing 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 informationESB, 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 informationEnterprise 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 informationRadBlue 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 informationAndroid 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 informationRuby 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 informationService 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 informationApache 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 informationARTIX 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 informationThe 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 informationApache 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 informationJBI 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 informationReal 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 informationRED 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 informationWednesday, 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 informationRealization 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 informationEAI 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 informationEMBEDDED 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 informationCrossing 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 informationQuickstart 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 informationFlexible 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 informationIoT 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 informationJava 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 informationA 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 informationJaxb2 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 informationThe 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 informationSolace 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 informationNotes. 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 informationSpoilt 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 informationWhy 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 informationMastering 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 informationUsing 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 informationRevisit 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 informationGetting 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 informationPublishMQ SPI Implementation
PublishMQ SPI Implementation Table of Contents Screenshots................................................................................ 2 Invoke an action.........................................................................
More informationIntroduction 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 informationBuilding 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 informationJAVASCRIPT 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 informationDeveloping 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 informationSpeech 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 informationSUN. 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 informationSun 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 informationGetting 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 informationGroovy. 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 informationActive 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 informationJaxb 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 informationCXF 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 informationExcel 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 informationEmbedding 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 informationcamel.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 informationSemantic 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 informationRed 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 informationNick 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 informationCONFIGURING 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 informationExtreme 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 informationDynamic 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 informationOpen 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 informationMODERN 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 informationSUMMARY 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 informationOracle 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 informationSHORT 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 informationAgenda. 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 informationDomain-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 informationAsynchronous 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 informationJavascript 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 informationCNIT 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 informationRED 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 informationClient 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 informationPackaging 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 informationCopyright 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 informationFormal 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 informationRed 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 informationIntegrating 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 informationCopyright 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 informationRed 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 informationArtix 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 informationRolling 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 informationSCA 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 informationDefine 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 informationSetting 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 informationRed 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 informationMaking 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 informationDeveloping 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 informationManaging 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