SlideShare a Scribd company logo
Succeeding with the Apache SOA stack
And debunking some SOA myths
Johan Edstrom
SOA Executive and Apache developer.
jedstrom@  savoirtech.com
joed@  apache.org

Jeff Genender
Principal
jgenender@ savoirtech.com
Johan and Jeff and Heath
Agenda

 What is an ESB?
  • Where would an “ESB” fit in?
  • How do you choose the ESB?
  • Reasons for picking the Apache ServiceMix stack
       Modular
       Stable
       Cluster capable

 How to design software and the build system for an ESB
  • Karaf and ServiceMix are OSGi based, ServiceMix also can handle JBI.
  • The Apache projects are modularized using Maven.
       Get over it and accept it :)
Key parts to scalability

 The right resources in the right place

 Messaging
  • Or any other asynchronous system

 State driven

 Conversational

 Effectively aggregating

 Transactionally safe

 Correctly utilizing EE

Recommended for you

WebSockets with Spring 4
WebSockets with Spring 4WebSockets with Spring 4
WebSockets with Spring 4

This document discusses WebSockets and Spring WebSockets. It begins by introducing WebSockets as a protocol for real-time full duplex communication over a single TCP connection. It then covers the WebSocket handshake process and JavaScript WebSocket API. Next, it discusses Java WebSocket implementations and how Spring 4 supports WebSockets and the fallback SockJS protocol. Finally, it introduces STOMP as a simple messaging protocol that can be used over WebSockets, and how Spring supports asynchronous messaging using STOMP over WebSockets.

springsockjsstomp
Introduction to WebSockets
Introduction to WebSocketsIntroduction to WebSockets
Introduction to WebSockets

WebSocket is a protocol that provides bidirectional communication over a single TCP connection. It uses an HTTP handshake to establish a connection and then transmits messages as frames that can contain text or binary data. The frames include a header with metadata like opcode and payload length. WebSocket aims to provide a standard for browser-based applications that require real-time data updates from a server.

html5springjava
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015

This is a talk from the Open Source Day 2015 (http://opensourceday.com/start-osd-2015/) conference in Warsaw, Poland, 23.04.2015. This talk is about the Apache Software Foundation and Apache ServiceMix

apache activemqapache cxfapache servicemix
W is an ESB?
 hat

 In my world it is simply a runtime for deploying asynchronous,
  event driven code.
   • So, yes; of course most of you have deployed and built ESB solutions.
   • Yes, of course we are partial to “ESB” solutions.

 What is an ESB in marketing slides?
  • Components
  • Data-transformations
  • Scalability and performance (You can randomly wave your hands here)

   •   A Bus
        This is a mythical, magical, illusionary fantastically awesome thing that
         transparently just makes everything work.
Where does the marketing ESB fit in?

 Picking up a file from a file area, transforming it with XSLT,
 publishing to a web-service.

 Consuming a web-service, using a RoutingSlip and sending to a
 product, then inventory queue on a JMS provider

 Consuming a web-service payload and transforming the data to
 an insert in a JDBC component

 Providing “Enterprise routing infrastructure”

 Providing “Enterprise orchestration”
And what about a real world one?

 Where you need to do any of the marketing ESB stuff
  • Of course they are valid use-cases


 Where you want web-apps to be able to share resources
  • ServiceMix / Karaf happily will work as a servlet container


 Long running processing, “Orchestration”


 Any type of data transformation scenarios
Real one

 Multi-Protocol input/output


 Complex publish subscribe systems


 Where you need to process in parallel


 In Springism’s - anywhere you have a Bean-Ref you could start
 breaking things apart.

Recommended for you

HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQLHTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL

HTTP, JSON, JavaScript, Map&Reduce built in to MySQL - make it happen, today. See how a MySQL Server plugin be developed to built all this into MySQL. A new direct wire between MySQL and client-side JavaScript is created. MySQL speaks HTTP, replies JSON and offers server-side JavaScript. Server-side JavaScript gets access to MySQL data and does Map&Reduce of JSON documents stored in MySQL. Fast? 2-4x faster than proxing client-side JavaScript request through PHP/Apache. Reasonable results...

pluginmysqlv8
Apache ActiveMQ and Apache Camel
Apache ActiveMQ and Apache CamelApache ActiveMQ and Apache Camel
Apache ActiveMQ and Apache Camel

ActiveMQ is an open source message broker that implements the Java Message Service (JMS) API. It allows applications written in different languages to communicate asynchronously. Apache Camel is an open source integration framework that can be used to build messaging routes between different transports and APIs using a simple domain-specific language. It provides mediation capabilities and supports common integration patterns. Both ActiveMQ and Camel aim to simplify integration between disparate systems through message-based communication.

Web Server/App Server Connectivity
Web Server/App Server ConnectivityWeb Server/App Server Connectivity
Web Server/App Server Connectivity

This document discusses connectivity between web servers and application servers. It describes how the Apache HTTP Server is commonly used in front of application servers like Tomcat for security, performance and flexibility. It then discusses the Apache JServ Protocol (AJP) that is typically used for communication between Apache and Tomcat and some of its limitations. Alternatives like using Tomcat's HTTP connectors directly or Apache's native proxying and load balancing capabilities are presented as often better options. The recommendation is to use standard HTTP protocols over AJP when possible for better debuggability and stability.

apache
This is what we are trying to avoid....
And this is probably what you are looking at
I’ll interpret that for y’all!
So how is that “ESB” designed?




 This is not far from an EE container
   • Add OpenEJB if you want and you’ll have a full stack

 It contains a web-services layer

 Dependency injection services

 OSGi integration and legacy (JBI) support

 Camel for routing, transformation and mediation

 Aries and Spring for EE support, JNDI, TX, JPA

 Web-app deployment support

Recommended for you

ActiveMQ In Action
ActiveMQ In ActionActiveMQ In Action
ActiveMQ In Action

This document summarizes common problems and solutions when using ActiveMQ. It addresses questions about creating JMS clients from scratch, efficiently managing connections, consuming only certain messages, reasons for locking/freezing, when a network of brokers is needed, and using a master/slave configuration. Spring JMS and selectors are recommended over building clients from scratch. Connection pooling and caching are advised for efficiency. Selectors and proper design can filter messages. Memory, prefetch limits, and cursors impact performance and need configuration. Networked brokers improve availability while master/slave configurations provide high availability.

activemq
Pushing the web — WebSockets
Pushing the web — WebSocketsPushing the web — WebSockets
Pushing the web — WebSockets

This document discusses WebSockets as an improvement over previous "fake push" techniques for enabling real-time full duplex communication between web clients and servers. It notes that WebSockets use HTTP for the initial handshake but then provide a persistent, bi-directional connection. Examples are given of how WebSockets work and can be implemented in various programming languages including Ruby. Support in browsers and servers is also discussed.

websockets ruby eventmachine german
WebSocket protocol
WebSocket protocolWebSocket protocol
WebSocket protocol

1. The document discusses a meetup about WebSocket and SPDY protocols on July 5th, 2012 presented by Kensaku Komatsu. 2. The presentation covered introductions to WebSocket and SPDY, how they address issues with HTTP such as slow loading of multiple resources, and compared their communication models and transport protocols. 3. The main topics were introductions to WebSocket and SPDY, and a deeper dive into the WebSocket protocol including its handshake process, data framing, ping/pong functionality, and additional aspects like subprotocols and extensions.

html5 websocket spdy
So why is that so cool?




 Well.... You can treat it in the classical manner

 Or as a really kick-ass funky container

 Or - as a nice fusion of them both!
Apache ActiveMQ

 Communications platform of choice, providing high
  performance, scalability, and mission-critical reliability for
  distributed enterprise computing.

 Apache ActiveMQ supports based on specs:
  • JMS 1.1
  • J2EE 1.4 integration-related components including JDBC, JCA, and EJBs;
       dependent specifications such as JTA and JNDI;
   •   AJAX, REST, HTTP, TCP, SSL, NIO+SSL, UDP, multicast, JGroups and JXTA
       transport protocols
ActiveMQ “Instability”

 Instability... what is it?
   • Most common term used by end users
   • Generally refers to ActiveMQ being frozen or completely seized
        Refers to producers being unable to send message
        Refers to queues being frozen/seized or stuck messages
        Generally temporarily is fixed by the holdover from the Microsoft days
          • The 3-finger salute (ctrl-alt-delete)
          • Restart of ActiveMQ
        Followed by complaints that ActiveMQ is trash
          • Blog by David Pollak: “ActiveMQ: not ready for prime time”
              http://goodstuff.im/activemq-not-ready-for-prime-time
   •   Is ActiveMQ trash or not properly written?
        Not trash...its a very properly written... its extremely powerful
   •   If I have these problems, what do you do? Diagnose it first ;-)
Apache ActiveMQ




 This is another presentation :)
   • So you need to attend that one if you want to debate ActiveMQ.

Recommended for you

Camelone-2012 HTML5 WebSocket ActiveMQ/Camel
Camelone-2012 HTML5 WebSocket ActiveMQ/CamelCamelone-2012 HTML5 WebSocket ActiveMQ/Camel
Camelone-2012 HTML5 WebSocket ActiveMQ/Camel

CamelOne 2012 presentation about develop HTML5 Real Time Application with WebSocket and Apache Camel and Apache ActiveMQ

html5 camel activemq websocket
The HTML5 WebSocket API
The HTML5 WebSocket APIThe HTML5 WebSocket API
The HTML5 WebSocket API

The HTML5 WebSocket API allows for true full-duplex communication between a client and server. It uses the WebSocket protocol which provides a standardized way for the client to "upgrade" an HTTP connection to a WebSocket connection, allowing for messages to be sent in either direction at any time with very little overhead. This enables real-time applications that were previously difficult to achieve with traditional HTTP requests. Common server implementations include Kaazing WebSocket Gateway, Jetty, and Node.js. The JavaScript API provides an easy way for clients to connect, send, and receive messages via a WebSocket connection.

sthlmwebmonkeyshtml5websocket
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)

Presentation by Peter Lubbers and Frank Salim presented at the San Francisco HTML5 User Group/GTUGSF Code Lab.

web socketsrealtimehtml5
Apache ActiveMQ - Additional functionality

 Advisory Queues and Topics are administrative channels.
  • The Broker periodically posts information about the status of known destinations
  • Administration focused programs can subscribe to advisory messages like any
     other Topic

 Useful life-cycle and supplementary notifications

 Advisories are generated for the following:
  • Starting and stopping consumers and producers
  • Creating and destroying temporary destinations
  • Expiring messages on topics and queues
  • Sending messages from brokers to destinations with no consumers
  • Starting and stopping connections
Apache ActiveMQ, Easy to scale




 Can bridge, multicast, “cluster” as well as integrate with other
 JMS providers
Apache ActiveMQ - High Availability
                 Pro                    Con
Replicated       No “single” point of   Supports only a single
                 failure                slave. Requires
                                        manual restart and
                                        synchronization to
                                        bring back a failed
                                        master

Shared File      No “single” point of   Requires a networked
                 failure. Can run       file-system solution
                 multiple slaves,       with locking
                 automatic recovery.
JDBC             No “single” point of   Slow
                 failure. Can run
                 multiple slaves,
Apache Camel

 A powerful rule based routing and mediation engine.

 Provides a POJO-based implementation of Enterprise
 Integration Patterns using Java DSL (Domain Specific
 Language) or Spring / Aries Blueprint to configure routing and
 mediation rules.

 Uses generics, annotations and URIs so that it can easily work
 directly with any kind of transport or messaging model such as
 HTTP, JMS, JBI, SCA, MINA or CXF Bus API without
 mandating a normalized message API.

 Designed as a small library which has “minimal” dependencies
 for easy embedding in any Java application.

Recommended for you

HTML5 WebSocket Introduction
HTML5 WebSocket IntroductionHTML5 WebSocket Introduction
HTML5 WebSocket Introduction

This document provides an overview of HTML5 WebSocket technology. It discusses limitations of traditional HTTP and how WebSocket enables full-duplex communication by reducing overhead and latency compared to alternative techniques like polling. The WebSocket API and protocol are introduced, along with browser support and server library options. Key benefits of WebSocket include unlimited connections per server, very small overhead, and true real-time bidirectional communication across the web.

html5websocketkaazing
JBoss Fuse - Fuse workshop EAP container
JBoss Fuse - Fuse workshop EAP containerJBoss Fuse - Fuse workshop EAP container
JBoss Fuse - Fuse workshop EAP container

JBoss Fuse allow you to have flexibility to deploy your Camel application on two most popular java container standards, OSGi and JavaEE, this workshop walks you through how to develop your application on JBoss EAP

jboss fusejboss eapsoa
Joomla! Performance on Steroids
Joomla! Performance on SteroidsJoomla! Performance on Steroids
Joomla! Performance on Steroids

This document summarizes a presentation on optimizing Joomla performance. It describes two parts to the presentation: Part 1 covers basic application-level optimizations for Joomla like keeping Joomla updated, choosing extensions wisely, simplifying templates, and using plugins and .htaccess rules to enable caching and compression. Part 2 discusses server-level optimizations like using a CDN, opcode caching with APC and Memcached, and reverse proxy servers like Nginx and Varnish. It provides configuration examples and presents results of benchmark tests showing improvements from optimizations.

joomlacachelinux
Apache Camel Features

 Camel is a Domain Specific Language (DSL) focussed on
 implementing Enterprise Integration Patterns (EIPs)
  •   Examples: multicast, splitter, content-based router, routing slip, dynamic routers,
      aggregator

 EIPs are implemented by Camel “Processors”
  •   Users can develop their own processors
  •   A processor is a fundamental building block
  •   Bean language and bindings exists so that not a single piece of Apache Camel Imports
      will be necessary when integrating your existing code

 Camel can connect to a wide variety of integration technologies
  •   Examples: JMS, HTTP, FTP, SOAP, File - There are ~ 120 components
  •   Integrations are implemented by Camel “Components”
  •   Users can develop their own components
And it is a pretty healthy library!

 Camel makes application design & development easy:
   • Reduces time to create integration flows
   • Reduces complexity of integration flows and makes them easier to maintain
   • Routes can be deployed in mainstream typical containers (OSGi, JEE, Servlet, etc.)

 Used in several commercial offerings

 Used in “competing” offerings

 About as close to an Integrations standard as you can get

 The community stays at a high level:
  • 503 subscribers to the users mailing list
  • 183 subscribers to the dev mailing list

 The community is active
  • ~863 mails per month on users mailing list in Mar 2011 - May 2012 (+25 %)
  • ~167 mails per month on the dev mailing list in Mar 2011 - May 2012 (-15 %)
  • Avg. 535 commits per month in Mar 2011 - May 2012 (+5 %)
CXF




 Simple, flexible, interceptor based, standards compliant
 framework for building JAX-WS and JAX-RS services and
 consumers
Additional - Application development tools

 Spring-DM and Spring

 Aries Blueprint

 Google Guice

 Felix iPojo



 And so on.....

Recommended for you

Realtime with-websockets-2015
Realtime with-websockets-2015Realtime with-websockets-2015
Realtime with-websockets-2015

Giancarlo Gomez presented on using websockets for realtime applications with ColdFusion. He began by explaining what websockets are and how they allow for bidirectional messaging with low latency compared to HTTP polling techniques. He then demonstrated how to enable and use websockets in ColdFusion, including securing connections and using websockets in a clustered environment. Finally, he discussed real world uses of websockets and issues to consider like network connections and application reloads.

coldfusioncfsummit2015websockets
Make easier Integration of your services with Fuse Solutions - RedHat 2013
Make easier Integration of your services with Fuse Solutions - RedHat 2013Make easier Integration of your services with Fuse Solutions - RedHat 2013
Make easier Integration of your services with Fuse Solutions - RedHat 2013

This presentation is all about why Fuse technology makes live easier of Integration projects / services using Camel, Karaf & Fabric

integrationcamelkaraf
Using Apache Camel as AKKA
Using Apache Camel as AKKAUsing Apache Camel as AKKA
Using Apache Camel as AKKA

The document discusses using Apache Camel and Apache Karaf to build distributed, asynchronous systems in a similar way to AKKA. It provides examples of building a dynamic routing system using Camel routing and JMS, as well as a modular ETL system for processing CSV files using a configurable, hot-deployable mutation framework. The examples demonstrate how to achieve scalability, modularity, and asynchronous behavior without deep knowledge of the underlying technologies through an event-driven architecture based on messaging.

apache camel akka routing dynamic
Do I need all of that?

 Nope, many solutions will need just a few things
  • jaxb, camel, jms, soap, rest and perhaps jdbc
  • Cut the container down to fit your needs
  • We don’t need to load all of the 100+ Apache Camel components
  • Pick and choose!


 Should I run that messaging solution inside the “ESB”
  • Entirely up to you, let us look a little deeper at that in a sec.

 Can I test these solutions or am I stuck with System.out.println
  and a remote debugger?
I’ve heard that OSGi sucks?

 Yes, It is a bit more complex to manage a full lifecycle
  • On the other hand you get reliable hot-deployment and things like configuration,
     service management and subscriptions out of the box.

 Yes, package level import export can be confusing
  • So make sure you use packages in a nice modular way.

 Yes, it takes a while to learn the tooling
  • Then did you wake up one day just knowing that WAR or EAR layout?

 Yes, you need to learn the classpath and a bit about
  classloading
   • Which’ll make you a better developer in the end of the day.
   • Many problems in this area actually are created by applying EE classloaders to an
     OSGi environment.
More suckage

 You have to write modular software!!!!
  • Yes, you’ll benefit from writing modular software
       Heh :)

 Yes, some third party libraries are “Fluster-Clucks” in OSGi
  • You can always re-package em’ or use something else.
  • ServiceMix bundles

 Yes, logging is strange and odd
  • So Pax logging is provided

 Yes, It was hard to get Hibernate working at one point in time
  • And there are like a bazillion blogs about getting it working.....
W is the simplest way of addressing teh SUKZ?
 hat

 Use Apache Maven.
  • Just accept it.

 Designate a maven fascist
  • Keep your builds nice and clean
  • Physically and monetary make sure that you abuse people breaking builds
  • Structure your projects as early as you can
  • Don’t be afraid of using a truckload of modules
  • Get familiar with the OSGi plugins, let your modules inherit base settings
        Go steal that build setup for Apache Karaf or Apache Camel!

 Use a whiteboard and perhaps do a few diagrams every now and
  then?

 Other ways of 100% guaranteed suckcess is to rely only on blogs,
  random advice on irc and never reading source code.

Recommended for you

WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...

WSO2 ESB is a lightweight and high-performance open source enterprise service bus (ESB) that simplifies enterprise integration. It provides mediation capabilities and abstractions to integrate diverse applications and protocols. WSO2 ESB's graphical tools and wizards make integration configurations easy without coding. It supports many protocols, standards, and integration patterns to enable a wide range of integration scenarios.

 
by WSO2
Was l iberty for java batch and jsr352
Was l iberty for java batch and jsr352Was l iberty for java batch and jsr352
Was l iberty for java batch and jsr352

This document discusses Sicoob's migration from their homegrown Java batch framework to the Java Batch standard (JSR-352) and IBM WebSphere Application Server Liberty profile. Some key points: - Sicoob developed their own Java batch framework in 2012 but wanted to migrate as JSR-352 was finalized and for improved support. - They worked with IBM to evaluate WebSphere Developer Tools and the Liberty profile beta for developing Java batch applications. - A use case was developed to compare performance of their existing framework versus the new JSR-352 implementation on Liberty. - Sicoob's batch workload included over 500k jobs daily across 16 application servers processing various financial workflows.

J2EE Batch Processing
J2EE Batch ProcessingJ2EE Batch Processing
J2EE Batch Processing

The document summarizes findings from a project testing batch processing performance using J2EE. It discusses considerations for batch frameworks, infrastructure, caching, logging, design challenges, and whether to use batch processing. It also outlines the design of the batch process used, including leveraging raw JDBC, Oracle caching, and tools for performance monitoring.

j2ee_batch
And keep this in mind...
Spring-DM... it’s a bit like Trump’s hair...
Spring-DM... it’s a bit like Trump’s hair...

Its there... it covers quite a bit...
but it’s kinda hard to recommend.
Looks great... but needs a lot of maintenance
or it becomes a big mess.
Let’s say we liked the Apache stack!

 And let us say we have a very simple and silly use-case
  • We want to accept incoming SOAP requests
  • We need to inspect those HTTP headers and then use them to route
  • We want this to be dynamic and flexible
        We might want to add a more complex routing engine later
   •   We want this to be modular and possible to run across multiple systems



 This tells us we could use
   • Spring or Aries Blueprint, Google Guice or plain old Java
   • We will use Apache CXF for the WS part
   • We will use Apache Camel for connecting this and routing
   • We will use JMS via Apache Camel-JMS
Verify your use-cases!
Proof of concept outline




 Let us use some EIP pattern symbols to outline this
   • We haven’t really made any technology statements here
       We are going to use Apache ActiveMQ because I said so.
       It could easily have been any other JMS provider.
  •   We know we’ll have a synchronous part
       Web-services by nature are.
  •   We’ll try and make all the other parts asynchronous
  •   We’ll also make sure that the participants don’t need strong integration or visibility
      of each other, thus we’ll (hopefully) end up with some pretty re-usable modules
  •   Another good approach is to also use sequence diagrams

Recommended for you

Frameworks Galore: A Pragmatic Review
Frameworks Galore: A Pragmatic ReviewFrameworks Galore: A Pragmatic Review
Frameworks Galore: A Pragmatic Review

A wide and shallow survey of popular frameworks for Javascript, CSS, PHP, Java, Groovy, Ruby, Perl, Python and other web oriented technologies.

netc2012
Building Asynchronous Applications
Building Asynchronous ApplicationsBuilding Asynchronous Applications
Building Asynchronous Applications

Johan Edstrom discussed scaling applications by making them more asynchronous and distributed. He covered several Apache projects like Camel, Karaf, ActiveMQ, Cassandra and CXF that can help achieve this. Specifically, he showed how to: 1. Use Camel and OSGi to build asynchronous microservices that communicate via an enterprise integration pattern like a message queue. 2. Store data in Cassandra for asynchronous and high-performance access across data centers. 3. Expose APIs asynchronously using CXF and handle requests with non-blocking techniques like futures. 4. Offload business logic to an asynchronous process running on a distributed cache like HazelCast for shared data and parallel processing across nodes

Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience

This document provides an overview of Platform as a Service (PaaS) options for Java applications, including Amazon Elastic Beanstalk, Red Hat OpenShift, CloudFoundry, and Google App Engine. It discusses features of PaaS like quick deployment, automatic scaling, and reduced maintenance compared to Infrastructure as a Service (IaaS). Specific PaaS products covered include their supported languages, frameworks, and cloud integration. Questions around capabilities like databases, monitoring, and custom domains are also addressed.

lohika labsoverviewjava
Let’s craft some code!

 We’ll start with the Maven setup
  • Use properties
  • Define a parent
  • Like said previously, steal a good setup
  • Inherit, inherit, inherit
  • Use modules

 We also ripped a WSDL from Apache CXF
  • SOAP Entry point
  • Gives something to code-gen against
  • Common use-case
Maven

 Complicated parent pom

 Very simple sub-modules
Incoming messages!
W else do we want here?
 hat

 A “Dynamic” Router!
  • We’ll craft a simple header based Dynamic router from eip patterns.
       Technically it is in between a routing slip with termination and a real control
        channel pattern, we utilize JMS as our control channel for this.
       We use this example to play with destinations from SoapUI

Recommended for you

Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience

This document provides an overview of Platform as a Service (PaaS) options for Java applications, including Amazon Elastic Beanstalk, Red Hat OpenShift, CloudFoundry, and CloudBees. It discusses the benefits of PaaS for quick deployment and hosting of Java applications. It then describes several popular PaaS platforms in more detail, focusing on their features, pricing, and how they compare for Java development.

javapaas
Cloudy in Indonesia: Java and Cloud
Cloudy in Indonesia: Java and CloudCloudy in Indonesia: Java and Cloud
Cloudy in Indonesia: Java and Cloud

This document provides an overview of cloud computing and Java platforms as a service (PaaS). It discusses infrastructure as a service (IaaS) from providers like Amazon and how PaaS offerings like Google App Engine and CloudBees abstract away infrastructure management. It notes the advantages of PaaS for development flexibility and automatic scaling but also limitations from predefined programming models. Details are provided on Google App Engine's programming model, storage options, and services. In summary, the document compares IaaS and PaaS approaches for Java applications in the cloud.

gaeamazonbeanstalk
Integration in the age of DevOps
Integration in the age of DevOpsIntegration in the age of DevOps
Integration in the age of DevOps

In an increasingly competitive marketplace, speed and business agility are paramount. And integration between customer-facing systems and back-end applications is more crucial than ever. At this event, you'll learn how open source software built by communities, like Apache Camel, Docker, Kubernetes, OpenShift Origin, and Fabric8, can help organizations integrate services and establish effective continuous integration and delivery (CI/CD) pipelines.

devopsjboss enterprise middlewarered hat openshift
The “Dynamic Router”

 Yep, it is just a Java class.
  • Imagine how easily you could integrate this with.... Anything!
W build that type of a route?
 hy
 We are able to turn “endpoints”, “routing”, “systems” or whatever
 you want to call it into simple destination names.

 As we get more complex we only need to control the hop-
 building.

 We can break all these modules apart
So let’s sum up what we have at this point




 We defined a CXF (JAX-WS) Endpoint, generated stubs and
 tied it into Camel
  • The MEP (Message Exchange Pattern) is IN/OUT since we use CXF

 We then dropped in a router “Our Dynamic Router”
  • It’ll listen to a JMS queue called recognizer
  • Then it’ll start inspecting headers for a location
Header inspections

 A simple processor, if we wanted to we could make similar
 transformations in XML, Simple, Scala and so on.

 We are just modifying the message header info.

Recommended for you

Minor
MinorMinor
Minor

The document discusses the development of an ATM Simulation System using Java. It aims to build a user-friendly graphical interface to automate ATM functions like transactions and reporting. This would make the system faster and more accurate than the existing manual process. Java was chosen as the programming language since it is platform independent, simple, secure and robust. The document also provides an overview of Java features and history and describes what tools like the Java JDK and MySQL database would be needed to develop the system. It discusses the scope for future improvements like adding an online mode and reports.

My cool new Slideshow!
My cool new Slideshow!My cool new Slideshow!
My cool new Slideshow!

PHP frameworks provide basic functionality and an architecture for building projects. They promote code reuse and speed up development by reducing overhead code needed for tasks like database access, authentication, and validation. While frameworks have learning curves and performance costs, they make code easier to maintain. Popular PHP frameworks include Yii, CodeIgniter, Symfony, Laravel, and CakePHP, with each having their own strengths for different project needs and team sizes. Frameworks help developers build clean, reusable code by enforcing separation of logic and presentation using patterns like MVC.

Datacenter Computing with Apache Mesos - BigData DC
Datacenter Computing with Apache Mesos - BigData DCDatacenter Computing with Apache Mesos - BigData DC
Datacenter Computing with Apache Mesos - BigData DC

The document discusses datacenter computing using Apache Mesos. It begins by discussing concepts like "data democratization" and "cluster democratization", which refer to making data and computing resources available throughout an organization. It then discusses lessons from Google's approach to datacenter computing, and frameworks that can be integrated with Mesos like Hadoop, Spark, and Docker. Examples of companies using Mesos in production are provided, including Twitter, Airbnb, and eBay. Mesos provides a common substrate that makes heterogeneous computing resources available as a homogeneous set, improving scalability, elasticity, fault tolerance and resource utilization.

data sciencebig datause cases
W about that testing?
 hat

 We are going to be dealing with an OSGi environment.
  • Like an EE container it makes testing a tad less fun....

 Full blown container testing with something like SoapUI
   • Can be scripted and automated in Maven

 Full OSGi tests with Pax-Exam
   • Allows you to wire up a full container

 Simple OSGi registry tests with PojoSr
  • Let’s you simulate an environment so you can test BluePrint!

 Functional Junit/TestNG tests with Camel-Test.
   • Should be combined with at least one of the above!
Let’s start with a Camel-T T
                          est est.

 Several flavors
  • Junit, Junit4, TestNG, Spring and so on.
  • Exposes easy access to context, components and inlined route-builders
And the inlined route in the test
A pax exam based test - Straight from Camel’s source

Recommended for you

Microservices for java architects it-symposium-2015-09-15
Microservices for java architects it-symposium-2015-09-15Microservices for java architects it-symposium-2015-09-15
Microservices for java architects it-symposium-2015-09-15

This document provides an overview of microservices for Java architects by Derek Ashmore. It begins by introducing Ashmore and his background. The document then discusses what microservices are, how they differ from traditional monolithic architectures, and considerations for designing microservices like service boundaries, handling failures, ensuring data integrity and performance. It also covers packaging and deployment options for microservices like Spring Boot and Docker. Finally, it addresses some common misconceptions about microservices and provides additional resources for further reading.

microservices
Java EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolithJava EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolith

With the ascent of DevOps, microservices, containers, and cloud-based development platforms, the gap between state-of-the-art solutions and the technology that enterprises typically support has greatly increased. But some enterprises are now looking to bridge that gap by building microservices-based architectures on top of Java EE. In this webcast, Red Hat Developer Advocate Markus Eisele explores the possibilities for enterprises that want to move ahead with this architecture. However, the issue is complex: Java EE wasn't built with the distributed application approach in mind, but rather as one monolithic server runtime or cluster hosting many different applications. If you're part of an enterprise development team investigating the use of microservices with Java EE, this webcast will guide you to answers for getting started.

webcastmicroservicesjavaee
Chicago Microservices Integration Talk
Chicago Microservices Integration TalkChicago Microservices Integration Talk
Chicago Microservices Integration Talk

This document discusses integration in the age of DevOps. It describes how microservices help solve the problem of decoupling services and teams to move quickly at scale. Apache Camel is presented as a solution for integration that allows for reliable and distributed integration through mechanisms like messaging. Kubernetes and Docker are discussed as platforms that help develop and run microservices locally and at scale by providing automation, configuration, isolation and service discovery capabilities.

apache camelintegrationmicroservices
Pax-Exam

 Extend the Camel Tests

 Will be fairly slow, newer Pax-Exam is improved

 Fires up a complete container

 Use this in profiles so you can “turn it off”
PojoSr ; Extend Camels Blueprint T Support
                                  est

 Simple route, pretty much the same syntax as Spring

 This is available from Apache Camel 2.10
The actual test!
Okay back to our code :)
    ,

Recommended for you

Cloud patterns
Cloud patternsCloud patterns
Cloud patterns

This document summarizes Nicolas De Loof's talk about patterns for developing applications in the cloud. The talk discusses scaling applications horizontally and vertically, keeping stateless designs, using standards, and designing for failure. It also emphasizes continuous integration, deployment, and delivery practices like managing infrastructure as code and enabling zero downtime deployments.

platform as a servicejavaonecloud
Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)

This document provides a high-level design proposal for Apache Drill from the OpenDremel team. It outlines four key design tenets: (1) supporting multi-tenant semantics internally without guest VMs, (2) being modular and customizable, (3) being hyper-elastic to exploit compute capacity, and (4) being efficient. It suggests an architecture with a single-tenant frontend and multi-tenant backend separated. It also provides details on the suggested designs for the frontend, CLI, REST gateway, and query compiler.

apache drillzerovmbigdatacraft
Strata SC 2014: Apache Mesos as an SDK for Building Distributed Frameworks
Strata SC 2014: Apache Mesos as an SDK for Building Distributed FrameworksStrata SC 2014: Apache Mesos as an SDK for Building Distributed Frameworks
Strata SC 2014: Apache Mesos as an SDK for Building Distributed Frameworks

O'Reilly Media - Strata SC 2014 Apache Mesos is an open source cluster manager that provides efficient resource isolation for distributed frameworks—similar to Google’s “Borg” and “Omega” projects for warehouse scale computing. It is based on isolation features in the modern kernel: “cgroups” in Linux, “zones” in Solaris. Google’s “Omega” research paper shows that while 80% of the jobs on a given cluster may be batch (e.g., MapReduce), 55-60% of cluster resources go toward services. The batch jobs on a cluster are the easy part—services are much more complex to schedule efficiently. However by mixing workloads, the overall problem of scheduling resources can be greatly improved. Given the use of Mesos as the kernel for a “data center OS”, two additional open source components Chronos (like Unix “cron”) and Marathon (like Unix “init.d”) serve as the building blocks for creating distributed, fault-tolerant, highly-available apps at scale. This talk will examine case studies of Mesos uses in production at scale: ranging from Twitter (100% on prem) to Airbnb (100% cloud), plus MediaCrossing, Categorize, HubSpot, etc. How have these organizations leveraged Mesos to build better, more scalable and efficient distributed apps? Lessons from the Mesos developer community show that one can port an existing framework with a wrapper in approximately 100 line of code. Moreover, an important lesson from Spark is that based on “data center OS” building blocks one can rewrite a distributed system much like Hadoop to be 100x faster within a relatively small amount of source code. These case studies illustrate the obvious benefits over prior approaches based on virtualization: scalability, elasticity, fault-tolerance, high availability, improved utilization rates, etc. Less obvious outcomes also include: reduced time for engineers to ramp-up new services at scale; reduced latency between batch and services, enabling new high-ROI use cases; and enabling dev/test apps to run on a production cluster without disrupting operations.

low latencyborglinux
W got slightly distracted in looking at T Options...
 e                                       est

 First of, let us just do a Camel Test, we want to verify that the
 Dynamic routing works as expected.
 • As you can see, none of these routes know about each other.
Then we want to check that we can load the WS

 Blueprint context - We rely on some AMQ Magic as well!
And our wiring “Test”

 First off, the “Dummy Response”
   • We simulate the real route that only grabs a message and dumps it on a queue,
     we add 2 things.
       Response building
       A Mock destination for validation.
T method
 est

 With this we have a full integrations test including
  • JMS, CXF, OSGi ServiceRegistry, SPI lookup, Component Discovery, JAXB
     validation and schema generation....

Recommended for you

Midwest PHP - Scaling Magento
Midwest PHP - Scaling MagentoMidwest PHP - Scaling Magento
Midwest PHP - Scaling Magento

Mathew Beane discusses strategies for optimizing and scaling Magento applications on clustered infrastructure. Some key points include: - Using Puppetmaster to build out clusters with standard webnodes and database configurations. - Magento supports huge stores and is very flexible and scalable. Redis is preferred over Memcache for caching. - Important to have application optimization, testing protocols and deployment pipelines in place before scaling. - Common components for scaling include load balancers, proxying web traffic, clustering Redis with Sentinel and Twemproxy, adding read servers and auto-scaling.

magento ha cluster
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly DetectionAdvanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly Detection

Cybersecurity is a major concern in today's connected digital world. Threats to organizations are constantly evolving and have the potential to compromise sensitive information, disrupt operations, and lead to significant financial losses. Traditional cybersecurity techniques often fall short against modern attackers. Therefore, advanced techniques for cyber security analysis and anomaly detection are essential for protecting digital assets. This blog explores these cutting-edge methods, providing a comprehensive overview of their application and importance.

cybersecurityanomaly detectionadvanced techniques
20240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 202420240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 2024

Everything that I found interesting last month about the irresponsible use of machine intelligence

quantumfaxmachine
Green Bars!!!

 We’ve tested most functionality, all we really need to do
  • Write the “response-builder”
  • Make that response builder a bit more dynamic so it can work
      Against several queues
      With different responses
      Yes, it is a dummy class. But since it is a Java Object it is pretty darn easy to let
       your imagination run free.
Dynamic config data in Blueprint

 Works like springs property placeholder

 Allows us to set defaults

 A persistent-id corresponds to a config file in ./etc in ServiceMix
 or Karaf.
How we’ll be using this dynamic data

 We basically can use this to write completely dynamic steps that
 will restart on a configuration change from
 • File changes
 • Code changes
 • JMX changes
Proof of concept outline




 We now have the following modules
  • customer-service      : A model library
  • customer-service-ws   : The webservices endpoint
  • dynamic-routing        : A generic module for routing
  • response-builder       : A simple module that returns a payload


  •   That means that all of the needed patterns are fulfilled.
  •   Competing consumer is a natural thing in JMS
  •   Eventing is a natural part of Apache Camel
  •   Request Reply is “Handled for us” based on endpoint and MEP

Recommended for you

INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf

These fighter aircraft have uses outside of traditional combat situations. They are essential in defending India's territorial integrity, averting dangers, and delivering aid to those in need during natural calamities. Additionally, the IAF improves its interoperability and fortifies international military alliances by working together and conducting joint exercises with other air forces.

air force fighter planebiggest submarinezambia port
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing

Invited Remote Lecture to SC21 The International Conference for High Performance Computing, Networking, Storage, and Analysis St. Louis, Missouri November 18, 2021

distributed supercomputerdistributed machine learning
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition

The DealBook is our annual overview of the Ukrainian tech investment industry. This edition comprehensively covers the full year 2023 and the first deals of 2024.

Succeding with the Apache SOA stack
T sum everything up
 o

 Simple OSGi build, we added exports in one place.

 Completely modular design

 Re-usable bundles

 We can deploy this on one or many machines

 We can “cluster” a network of brokers

 We can easily change transport protocols

 We are covered by tests
Thank you very much for your attention!

 Questions?



 Links
   • http://camel.apache.org/
   • http://servicemix.apache.org/
   • http://cxf.apache.org/
   • http://activemq.apache.org/
   • http://karaf.apache.org/

More Related Content

What's hot

Queues queues queues — How RabbitMQ enables reactive architectures
Queues queues queues — How RabbitMQ enables reactive architecturesQueues queues queues — How RabbitMQ enables reactive architectures
Queues queues queues — How RabbitMQ enables reactive architectures
Martin Tajur
 
Red Hat Open Day JBoss Fuse
Red Hat Open Day JBoss FuseRed Hat Open Day JBoss Fuse
Red Hat Open Day JBoss Fuse
Adrian Gigante
 
Making Apache Camel work for you
Making Apache Camel work for you Making Apache Camel work for you
Making Apache Camel work for you
Rogue Wave Software
 
WebSockets with Spring 4
WebSockets with Spring 4WebSockets with Spring 4
WebSockets with Spring 4
Sergi Almar i Graupera
 
Introduction to WebSockets
Introduction to WebSocketsIntroduction to WebSockets
Introduction to WebSockets
Gunnar Hillert
 
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015
Krzysztof Sobkowiak
 
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQLHTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
Ulf Wendel
 
Apache ActiveMQ and Apache Camel
Apache ActiveMQ and Apache CamelApache ActiveMQ and Apache Camel
Apache ActiveMQ and Apache Camel
Omi Om
 
Web Server/App Server Connectivity
Web Server/App Server ConnectivityWeb Server/App Server Connectivity
Web Server/App Server Connectivity
webhostingguy
 
ActiveMQ In Action
ActiveMQ In ActionActiveMQ In Action
ActiveMQ In Action
Bruce Snyder
 
Pushing the web — WebSockets
Pushing the web — WebSocketsPushing the web — WebSockets
Pushing the web — WebSockets
Roland M
 
WebSocket protocol
WebSocket protocolWebSocket protocol
WebSocket protocol
Kensaku Komatsu
 
Camelone-2012 HTML5 WebSocket ActiveMQ/Camel
Camelone-2012 HTML5 WebSocket ActiveMQ/CamelCamelone-2012 HTML5 WebSocket ActiveMQ/Camel
Camelone-2012 HTML5 WebSocket ActiveMQ/Camel
Charles Moulliard
 
The HTML5 WebSocket API
The HTML5 WebSocket APIThe HTML5 WebSocket API
The HTML5 WebSocket API
David Lindkvist
 
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)
Peter Lubbers
 
HTML5 WebSocket Introduction
HTML5 WebSocket IntroductionHTML5 WebSocket Introduction
HTML5 WebSocket Introduction
Marcelo Jabali
 
JBoss Fuse - Fuse workshop EAP container
JBoss Fuse - Fuse workshop EAP containerJBoss Fuse - Fuse workshop EAP container
JBoss Fuse - Fuse workshop EAP container
Christina Lin
 
Joomla! Performance on Steroids
Joomla! Performance on SteroidsJoomla! Performance on Steroids
Joomla! Performance on Steroids
SiteGround.com
 
Realtime with-websockets-2015
Realtime with-websockets-2015Realtime with-websockets-2015
Realtime with-websockets-2015
ColdFusionConference
 
Make easier Integration of your services with Fuse Solutions - RedHat 2013
Make easier Integration of your services with Fuse Solutions - RedHat 2013Make easier Integration of your services with Fuse Solutions - RedHat 2013
Make easier Integration of your services with Fuse Solutions - RedHat 2013
Charles Moulliard
 

What's hot (20)

Queues queues queues — How RabbitMQ enables reactive architectures
Queues queues queues — How RabbitMQ enables reactive architecturesQueues queues queues — How RabbitMQ enables reactive architectures
Queues queues queues — How RabbitMQ enables reactive architectures
 
Red Hat Open Day JBoss Fuse
Red Hat Open Day JBoss FuseRed Hat Open Day JBoss Fuse
Red Hat Open Day JBoss Fuse
 
Making Apache Camel work for you
Making Apache Camel work for you Making Apache Camel work for you
Making Apache Camel work for you
 
WebSockets with Spring 4
WebSockets with Spring 4WebSockets with Spring 4
WebSockets with Spring 4
 
Introduction to WebSockets
Introduction to WebSocketsIntroduction to WebSockets
Introduction to WebSockets
 
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015
 
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQLHTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
 
Apache ActiveMQ and Apache Camel
Apache ActiveMQ and Apache CamelApache ActiveMQ and Apache Camel
Apache ActiveMQ and Apache Camel
 
Web Server/App Server Connectivity
Web Server/App Server ConnectivityWeb Server/App Server Connectivity
Web Server/App Server Connectivity
 
ActiveMQ In Action
ActiveMQ In ActionActiveMQ In Action
ActiveMQ In Action
 
Pushing the web — WebSockets
Pushing the web — WebSocketsPushing the web — WebSockets
Pushing the web — WebSockets
 
WebSocket protocol
WebSocket protocolWebSocket protocol
WebSocket protocol
 
Camelone-2012 HTML5 WebSocket ActiveMQ/Camel
Camelone-2012 HTML5 WebSocket ActiveMQ/CamelCamelone-2012 HTML5 WebSocket ActiveMQ/Camel
Camelone-2012 HTML5 WebSocket ActiveMQ/Camel
 
The HTML5 WebSocket API
The HTML5 WebSocket APIThe HTML5 WebSocket API
The HTML5 WebSocket API
 
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)
 
HTML5 WebSocket Introduction
HTML5 WebSocket IntroductionHTML5 WebSocket Introduction
HTML5 WebSocket Introduction
 
JBoss Fuse - Fuse workshop EAP container
JBoss Fuse - Fuse workshop EAP containerJBoss Fuse - Fuse workshop EAP container
JBoss Fuse - Fuse workshop EAP container
 
Joomla! Performance on Steroids
Joomla! Performance on SteroidsJoomla! Performance on Steroids
Joomla! Performance on Steroids
 
Realtime with-websockets-2015
Realtime with-websockets-2015Realtime with-websockets-2015
Realtime with-websockets-2015
 
Make easier Integration of your services with Fuse Solutions - RedHat 2013
Make easier Integration of your services with Fuse Solutions - RedHat 2013Make easier Integration of your services with Fuse Solutions - RedHat 2013
Make easier Integration of your services with Fuse Solutions - RedHat 2013
 

Similar to Succeding with the Apache SOA stack

Using Apache Camel as AKKA
Using Apache Camel as AKKAUsing Apache Camel as AKKA
Using Apache Camel as AKKA
Johan Edstrom
 
WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...
WSO2
 
Was l iberty for java batch and jsr352
Was l iberty for java batch and jsr352Was l iberty for java batch and jsr352
Was l iberty for java batch and jsr352
sflynn073
 
J2EE Batch Processing
J2EE Batch ProcessingJ2EE Batch Processing
J2EE Batch Processing
Chris Adkin
 
Frameworks Galore: A Pragmatic Review
Frameworks Galore: A Pragmatic ReviewFrameworks Galore: A Pragmatic Review
Frameworks Galore: A Pragmatic Review
netc2012
 
Building Asynchronous Applications
Building Asynchronous ApplicationsBuilding Asynchronous Applications
Building Asynchronous Applications
Johan Edstrom
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience
Igor Anishchenko
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience
Alex Tumanoff
 
Cloudy in Indonesia: Java and Cloud
Cloudy in Indonesia: Java and CloudCloudy in Indonesia: Java and Cloud
Cloudy in Indonesia: Java and Cloud
Eberhard Wolff
 
Integration in the age of DevOps
Integration in the age of DevOpsIntegration in the age of DevOps
Integration in the age of DevOps
Albert Wong
 
Minor
MinorMinor
Minor
rkorishabh
 
My cool new Slideshow!
My cool new Slideshow!My cool new Slideshow!
My cool new Slideshow!
netzwelt12345
 
Datacenter Computing with Apache Mesos - BigData DC
Datacenter Computing with Apache Mesos - BigData DCDatacenter Computing with Apache Mesos - BigData DC
Datacenter Computing with Apache Mesos - BigData DC
Paco Nathan
 
Microservices for java architects it-symposium-2015-09-15
Microservices for java architects it-symposium-2015-09-15Microservices for java architects it-symposium-2015-09-15
Microservices for java architects it-symposium-2015-09-15
Derek Ashmore
 
Java EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolithJava EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolith
Markus Eisele
 
Chicago Microservices Integration Talk
Chicago Microservices Integration TalkChicago Microservices Integration Talk
Chicago Microservices Integration Talk
Christian Posta
 
Cloud patterns
Cloud patternsCloud patterns
Cloud patterns
Nicolas De Loof
 
Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)
Camuel Gilyadov
 
Strata SC 2014: Apache Mesos as an SDK for Building Distributed Frameworks
Strata SC 2014: Apache Mesos as an SDK for Building Distributed FrameworksStrata SC 2014: Apache Mesos as an SDK for Building Distributed Frameworks
Strata SC 2014: Apache Mesos as an SDK for Building Distributed Frameworks
Paco Nathan
 
Midwest PHP - Scaling Magento
Midwest PHP - Scaling MagentoMidwest PHP - Scaling Magento
Midwest PHP - Scaling Magento
Mathew Beane
 

Similar to Succeding with the Apache SOA stack (20)

Using Apache Camel as AKKA
Using Apache Camel as AKKAUsing Apache Camel as AKKA
Using Apache Camel as AKKA
 
WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...
 
Was l iberty for java batch and jsr352
Was l iberty for java batch and jsr352Was l iberty for java batch and jsr352
Was l iberty for java batch and jsr352
 
J2EE Batch Processing
J2EE Batch ProcessingJ2EE Batch Processing
J2EE Batch Processing
 
Frameworks Galore: A Pragmatic Review
Frameworks Galore: A Pragmatic ReviewFrameworks Galore: A Pragmatic Review
Frameworks Galore: A Pragmatic Review
 
Building Asynchronous Applications
Building Asynchronous ApplicationsBuilding Asynchronous Applications
Building Asynchronous Applications
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience
 
Cloudy in Indonesia: Java and Cloud
Cloudy in Indonesia: Java and CloudCloudy in Indonesia: Java and Cloud
Cloudy in Indonesia: Java and Cloud
 
Integration in the age of DevOps
Integration in the age of DevOpsIntegration in the age of DevOps
Integration in the age of DevOps
 
Minor
MinorMinor
Minor
 
My cool new Slideshow!
My cool new Slideshow!My cool new Slideshow!
My cool new Slideshow!
 
Datacenter Computing with Apache Mesos - BigData DC
Datacenter Computing with Apache Mesos - BigData DCDatacenter Computing with Apache Mesos - BigData DC
Datacenter Computing with Apache Mesos - BigData DC
 
Microservices for java architects it-symposium-2015-09-15
Microservices for java architects it-symposium-2015-09-15Microservices for java architects it-symposium-2015-09-15
Microservices for java architects it-symposium-2015-09-15
 
Java EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolithJava EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolith
 
Chicago Microservices Integration Talk
Chicago Microservices Integration TalkChicago Microservices Integration Talk
Chicago Microservices Integration Talk
 
Cloud patterns
Cloud patternsCloud patterns
Cloud patterns
 
Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)
 
Strata SC 2014: Apache Mesos as an SDK for Building Distributed Frameworks
Strata SC 2014: Apache Mesos as an SDK for Building Distributed FrameworksStrata SC 2014: Apache Mesos as an SDK for Building Distributed Frameworks
Strata SC 2014: Apache Mesos as an SDK for Building Distributed Frameworks
 
Midwest PHP - Scaling Magento
Midwest PHP - Scaling MagentoMidwest PHP - Scaling Magento
Midwest PHP - Scaling Magento
 

Recently uploaded

Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly DetectionAdvanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Bert Blevins
 
20240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 202420240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 2024
Matthew Sinclair
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
jackson110191
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
Larry Smarr
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
Yevgen Sysoyev
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
Sally Laouacheria
 
Best Programming Language for Civil Engineers
Best Programming Language for Civil EngineersBest Programming Language for Civil Engineers
Best Programming Language for Civil Engineers
Awais Yaseen
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
SynapseIndia
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
HackersList
 
Password Rotation in 2024 is still Relevant
Password Rotation in 2024 is still RelevantPassword Rotation in 2024 is still Relevant
Password Rotation in 2024 is still Relevant
Bert Blevins
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
Kief Morris
 
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Mydbops
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
Stephanie Beckett
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
ishalveerrandhawa1
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
RaminGhanbari2
 
Transcript: Details of description part II: Describing images in practice - T...
Transcript: Details of description part II: Describing images in practice - T...Transcript: Details of description part II: Describing images in practice - T...
Transcript: Details of description part II: Describing images in practice - T...
BookNet Canada
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
Larry Smarr
 
Cookies program to display the information though cookie creation
Cookies program to display the information though cookie creationCookies program to display the information though cookie creation
Cookies program to display the information though cookie creation
shanthidl1
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
Matthew Sinclair
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Chris Swan
 

Recently uploaded (20)

Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly DetectionAdvanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
 
20240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 202420240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 2024
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
 
Best Programming Language for Civil Engineers
Best Programming Language for Civil EngineersBest Programming Language for Civil Engineers
Best Programming Language for Civil Engineers
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
 
Password Rotation in 2024 is still Relevant
Password Rotation in 2024 is still RelevantPassword Rotation in 2024 is still Relevant
Password Rotation in 2024 is still Relevant
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
 
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
 
Transcript: Details of description part II: Describing images in practice - T...
Transcript: Details of description part II: Describing images in practice - T...Transcript: Details of description part II: Describing images in practice - T...
Transcript: Details of description part II: Describing images in practice - T...
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
 
Cookies program to display the information though cookie creation
Cookies program to display the information though cookie creationCookies program to display the information though cookie creation
Cookies program to display the information though cookie creation
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
 

Succeding with the Apache SOA stack

  • 1. Succeeding with the Apache SOA stack And debunking some SOA myths Johan Edstrom SOA Executive and Apache developer. jedstrom@ savoirtech.com joed@ apache.org Jeff Genender Principal jgenender@ savoirtech.com
  • 2. Johan and Jeff and Heath
  • 3. Agenda  What is an ESB? • Where would an “ESB” fit in? • How do you choose the ESB? • Reasons for picking the Apache ServiceMix stack  Modular  Stable  Cluster capable  How to design software and the build system for an ESB • Karaf and ServiceMix are OSGi based, ServiceMix also can handle JBI. • The Apache projects are modularized using Maven.  Get over it and accept it :)
  • 4. Key parts to scalability  The right resources in the right place  Messaging • Or any other asynchronous system  State driven  Conversational  Effectively aggregating  Transactionally safe  Correctly utilizing EE
  • 5. W is an ESB? hat  In my world it is simply a runtime for deploying asynchronous, event driven code. • So, yes; of course most of you have deployed and built ESB solutions. • Yes, of course we are partial to “ESB” solutions.  What is an ESB in marketing slides? • Components • Data-transformations • Scalability and performance (You can randomly wave your hands here) • A Bus  This is a mythical, magical, illusionary fantastically awesome thing that transparently just makes everything work.
  • 6. Where does the marketing ESB fit in?  Picking up a file from a file area, transforming it with XSLT, publishing to a web-service.  Consuming a web-service, using a RoutingSlip and sending to a product, then inventory queue on a JMS provider  Consuming a web-service payload and transforming the data to an insert in a JDBC component  Providing “Enterprise routing infrastructure”  Providing “Enterprise orchestration”
  • 7. And what about a real world one?  Where you need to do any of the marketing ESB stuff • Of course they are valid use-cases  Where you want web-apps to be able to share resources • ServiceMix / Karaf happily will work as a servlet container  Long running processing, “Orchestration”  Any type of data transformation scenarios
  • 8. Real one  Multi-Protocol input/output  Complex publish subscribe systems  Where you need to process in parallel  In Springism’s - anywhere you have a Bean-Ref you could start breaking things apart.
  • 9. This is what we are trying to avoid....
  • 10. And this is probably what you are looking at
  • 11. I’ll interpret that for y’all!
  • 12. So how is that “ESB” designed?  This is not far from an EE container • Add OpenEJB if you want and you’ll have a full stack  It contains a web-services layer  Dependency injection services  OSGi integration and legacy (JBI) support  Camel for routing, transformation and mediation  Aries and Spring for EE support, JNDI, TX, JPA  Web-app deployment support
  • 13. So why is that so cool?  Well.... You can treat it in the classical manner  Or as a really kick-ass funky container  Or - as a nice fusion of them both!
  • 14. Apache ActiveMQ  Communications platform of choice, providing high performance, scalability, and mission-critical reliability for distributed enterprise computing.  Apache ActiveMQ supports based on specs: • JMS 1.1 • J2EE 1.4 integration-related components including JDBC, JCA, and EJBs; dependent specifications such as JTA and JNDI; • AJAX, REST, HTTP, TCP, SSL, NIO+SSL, UDP, multicast, JGroups and JXTA transport protocols
  • 15. ActiveMQ “Instability”  Instability... what is it? • Most common term used by end users • Generally refers to ActiveMQ being frozen or completely seized  Refers to producers being unable to send message  Refers to queues being frozen/seized or stuck messages  Generally temporarily is fixed by the holdover from the Microsoft days • The 3-finger salute (ctrl-alt-delete) • Restart of ActiveMQ  Followed by complaints that ActiveMQ is trash • Blog by David Pollak: “ActiveMQ: not ready for prime time”  http://goodstuff.im/activemq-not-ready-for-prime-time • Is ActiveMQ trash or not properly written?  Not trash...its a very properly written... its extremely powerful • If I have these problems, what do you do? Diagnose it first ;-)
  • 16. Apache ActiveMQ  This is another presentation :) • So you need to attend that one if you want to debate ActiveMQ.
  • 17. Apache ActiveMQ - Additional functionality  Advisory Queues and Topics are administrative channels. • The Broker periodically posts information about the status of known destinations • Administration focused programs can subscribe to advisory messages like any other Topic  Useful life-cycle and supplementary notifications  Advisories are generated for the following: • Starting and stopping consumers and producers • Creating and destroying temporary destinations • Expiring messages on topics and queues • Sending messages from brokers to destinations with no consumers • Starting and stopping connections
  • 18. Apache ActiveMQ, Easy to scale  Can bridge, multicast, “cluster” as well as integrate with other JMS providers
  • 19. Apache ActiveMQ - High Availability Pro Con Replicated No “single” point of Supports only a single failure slave. Requires manual restart and synchronization to bring back a failed master Shared File No “single” point of Requires a networked failure. Can run file-system solution multiple slaves, with locking automatic recovery. JDBC No “single” point of Slow failure. Can run multiple slaves,
  • 20. Apache Camel  A powerful rule based routing and mediation engine.  Provides a POJO-based implementation of Enterprise Integration Patterns using Java DSL (Domain Specific Language) or Spring / Aries Blueprint to configure routing and mediation rules.  Uses generics, annotations and URIs so that it can easily work directly with any kind of transport or messaging model such as HTTP, JMS, JBI, SCA, MINA or CXF Bus API without mandating a normalized message API.  Designed as a small library which has “minimal” dependencies for easy embedding in any Java application.
  • 21. Apache Camel Features  Camel is a Domain Specific Language (DSL) focussed on implementing Enterprise Integration Patterns (EIPs) • Examples: multicast, splitter, content-based router, routing slip, dynamic routers, aggregator  EIPs are implemented by Camel “Processors” • Users can develop their own processors • A processor is a fundamental building block • Bean language and bindings exists so that not a single piece of Apache Camel Imports will be necessary when integrating your existing code  Camel can connect to a wide variety of integration technologies • Examples: JMS, HTTP, FTP, SOAP, File - There are ~ 120 components • Integrations are implemented by Camel “Components” • Users can develop their own components
  • 22. And it is a pretty healthy library!  Camel makes application design & development easy: • Reduces time to create integration flows • Reduces complexity of integration flows and makes them easier to maintain • Routes can be deployed in mainstream typical containers (OSGi, JEE, Servlet, etc.)  Used in several commercial offerings  Used in “competing” offerings  About as close to an Integrations standard as you can get  The community stays at a high level: • 503 subscribers to the users mailing list • 183 subscribers to the dev mailing list  The community is active • ~863 mails per month on users mailing list in Mar 2011 - May 2012 (+25 %) • ~167 mails per month on the dev mailing list in Mar 2011 - May 2012 (-15 %) • Avg. 535 commits per month in Mar 2011 - May 2012 (+5 %)
  • 23. CXF  Simple, flexible, interceptor based, standards compliant framework for building JAX-WS and JAX-RS services and consumers
  • 24. Additional - Application development tools  Spring-DM and Spring  Aries Blueprint  Google Guice  Felix iPojo  And so on.....
  • 25. Do I need all of that?  Nope, many solutions will need just a few things • jaxb, camel, jms, soap, rest and perhaps jdbc • Cut the container down to fit your needs • We don’t need to load all of the 100+ Apache Camel components • Pick and choose!  Should I run that messaging solution inside the “ESB” • Entirely up to you, let us look a little deeper at that in a sec.  Can I test these solutions or am I stuck with System.out.println and a remote debugger?
  • 26. I’ve heard that OSGi sucks?  Yes, It is a bit more complex to manage a full lifecycle • On the other hand you get reliable hot-deployment and things like configuration, service management and subscriptions out of the box.  Yes, package level import export can be confusing • So make sure you use packages in a nice modular way.  Yes, it takes a while to learn the tooling • Then did you wake up one day just knowing that WAR or EAR layout?  Yes, you need to learn the classpath and a bit about classloading • Which’ll make you a better developer in the end of the day. • Many problems in this area actually are created by applying EE classloaders to an OSGi environment.
  • 27. More suckage  You have to write modular software!!!! • Yes, you’ll benefit from writing modular software  Heh :)  Yes, some third party libraries are “Fluster-Clucks” in OSGi • You can always re-package em’ or use something else. • ServiceMix bundles  Yes, logging is strange and odd • So Pax logging is provided  Yes, It was hard to get Hibernate working at one point in time • And there are like a bazillion blogs about getting it working.....
  • 28. W is the simplest way of addressing teh SUKZ? hat  Use Apache Maven. • Just accept it.  Designate a maven fascist • Keep your builds nice and clean • Physically and monetary make sure that you abuse people breaking builds • Structure your projects as early as you can • Don’t be afraid of using a truckload of modules • Get familiar with the OSGi plugins, let your modules inherit base settings  Go steal that build setup for Apache Karaf or Apache Camel!  Use a whiteboard and perhaps do a few diagrams every now and then?  Other ways of 100% guaranteed suckcess is to rely only on blogs, random advice on irc and never reading source code.
  • 29. And keep this in mind... Spring-DM... it’s a bit like Trump’s hair... Spring-DM... it’s a bit like Trump’s hair... Its there... it covers quite a bit... but it’s kinda hard to recommend. Looks great... but needs a lot of maintenance or it becomes a big mess.
  • 30. Let’s say we liked the Apache stack!  And let us say we have a very simple and silly use-case • We want to accept incoming SOAP requests • We need to inspect those HTTP headers and then use them to route • We want this to be dynamic and flexible  We might want to add a more complex routing engine later • We want this to be modular and possible to run across multiple systems  This tells us we could use • Spring or Aries Blueprint, Google Guice or plain old Java • We will use Apache CXF for the WS part • We will use Apache Camel for connecting this and routing • We will use JMS via Apache Camel-JMS
  • 32. Proof of concept outline  Let us use some EIP pattern symbols to outline this • We haven’t really made any technology statements here  We are going to use Apache ActiveMQ because I said so.  It could easily have been any other JMS provider. • We know we’ll have a synchronous part  Web-services by nature are. • We’ll try and make all the other parts asynchronous • We’ll also make sure that the participants don’t need strong integration or visibility of each other, thus we’ll (hopefully) end up with some pretty re-usable modules • Another good approach is to also use sequence diagrams
  • 33. Let’s craft some code!  We’ll start with the Maven setup • Use properties • Define a parent • Like said previously, steal a good setup • Inherit, inherit, inherit • Use modules  We also ripped a WSDL from Apache CXF • SOAP Entry point • Gives something to code-gen against • Common use-case
  • 34. Maven  Complicated parent pom  Very simple sub-modules
  • 36. W else do we want here? hat  A “Dynamic” Router! • We’ll craft a simple header based Dynamic router from eip patterns.  Technically it is in between a routing slip with termination and a real control channel pattern, we utilize JMS as our control channel for this.  We use this example to play with destinations from SoapUI
  • 37. The “Dynamic Router”  Yep, it is just a Java class. • Imagine how easily you could integrate this with.... Anything!
  • 38. W build that type of a route? hy  We are able to turn “endpoints”, “routing”, “systems” or whatever you want to call it into simple destination names.  As we get more complex we only need to control the hop- building.  We can break all these modules apart
  • 39. So let’s sum up what we have at this point  We defined a CXF (JAX-WS) Endpoint, generated stubs and tied it into Camel • The MEP (Message Exchange Pattern) is IN/OUT since we use CXF  We then dropped in a router “Our Dynamic Router” • It’ll listen to a JMS queue called recognizer • Then it’ll start inspecting headers for a location
  • 40. Header inspections  A simple processor, if we wanted to we could make similar transformations in XML, Simple, Scala and so on.  We are just modifying the message header info.
  • 41. W about that testing? hat  We are going to be dealing with an OSGi environment. • Like an EE container it makes testing a tad less fun....  Full blown container testing with something like SoapUI • Can be scripted and automated in Maven  Full OSGi tests with Pax-Exam • Allows you to wire up a full container  Simple OSGi registry tests with PojoSr • Let’s you simulate an environment so you can test BluePrint!  Functional Junit/TestNG tests with Camel-Test. • Should be combined with at least one of the above!
  • 42. Let’s start with a Camel-T T est est.  Several flavors • Junit, Junit4, TestNG, Spring and so on. • Exposes easy access to context, components and inlined route-builders
  • 43. And the inlined route in the test
  • 44. A pax exam based test - Straight from Camel’s source
  • 45. Pax-Exam  Extend the Camel Tests  Will be fairly slow, newer Pax-Exam is improved  Fires up a complete container  Use this in profiles so you can “turn it off”
  • 46. PojoSr ; Extend Camels Blueprint T Support est  Simple route, pretty much the same syntax as Spring  This is available from Apache Camel 2.10
  • 48. Okay back to our code :) ,
  • 49. W got slightly distracted in looking at T Options... e est  First of, let us just do a Camel Test, we want to verify that the Dynamic routing works as expected. • As you can see, none of these routes know about each other.
  • 50. Then we want to check that we can load the WS  Blueprint context - We rely on some AMQ Magic as well!
  • 51. And our wiring “Test”  First off, the “Dummy Response” • We simulate the real route that only grabs a message and dumps it on a queue, we add 2 things.  Response building  A Mock destination for validation.
  • 52. T method est  With this we have a full integrations test including • JMS, CXF, OSGi ServiceRegistry, SPI lookup, Component Discovery, JAXB validation and schema generation....
  • 53. Green Bars!!!  We’ve tested most functionality, all we really need to do • Write the “response-builder” • Make that response builder a bit more dynamic so it can work  Against several queues  With different responses  Yes, it is a dummy class. But since it is a Java Object it is pretty darn easy to let your imagination run free.
  • 54. Dynamic config data in Blueprint  Works like springs property placeholder  Allows us to set defaults  A persistent-id corresponds to a config file in ./etc in ServiceMix or Karaf.
  • 55. How we’ll be using this dynamic data  We basically can use this to write completely dynamic steps that will restart on a configuration change from • File changes • Code changes • JMX changes
  • 56. Proof of concept outline  We now have the following modules • customer-service : A model library • customer-service-ws : The webservices endpoint • dynamic-routing : A generic module for routing • response-builder : A simple module that returns a payload • That means that all of the needed patterns are fulfilled. • Competing consumer is a natural thing in JMS • Eventing is a natural part of Apache Camel • Request Reply is “Handled for us” based on endpoint and MEP
  • 58. T sum everything up o  Simple OSGi build, we added exports in one place.  Completely modular design  Re-usable bundles  We can deploy this on one or many machines  We can “cluster” a network of brokers  We can easily change transport protocols  We are covered by tests
  • 59. Thank you very much for your attention!  Questions?  Links • http://camel.apache.org/ • http://servicemix.apache.org/ • http://cxf.apache.org/ • http://activemq.apache.org/ • http://karaf.apache.org/