FUSE-ESB4 An open-source OSGi based platform for EAI and SOA

Similar documents
FUSE ESB. Getting Started with FUSE ESB. Version 4.1 April 2009

Operations and Monitoring with Spring

RED HAT JBOSS FUSE. An open source enterprise service bus

Building a Service Oriented Architecture with ServiceMix. Jeff Genender CTO Savoir Technologies, Inc

Talend ESB. Getting Started Guide 5.5.1

SOA Fundamentals For Java Developers. Alexander Ulanov, System Architect Odessa, 30 September 2008

The future of middleware: enterprise application integration and Fuse

GlassFish v3. Building an ex tensible modular Java EE application server. Jerome Dochez and Ludovic Champenois Sun Microsystems, Inc.

Reusing Existing * Java EE Applications from Oracle SOA Suite

Talend Open Studio for ESB. Release Notes 5.2.1

Building a Modular Server Platform with OSGi. Dileepa Jayakody Software Engineer SSWSO2 Inc.

Converting Java EE Applications into OSGi Applications

Experiences with Open-Source BPM/SOA-based Stack using Java EE Rok Povše, Matjaž B. Jurič

Apache Karaf in real life ApacheCon NA 2014

WELCOME TO Open Source Enterprise Architecture

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

Building the European Biodiversity. Observation Network (EU BON)

OSGi Remote Management

RED HAT JBOSS FUSE. A lightweight, flexible integration platform

Outline SOA. Properties of SOA. Service 2/19/2016. Definitions. Comparison of component technologies. Definitions Component technologies

Server-side OSGi with Apache Sling. Felix Meschberger Day Management AG 124

APAC WebLogic Suite Workshop Oracle Parcel Service Overview. Jeffrey West Application Grid Product Management

Developing modular Java applications

Next-Generation ESB. Kevin Conner SOA Platform Architect, Red Hat Keith Babo JBoss ESB Project Lead, Red Hat. June 23rd, 2010

President and Director OeHF. Implementing IHE Actors using the Open ehealth Integration Platform (IPF)

JBoss SOAP Web Services User Guide. Version: M5

Enterprise Service Bus Evaluation as Integration Platform for Ocean Observatories

Web Service Development Using CXF. - Praveen Kumar Jayaram

OSGi Service Platform in Integrated Management Environments Telefonica I+D, DIT-UPM, Telvent. copyright 2004 by OSGi Alliance All rights reserved.

How to secure your Apache Camel deployment

REST and SOAP Services with Apache CXF

JBI and OpenESB. Introduction to Technology. Michael Czapski Advanced Solutions Architect, SOA/BI/Java CAPS Sun Microsystems, ANZ

Integration of Different Aspects of Multi-Tenancy in an Open Source Enterprise Service Bus

<Insert Picture Here> GlassFish v3 - A Taste of a Next Generation Application Server

ITS. Java WebService. ITS Data-Solutions Pvt Ltd BENEFITS OF ATTENDANCE:

Swordfish SOA Runtime Framework

Module 13 Implementing Java EE Web Services with JAX-WS

Author: Gennaro Frazzingaro Universidad Rey Juan Carlos campus de Mostòles (Madrid) GIA Grupo de Inteligencia Artificial

ActiveVOS Server Architecture. March 2009

MESSAGING SECURITY USING GLASSFISH AND OPEN MESSAGE QUEUE

Developing Java Web Services

WebSphere Training Outline

Creating new university management software by methodologies of Service Oriented Architecture (SOA)

Introduction to Sun ONE Application Server 7

What is the NXTware Evolution Server Peter Marquez, Product Marketing ecube Systems

Saturday, June 30, 12

WEB SERVICES. Revised 9/29/2015

Efficient Monitoring of OSGi Applications

Secure Identity Propagation Using WS- Trust, SAML2, and WS-Security 12 Apr 2011 IBM Impact

Introduction to WebSphere Process Server and WebSphere Enterprise Service Bus

NetBeans IDE Field Guide

Introduction to Service Oriented Architecture (SOA)

Course Description. Course Audience. Course Outline. Course Page - Page 1 of 5

EAI OVERVIEW OF ENTERPRISE APPLICATION INTEGRATION CONCEPTS AND ARCHITECTURES. Enterprise Application Integration. Peter R. Egli INDIGOO.

Red Hat JBoss Fuse Product Introduction. Version 6.0 April 2013

Apache Sling A REST-based Web Application Framework Carsten Ziegeler cziegeler@apache.org ApacheCon NA 2014

Riding the (Apache) Camel into the cloud!

How To Create A C++ Web Service

EMC XDS Repository Connector for ViPR

Deploying to WebSphere Process Server and WebSphere Enterprise Service Bus

How To Develop A Web Service In A Microsoft J2Ee (Java) 2.5 (Oracle) 2-Year Old (Orcient) 2Dj (Oracles) 2E (Orca) 2Gj (J

PEtALS Quick Start. PEtALS Team Roland NAUDIN - February

Beyond the SOA/BPM frontiers Towards a complete open cooperative environment

JBOSS ESB. open source community experience distilled. Beginner's Guide. Enterprise. Magesh Kumar B

CHAPTER 1 - JAVA EE OVERVIEW FOR ADMINISTRATORS

}w!"#$%&'()+,-./012345<ya

Enterprise Service Bus

Apigee Gateway Specifications

IBM WebSphere Server Administration

Migrating Applications From IBM WebSphere to Apache Tomcat

Methods and tools for data and software integration Enterprise Service Bus

A standards-based approach to application integration

A SOA Based Framework for the Palestinian e-government Integrated Central Database

AquaLogic Service Bus

WebSphere Server Administration Course

ebay : How is it a hit

1 What Are Web Services?

Oracle WebLogic Foundation of Oracle Fusion Middleware. Lawrence Manickam Toyork Systems Inc

1 What Are Web Services?

Implementing Enterprise Integration Patterns Using Open Source Frameworks

JAVA API FOR XML WEB SERVICES INTRODUCTION TO JAX-WS, THE JAVA API FOR XML BASED WEB SERVICES (SOAP, WSDL)

Building an Enterprise Service Bus Using Web Services and Apache Synapse v2

National Aeronautics and Space Administration (NASA) OpenSource ESB. Version 4.0

Consuming and Producing Web Services with WST and JST. Christopher M. Judd. President/Consultant Judd Solutions, LLC

applications. JBoss Enterprise Application Platform

AquaLogic ESB Design and Integration (3 Days)

Java EE 7: Back-End Server Application Development

INTEGRATION BETWEEN WEB STORE AND WEB SERVICE USING APACHE CAMEL INTEGRATION FRAMEWORK

Consuming and Producing Web Services with Web Tools. Christopher M. Judd. President/Consultant Judd Solutions, LLC

EAI and Spring Integration. Josh Long Architect, Software Engineer JoshLong.com

Designing an Enterprise Application Framework for Service-Oriented Architecture 1

enterprise^ IBM WebSphere Application Server v7.0 Security "publishing Secure your WebSphere applications with Java EE and JAAS security standards

Oracle WebLogic Server 11g Administration

Eclipse Open Healthcare Framework

JBS-102: Jboss Application Server Administration. Course Length: 4 days

Oracle Service Bus. Situation. Oracle Service Bus Primer. Product History and Evolution. Positioning. Usage Scenario

Transcription:

FUSE-ESB4 An open-source OSGi based platform for EAI and SOA

Introduction to FUSE-ESB4 It's a powerful OSGi based multi component container based on ServiceMix4 http://servicemix.apache.org/smx4/index.html Fully supported by Progress Software Corporation http://www.fusesource.com Based on the same Apache licensing schema: Apache 2 It supports multiple component models: OSGi bundles JBI artifacts Servlets Spring Beans Camel (http://activemq.apache.org/camel) Routes CXF (http://cxf.apache.org/) based webservices Extensible to support additional component models like ejbs

Introduction to FUSE-ESB4 dard OSGi container adding very useful features for dealing with OSGi bundles the technology layer provides different set of technologies implementing different component model JBI 1.0 JBI 2.0 JAX-WS JMS Spring JEE JAX-RS Console Logging Deployer Provisioning Admin Spring DM OSGi Kernel

Introduction to FUSE-ESB4 The kernel is a lightweight OSGi based runtime The following features are added to the standard ones: Hot deployment: just copying artifacts on a spefici directory all the supported artifacts are deployed Dynamic configuration: the system is able to detect and propagate accordingly changes to the configuration files Logging System: it provides a multi APIs centralized logging back end (JDK 1.4, JCL, SLF4J, Avalon, Tomcat, OSGi)

Introduction to FUSE-ESB4 Provisioning: it provides powerful mechanisms for provisioning of libraries and/or applications. The application provisioning can be done either locally or remotely Extensible Shell console: FUSE-ESB4 has a text console with a broad range of commands. Through the console it's possible to manage services, install new applications/bundles and manage their state Remote access: it's possible to access the console remotely either from another FUSE-ESB instance or a lightweight client. It allows to execute the same commands remotey on top a secure and encrypted channel. Security framework based on JAAS

Introduction to FUSE-ESB FUSE-ESB4 Architecture: technology layer The technology layer is a collection of many bundles that collectively provides different component models and supporting technologies: JBI 1.0: FUSE-ESB can be used as a standard JBI container Spring: FUSE-ESB allows to just deploy Spring configuration files, it provides also support for the Spring OSGi based APIs (Spring DM) FUSE-ESB provides JMS support through the integration with ActiveMQ ( http://activemq.apache.org), one or more message brokers can be deployed inside the container. The shell console provides commands for the message broker administration JAX-WS: FUSE-ESB provides full support for JAX-WS 2.1 through the integration with CXF (http://cxf.apache.org) Camel: FUSE-ESB can be used as a Camel container: Camel routes can be deployed, started and stopped (http://activemq.apache.org/camel)

Introduction to OSGi OSGi stands for Open Services Gateway initiative It was initially focused on the deployment of Java application into residential gateways and small devices like mobile phones The OSGi alliance was founded in 1999 to promote wide scale adoption of OSGi technology. URL: http://www.osgi.org

Introduction to OSGi OSGi is a Java framework built around the concept of bundle A bundle is just a JAR with additional meta information put into its MANIFEST A bundle provides Java classes and it can optionally provide services, where a service is just a POJO A bundle can use/import other Java classes exported by other bundles The OSGi framework provides a sophisticated mechanism for managing dependnecies among bundles exporting classes and bundles importing classes

Introduction to OSGi The OSGi OSGi Service Platform is comprised of two parts: the OSGi framework and OSGi standard services. The framework is the core of the OSGi platform; it is the runtime that implements and provides OSGi functionality: Dependency management Bundle Lifecycle The standard services define reusable APIs for common tasks, such as Logging and Preferences.

Introduction to OSGi The OSGi framework is comprised of three layers: Modularity layer: bundle packaging and dependency management Lifecycle layer: run-time bundle management and access to the underlying OSGi framework Service layer: this layer is concerned with interaction and communication among bundles

Introduction to OSGi The modularity layer defines the bundle concept A bundle it's a jar file containing all the classes and their related resources Using specific properties put into the jar's manifest it's possible to specify the class packages a bundle export and the class packages a bundle import (it depends on) It's very easy to make a bundle usable as a plain jar, in this way bundles can be also used in non OSGi environments

Introduction to OSGi The lifecycle layer defines how bundles are dynamically installed and managed in the OSGi framework Definition of the lifecycle operations: install, update, start, stop, uninstall The lifecycle layer defines how your bundles gain access to their execution context The execution context provides a way to interact with the OSGi framework and the facilities it provides during execution

Introduction to OSGi The service layer Even if OSGi has been created before the SOA wave, it provides a service oriented framework It follows the publish, find, and bind interaction pattern of SOA A bundle can register a servic as an interface and an implementation object with some describing property, to the OSGi registry A bundle can look up a service from the registry using a querying mechanism It's a sort of SOA in a VM

Introduction to OSGi These are a open source implementations of the OSGi spec. Apache Felix (from Apache Software Foundation) Distributed under ASL 2.0 http://felix.apache.org/ Equinox (from Eclipse Foundation) Distributed under the Eclipse License http://eclipse.org/equinox Knoplerfish (knoplerfish.org) Distributed under the Knoplerfish License http://knoplerfish.org ServiceMix/FUSE-ESB is built on Apache Felix But can be deployed on other OSGi implementations.

FUSE-ESB4 is ultimately a powerful OSGi container, but: It's able to deploy other kind of artifacts besides OSGi bundles Non OSGi deployables are converted into OSGi bundles on the fly: Spring configuration files JBI deployables FUSE-ESB4 and OSGi Servlets The deployer subsystem can be extended for deploying new kind of artifacts, ex. ejbs

FUSE-ESB4 extends the OSGi kernel with powerful provisioning mechanisms: Maven URL schema: FUSE-ESB4 and OSGi It's possible to deploy an artifact directly from a maven repository Features: It's possible to describe an application as a set of bundles this is called feature A feature is a XML deployment descriptor that allows to deploy/undeploy collectively a set of bundles and recursively a set of features.

FUSE-ESB4 technology layer provides two technologies for developing EAI oriented applications: A JBI 1.0 framework EAI with FUSE-ESB4 FUSE-ESB4 can be used as a plain JBI container The JBI components are the same regardless you are going to use either FUSE-ESB4 or FUSE-ESB3 (just a pure JBI container) Camel It's a powerful mediation library that allows to define integration flows using XML or a powerful Java domain specific language It's based on the enterprise integration patterns from the popular book.

Camel Defining Camel integration flows (routes): Using the DSL: RouteBuilder builder = new RouteBuilder() { public void configure() { from("seda:a").choice().when(header("foo").isequalto("bar")).to("seda:b").when(header("foo").isequalto("cheese")).to("seda:c").otherwise().to("seda:d"); } };

Camel Using XML: <camelcontext xmlns="http://activemq.apache.org/camel/schema/spring" > <route> <from uri="activemq:neworders"/> <choice> <when> <xpath>/order/product = 'widget'</xpath> <to uri="activemq:orders.widgets"/> </when> <when> <xpath>/order/product = 'gadget'</xpath> <to uri="activemq:orders.gadgets"/> </when> <otherwise> <to uri="activemq:orders.bad"/> </otherwise> </choice> </route> </camelcontext>

A route in Camel is a flow of messages from a from endpoint to one or more to endpoints. An endpoint is described using specific URN schemas: Camel provides a huge list of different kind of endpoints allowing to connect a route to many different combinations of protocols/platforms: File, FTP, HTTP, IMAP, POP3, SMTP JPA, JMS, MSMQ, TCP, UDP, COMETD, etc See: http://activemq.apache.org/camel/components.html Camel

A Camel route can be deployed: As an OSGi bundle: Camel and FUSE-ESB4 Using the DSL, you define the routes and pack everything into an OSGi bundle Using XML, you define a Spring configuration file and pack it together all the dependency classes into an OSGi bundle As a Spring configuration file Camel can be configured using Spring You define the routes using XML and then you can just deploy the file, this will be converted on the fly into an OSGi bundle

Camel and FUSE-ESB4 This can be deployed directly into FUSE-ESB: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:osgi="http://activemq.apache.org/camel/schema/osgi" xmlns:osgix="http://www.springframework.org/schema/osgi-compendium"> <osgi:camelcontext xmlns="http://activemq.apache.org/camel/schema/spring"> <route> <from uri="timer://mytimer?fixedrate=true&period=2000"/> <to uri="log:examplerouter"/> </route> </osgi:camelcontext> </beans>

Camel and FUSE-ESB4 Using Camel inside FUSE-ESB4 provides a powerful platform for developing complex integration platforms: You can deploy multiple routes as separate bundles allowing activating and managing them separately You can have different versions of the same route running at the same time (thanks OSGi!) Camel is JMX instrumented: using any JMX console you can monitor what's going on inside your flows

FUSE-ESB4 technology layer provides two technologies for developing service oriented applications: Spring DM SOA with FUSE-ESB4 CXF

SOA with FUSE-ESB4 In some sense OSGi is already a service oriented platform The main concepts revolve around the service-oriented publish, find, and bind interaction pattern: Service providers publish their services into a service registry Service clients search the registry to find available services to use OSGi = SOA in a VM

Spring DM allows using a configuration based mechanism (XML) for registering Spring Beans as OSGi services and for looking up service references You can use the Spring dependency injection mechanisms even with OSGi services: Service Registration <bean name="myservice" class="com.acme.services.impl.myserviceimpl" /> <osgi:service id="myosgiservice" ref="myservice" interface="com.acme.services.myservices"> </osgi:service> Service Lookup SOA with FUSE-ESB4 <osgi:reference id="myserviceref" interface="com.acme.services.myservice"/ >

SOA with FUSE-ESB4 OSGi with or without Spring Dm allows the development of embedded service oriented application: The service is used as the functional decomposition unit for describing a complex application/system A complex application can be well described as a set of service producers and service consumers interacting each other

SOA with FUSE-ESB4 The CXF technology layer inside Fuse-ESB provides full support for CXF: http://cxf.apache.org CXF is a very powerful multiprotocol/multibinding webservice stack JAX-WS 2.1 compliant Different transport protocols: HTTP(S), JMS, CORBA Different binding: SOAP 1.1/1.2, pure XML, JSON

SOA with FUSE-ESB4 CXF is Spring enabled: Endpoints and proxies can be created and injected using Spring configuration files A POJO can be accessed remotely just adding some configuration: remoting as an orthogonal concern Inside FUSE-ESB4 all this stuff is OSGi enabled

SOA with FUSE-ESB4 CXF is Spring enabled: Endpoints and proxies can be created and injected using Spring configuration files A POJO can be accessed remotely just adding some configuration: remoting as an orthogonal concern: <jaxws:endpoint id="helloworld" implementor="org.apache.servicemix.examples.cxf.helloworldimpl" address="/helloworld"/> Inside FUSE-ESB4 all this stuff is OSGi enabled

SOA with FUSE-ESB4 In the webservice world the WSDL is the lingua franca for specifying the service contract The contract first approach is considered a good engineering practice for specifying the service contracts FUSE-ESB4 allows using easily the WSDL even for specifying the interfaces for the OSGi services: A service can play the role of an OSGi and/or webservice just by configuration

SOA with FUSE-ESB4 Example: <bean name="myservice" class="com.acme.services.impl.myserviceimpl" /> <jaxws:endpoint id="myserviceendpoint" implementor="#myservice address="/myserviceport"/> <osgi:service id="myosgiservice" ref="myservice" interface="com.acme.services.myservices"> </osgi:service>

SOA with FUSE-ESB4 FUSE-ESB4 provides a powerful platform for developing service oriented architectures using a component development approach The system is described in terms of components exposing specific interfaces The fact that an interface can be remotely addressable is a matter of configuration The deployment architecture is decoupled from the development architecture The component/services can be developed in insulation

Conclusions FUSE-ESB4 contains everything you need for developing EAI and SOA based applications using up to date JAVA technologies like: OSGI, Jax-WS, JMS, JBI It's the natural choice when you need a powerful container for very popular Apache projects, like: Camel, CXF and ActiveMQ