This document provides an overview of Apache Camel, an open source integration framework for connecting applications and integrating disparate systems. It discusses what Camel is, its key features like support for Enterprise Integration Patterns and Domain Specific Languages, components, architecture, platforms, testing, tooling, security, and hands-on examples.
This document provides an overview of a presentation on middleware security for Apache CXF, Camel, ActiveMQ and Karaf. It discusses various security concepts like authentication, authorization, auditing and encryption. It then goes into more details on implementing security for specific middleware like 2-way SSL for ActiveMQ, JAAS for authentication and authorization, password masking. It also discusses security implementations and examples for Camel, CXF, Karaf container and integration with other security frameworks like PicketLink, Spring Security and Shiro. The presentation will include demonstrations of web console security and securing ActiveMQ broker, producers and consumers using SSL.
This document provides an introduction to OSGi using Apache Karaf. It discusses the problems that OSGi and Karaf aim to solve regarding dependency management, dynamic behavior, and modularity. It then summarizes OSGi's architecture including modules, lifecycles, and services. Finally, it outlines key aspects of Apache Karaf like its shell, deployer, features concept, security, and logging service.
Apache Karaf - Building OSGi applications on Apache Karaf - T Frank & A Grzesikmfrancis
OSGi Community Event 2014
Abstract:
Experience level: Beginner
Apache Karaf is a small OSGi based runtime which provides a lightweight container onto which various components and applications can be deployed.
This session gives an overview over Apache Karaf, how to manage and configure Apache Karaf and how to use the comprehensive command shell that Karaf provides. By the example of a simple pet clinic application we will demonstrate how to build and deploy a web application on Apache Karaf. This talk will introduce the different deployment mechanisms available in Karaf and how to deploy bundles from the file system, command shell or via a maven repository. You will learn how to manage external dependencies via features, use the Karaf maven plugin to create features and build and configure persistence bundles for Apache Karaf. We will further give an overview, how to use Karaf in a cloud environment and how to use the Apache Cellar project to build up an Apache Karaf cluster.
Speaker Bios:
Torsten Frank
Torsten Frank is an entrepreneur and healthcare IT expert with international experience and a strong background in product and business development. He is CEO and founder of medisite, a company that delivers highly specialized healthcare IT solutions to their customers for more than 10 years. medisite is a winner of the Federal Ministry for Economic Affairs and Energy (BMWi) “Trusted Cloud” technology competition, geared toward secure cloud computing for SMEs and the public sector. Torsten Frank holds a medical degree from the Hannover Medical School, where he also has worked for several years as a physician at the Department of Cardiothoracic Surgery after completing his medical studies in Hannover, Germany and Chicago, USA.
Alexander Grzesik
Alexander is the head of development of medisite Systemhaus GmbH and responsible for the development of the the PaaS+ cloud platform the clinical information system m.life and software architect for the TRESOR Project.
He has 15 years of work experience in medical Software development as team leader and software architect.
Expert for Software Architecture, OSGi, Java and Java EE.
Alexander has been a speaker at several conferences including EclipseCon Europe and the OpenShift Community Day.
Apache Aries: A blueprint for developing with OSGi and JEEmahrwald
This document discusses OSGi and Apache Aries, which is an open source project that aims to make OSGi and Java EE technologies work better together. It provides an overview of OSGi concepts like modularity, services, and lifecycle management. It also explains how Apache Aries uses Blueprint to define and manage components and references between bundles. Finally, it highlights Apache Aries' integration of technologies like JNDI and provides examples of how Blueprint can be used to define services and dependencies between bundles in an OSGi application.
Sun Web Server 7 is a high-performance, scalable web server with built-in clustering, security, and management features. It has seen widespread adoption serving sites with high traffic like MLB.com. The presentation discusses Sun Web Server 7's architecture, performance benchmarks, new features like regular expressions and URL rewriting, security enhancements, and its role in the Sun GlassFish application server portfolio.
State of integration with Apache Camel (ApacheCon 2019)Claus Ibsen
Apache Camel is the leading open source integration framework, which has been around for over a decade. In this talk we will look back in history, to understand how the integration landscape has evolved from EAI, SOA, and ESB architectures up to microservices, and now with modern serverless and cloud native platforms. Apache Camel has been along for the ride. And we will look to the future and see how the latest release v3 of Apache Camel, is aimed for running modern cloud native workloads with Camel K. In this talk you will: Learn from history software integration, and why you should rely on existing, proven fully featured integration frameworks instead of rolling out your own DIY solutions. See how software integration is (still) important in today’s modern architectures and what role does Camel have in the new cloud native world. What is new and noteworthy in Apache Camel version 3
The document discusses Apache Karaf, an open source OSGi container. It provides:
1) An introduction to OSGi and its benefits like component-based modularity and treating applications as services.
2) An overview of Apache Karaf - an OSGi container that adds features like provisioning, deployment, administration and management.
3) How to develop applications for Karaf using standard Maven structures and deploying bundles and features to the Karaf container.
This is a classic example of older technology not being used to its fullest, which Justin proves by walking through little-known configuration and optimization tricks that get data flowing reliably and efficiently – even for today’s complexity and scale. This session covers:
A – Camel basics, understanding Exchanges, Routes, and how to implement EIPs with them
B – Examples of real implementations of common EIPs like Content Based Routers and Recipient Lists
C – Integration of Camel with common endpoints, like JMS, FTP, and HTTP
This document provides an overview of a presentation on middleware security for Apache CXF, Camel, ActiveMQ and Karaf. It discusses various security concepts like authentication, authorization, auditing and encryption. It then goes into more details on implementing security for specific middleware like 2-way SSL for ActiveMQ, JAAS for authentication and authorization, password masking. It also discusses security implementations and examples for Camel, CXF, Karaf container and integration with other security frameworks like PicketLink, Spring Security and Shiro. The presentation will include demonstrations of web console security and securing ActiveMQ broker, producers and consumers using SSL.
This document provides an introduction to OSGi using Apache Karaf. It discusses the problems that OSGi and Karaf aim to solve regarding dependency management, dynamic behavior, and modularity. It then summarizes OSGi's architecture including modules, lifecycles, and services. Finally, it outlines key aspects of Apache Karaf like its shell, deployer, features concept, security, and logging service.
Apache Karaf - Building OSGi applications on Apache Karaf - T Frank & A Grzesikmfrancis
OSGi Community Event 2014
Abstract:
Experience level: Beginner
Apache Karaf is a small OSGi based runtime which provides a lightweight container onto which various components and applications can be deployed.
This session gives an overview over Apache Karaf, how to manage and configure Apache Karaf and how to use the comprehensive command shell that Karaf provides. By the example of a simple pet clinic application we will demonstrate how to build and deploy a web application on Apache Karaf. This talk will introduce the different deployment mechanisms available in Karaf and how to deploy bundles from the file system, command shell or via a maven repository. You will learn how to manage external dependencies via features, use the Karaf maven plugin to create features and build and configure persistence bundles for Apache Karaf. We will further give an overview, how to use Karaf in a cloud environment and how to use the Apache Cellar project to build up an Apache Karaf cluster.
Speaker Bios:
Torsten Frank
Torsten Frank is an entrepreneur and healthcare IT expert with international experience and a strong background in product and business development. He is CEO and founder of medisite, a company that delivers highly specialized healthcare IT solutions to their customers for more than 10 years. medisite is a winner of the Federal Ministry for Economic Affairs and Energy (BMWi) “Trusted Cloud” technology competition, geared toward secure cloud computing for SMEs and the public sector. Torsten Frank holds a medical degree from the Hannover Medical School, where he also has worked for several years as a physician at the Department of Cardiothoracic Surgery after completing his medical studies in Hannover, Germany and Chicago, USA.
Alexander Grzesik
Alexander is the head of development of medisite Systemhaus GmbH and responsible for the development of the the PaaS+ cloud platform the clinical information system m.life and software architect for the TRESOR Project.
He has 15 years of work experience in medical Software development as team leader and software architect.
Expert for Software Architecture, OSGi, Java and Java EE.
Alexander has been a speaker at several conferences including EclipseCon Europe and the OpenShift Community Day.
Apache Aries: A blueprint for developing with OSGi and JEEmahrwald
This document discusses OSGi and Apache Aries, which is an open source project that aims to make OSGi and Java EE technologies work better together. It provides an overview of OSGi concepts like modularity, services, and lifecycle management. It also explains how Apache Aries uses Blueprint to define and manage components and references between bundles. Finally, it highlights Apache Aries' integration of technologies like JNDI and provides examples of how Blueprint can be used to define services and dependencies between bundles in an OSGi application.
Sun Web Server 7 is a high-performance, scalable web server with built-in clustering, security, and management features. It has seen widespread adoption serving sites with high traffic like MLB.com. The presentation discusses Sun Web Server 7's architecture, performance benchmarks, new features like regular expressions and URL rewriting, security enhancements, and its role in the Sun GlassFish application server portfolio.
State of integration with Apache Camel (ApacheCon 2019)Claus Ibsen
Apache Camel is the leading open source integration framework, which has been around for over a decade. In this talk we will look back in history, to understand how the integration landscape has evolved from EAI, SOA, and ESB architectures up to microservices, and now with modern serverless and cloud native platforms. Apache Camel has been along for the ride. And we will look to the future and see how the latest release v3 of Apache Camel, is aimed for running modern cloud native workloads with Camel K. In this talk you will: Learn from history software integration, and why you should rely on existing, proven fully featured integration frameworks instead of rolling out your own DIY solutions. See how software integration is (still) important in today’s modern architectures and what role does Camel have in the new cloud native world. What is new and noteworthy in Apache Camel version 3
The document discusses Apache Karaf, an open source OSGi container. It provides:
1) An introduction to OSGi and its benefits like component-based modularity and treating applications as services.
2) An overview of Apache Karaf - an OSGi container that adds features like provisioning, deployment, administration and management.
3) How to develop applications for Karaf using standard Maven structures and deploying bundles and features to the Karaf container.
This is a classic example of older technology not being used to its fullest, which Justin proves by walking through little-known configuration and optimization tricks that get data flowing reliably and efficiently – even for today’s complexity and scale. This session covers:
A – Camel basics, understanding Exchanges, Routes, and how to implement EIPs with them
B – Examples of real implementations of common EIPs like Content Based Routers and Recipient Lists
C – Integration of Camel with common endpoints, like JMS, FTP, and HTTP
Apache Camel Introduction & What's in the boxClaus Ibsen
Slides from JavaBin talk in Grimstad Norway, presented by Claus Ibsen in February 2016.
This slide deck is full up to date with latest Apache Camel 2.16.2 release and includes additional slides to present many of the features that Apache Camel provides out of the box.
Cloud-Native Integration with Apache Camel on Kubernetes (Copenhagen October ...Claus Ibsen
Camel K is a lightweight integration platform based on Apache Camel that is optimized to run on Kubernetes and Knative. It allows developers to write integration logic using the Apache Camel Domain Specific Language and deploy it to Kubernetes with a single command. Camel K runs the integration as microservices on Kubernetes and handles scaling and management of the integration runtime. It aims to provide a serverless experience for building and running integrations in cloud-native environments.
Spring Framework 4.0과 4.1의 주요 업데이트 내용을 정리했습니다. 그리고, Spring I/O 2015 | The conference 에서 공개된 4.2의 소식들을 모아보았습니다. :)
ps. 제가 웬만하면 자료는 한글로 바꾸는 편인데... 이번에는 시간이 너무 부족해서 대부분 영어를 그대로 사용했네요. 다음에 기회가 되면 한글화시키는걸로...
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integrationClaus Ibsen
In this session, we'll discuss:
- What’s Apache Camel: An overview of Camel and what you use it for and why you should care.
- Camel 3: Demos of how Camel 3, Camel K and Camel Quarkus all work together, and will provide insights into Camel’s role in the next major release of Red Hat Integration products.
- Camel K: This serverless integration platform provides low-code/no-code capabilities, where integrations can be snapped together quickly using the powers from integration patterns and Camel’s extensive set of connectors.
- Camel Quarkus: Using Knative (the fast runtime of Quarkus) and Camel K brings awesome serverless features, such as auto-scaling, scaling to zero, and event-based communication, with great integration capabilities from Apache Camel.
You will also hear about the latest Camel sub-project Camel Kafka Connectors which makes it possible to use all the Camel components as Kafka Connect connectors.
Finally we bring details of the roadmap for what is coming up in the Camel projects.
And after the presentation we have about 30 minutes of QA answering all the questions from the audience.
Serverless integration with Knative and Apache Camel on KubernetesClaus Ibsen
This presentation will introduce Knative, an open source project that adds serverless capabilities on top of Kubernetes, and present Camel K, a lightweight platform that brings Apache Camel integrations in the serverless world. Camel K allows running Camel routes on top of any Kubernetes cluster, leveraging Knative serverless capabilities such as “scaling to zero”.
We will demo how Camel K can connect cloud services or enterprise applications using its 250+ components and how it can intelligently route events within the Knative environment via enterprise integration patterns (EIP).
Target Group: Developers, architects and other technical people - a basic understanding of Kubernetes is an advantage
Best Practices for Middleware and Integration Architecture Modernization with...Claus Ibsen
This document discusses best practices for middleware and integration architecture modernization using Apache Camel. It provides an overview of Apache Camel, including what it is, how it works through routes, and the different Camel projects. It then covers trends in integration architecture like microservices, cloud native, and serverless. Key aspects of Camel K and Camel Quarkus are summarized. The document concludes with a brief discussion of the Camel Kafka Connector and pointers to additional resources.
How do we get our software out on the Internet of Things? Many assumptions in current deployment practices don't hold up. Devices can be occasionally connected, through low-bandwidth networks and are generally outside of direct control. Manually shuffling around binaries is not an option.
Apache ACE is an open-source Java provisioning tool tackling such challenges.You can manage Java apps and configs in a modular fashion. The foundations of ACE are OSGi, semantic versioning and reliable communication. Pushing out incremental updates and managing numerous devices becomes possible.
This webinar introduces Apache Camel's large range of components for connectivity and protocol support, and how the 50+ patterns create a powerful toolbox that lets you build integration solutions "Lego style". This webinar will introduce you to the Camel community and why it is so important for any serious open source project to have a thriving community.
Speaker: Claus Ibsen - Camel PMC member and top committer
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...Claus Ibsen
In this session, we'll focus on:
Camel 3: Demos of how Camel 3, Camel K and Camel Quarkus all work together, and will provide insights into Camel’s role in the next major release of Red Hat Integration products.
Camel K: This serverless integration platform provides low-code/no-code capabilities, where integrations can be snapped together quickly using the powers from integration patterns and Camel’s extensive set of connectors.
Camel Quarkus: Using Knative (the fast runtime of Quarkus) and Camel K brings awesome serverless features, such as auto-scaling, scaling to zero, and event-based communication, with great integration capabilities from Apache Camel.
You will also hear about the latest Camel sub-project Camel Kafka Connectors which makes it possible to use all the Camel components as Kafka Connect connectors.
Finally we bring details of the roadmap for what is coming up in the Camel projects.
Writing highly scalable WebSocket using the Atmosphere Framework and Scalajfarcand
- The document discusses the Atmosphere Framework, an open-source Java library that allows web applications to communicate in real-time via WebSocket or Comet techniques.
- It provides a uniform API that hides the complexities of different browser and server WebSocket implementations and allows fallback to alternative techniques like Comet.
- The framework integrates with various Java web servers and frameworks and supports Servlet, RESTful, and native WebSocket APIs to build scalable real-time applications.
This document discusses deploying applications to Cloud Foundry using Spring, Vaadin, and Cloud Foundry. It provides an overview of deploying a Java application using the vmc command line tool and Spring Tool Suite. It also covers services, runtime choices, and the benefits of using open source Cloud Foundry which avoids vendor lock-in.
Building Powerful WebSocket, Comet, and RESTful Applications Using Atmosphere
This document discusses the Atmosphere framework for building asynchronous web applications. It introduces key concepts like suspending responses, broadcasting events, scheduling broadcasts, and clustering. It also provides an example of building a real-time Twitter search application with Atmosphere and discusses how Atmosphere allows writing applications once that can run anywhere across different transports without browser workarounds. The document encourages developers to use the simple Atmosphere APIs to build powerful asynchronous applications and to join the Atmosphere community.
This document provides instructions for developing an API plug-in for CloudStack version 4.5 using SolidFire as an example. It outlines the steps to create a new Maven project called "abc123" by copying the existing "solidfire" project template. It describes updating files and dependencies to reference the new "abc123" project instead of "solidfire". The document then explains how to create the key classes needed to implement the plug-in, map it to API commands, and deploy the final JAR file. The goal is to extend CloudStack's API with new commands that can invoke functionality from a third-party product via the plug-in.
Integrating microservices with apache camel on kubernetesClaus Ibsen
Apache Camel has fundamentally changed the way Java developers build system-to-system integrations by using enterprise integration patterns (EIP) with modern microservice architectures. In this session, we’ll show you best practices with Camel and EIPs, in the world of Spring Boot microservices running on Kubernetes. We'll also discuss practices how to build truly cloud-native distributed and fault-tolerant microservices and we’ll introduce the upcoming Camel 3.0 release, which includes serverless capabilities via Camel K. This talk is a mix with slides and live demos.
Tomcat New Evolution discusses the new features introduced in Tomcat 6 and 7. Some key highlights include:
- Tomcat 6 introduced features like memory leak prevention, CSRF protection, session fixation protection, NIO connector, Comet support, logging improvements, web services support, and clustering.
- Tomcat 7 features included externalizing static resources, WebSocket support, easier embedded usage, and asynchronous logging.
- Both versions aimed to improve performance, security, and scalability through these new capabilities. Tomcat continues evolving to support newer standards and address common issues.
Building flexible ETL pipelines with Apache Camel on QuarkusIvelin Yanev
This document discusses building flexible ETL pipelines with Apache Camel on Quarkus. It begins with an overview of what ETL is and the extract, transform, load process. It then discusses what Apache Camel is and how it is an open source integration framework that allows defining routing and mediation rules. The document introduces Camel K and Camel Quarkus, noting that Camel Quarkus brings Camel's integration capabilities to the Quarkus runtime. It argues that Apache Camel and Quarkus is a good combination for efficient ETL due to Camel's easy learning curve and extensibility and Quarkus' benefits like low memory usage and fast startup times. The document concludes with a demo
Apache Camel is a leading open source integration framework that has been around for more than a decade. With the release of Apache Camel 3, the Camel family has been extended to include a full range of projects that are tailored to popular platforms including Spring Boot, Quarkus, Kafka, Kubernetes, and others - creating an ecosystem. Join this webinar to learn what’s new in Camel 3 and about Camel projects: - Latest features in Camel 3 - Quick demos of Camel 3, Camel Quarkus, Camel K, and Camel Kafka Connector - Present insights into what's coming next
Speakers: Andrea Cosentino, Claus Ibsen
Apache ServiceMix4 : Dream platform for Java Integration Charles Moulliard
The document summarizes the FUSE ESB platform, which provides integration capabilities through concepts like messaging, OSGI services, and web services. It discusses the FUSE architecture, which uses lightweight OSGI containers and supports standards like Camel, CXF, and ActiveMQ. It also presents examples of high availability integration architectures that use features like broker replication and clustering.
Tuning and development with SIP Servlets on MobicentsJean Deruelle
The document discusses tuning Java virtual machines for SIP servlet applications and developing SIP servlets using frameworks. It recommends using CMS garbage collection with tuning, enabling parallel young generation GC and other performance options. It also describes how to develop SIP servlets as POJO classes using the Spring Signaling Framework or CDI-Telco Framework to simplify development and add features like aspect-oriented programming.
Apache Camel Introduction & What's in the boxClaus Ibsen
Slides from JavaBin talk in Grimstad Norway, presented by Claus Ibsen in February 2016.
This slide deck is full up to date with latest Apache Camel 2.16.2 release and includes additional slides to present many of the features that Apache Camel provides out of the box.
Cloud-Native Integration with Apache Camel on Kubernetes (Copenhagen October ...Claus Ibsen
Camel K is a lightweight integration platform based on Apache Camel that is optimized to run on Kubernetes and Knative. It allows developers to write integration logic using the Apache Camel Domain Specific Language and deploy it to Kubernetes with a single command. Camel K runs the integration as microservices on Kubernetes and handles scaling and management of the integration runtime. It aims to provide a serverless experience for building and running integrations in cloud-native environments.
Spring Framework 4.0과 4.1의 주요 업데이트 내용을 정리했습니다. 그리고, Spring I/O 2015 | The conference 에서 공개된 4.2의 소식들을 모아보았습니다. :)
ps. 제가 웬만하면 자료는 한글로 바꾸는 편인데... 이번에는 시간이 너무 부족해서 대부분 영어를 그대로 사용했네요. 다음에 기회가 되면 한글화시키는걸로...
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integrationClaus Ibsen
In this session, we'll discuss:
- What’s Apache Camel: An overview of Camel and what you use it for and why you should care.
- Camel 3: Demos of how Camel 3, Camel K and Camel Quarkus all work together, and will provide insights into Camel’s role in the next major release of Red Hat Integration products.
- Camel K: This serverless integration platform provides low-code/no-code capabilities, where integrations can be snapped together quickly using the powers from integration patterns and Camel’s extensive set of connectors.
- Camel Quarkus: Using Knative (the fast runtime of Quarkus) and Camel K brings awesome serverless features, such as auto-scaling, scaling to zero, and event-based communication, with great integration capabilities from Apache Camel.
You will also hear about the latest Camel sub-project Camel Kafka Connectors which makes it possible to use all the Camel components as Kafka Connect connectors.
Finally we bring details of the roadmap for what is coming up in the Camel projects.
And after the presentation we have about 30 minutes of QA answering all the questions from the audience.
Serverless integration with Knative and Apache Camel on KubernetesClaus Ibsen
This presentation will introduce Knative, an open source project that adds serverless capabilities on top of Kubernetes, and present Camel K, a lightweight platform that brings Apache Camel integrations in the serverless world. Camel K allows running Camel routes on top of any Kubernetes cluster, leveraging Knative serverless capabilities such as “scaling to zero”.
We will demo how Camel K can connect cloud services or enterprise applications using its 250+ components and how it can intelligently route events within the Knative environment via enterprise integration patterns (EIP).
Target Group: Developers, architects and other technical people - a basic understanding of Kubernetes is an advantage
Best Practices for Middleware and Integration Architecture Modernization with...Claus Ibsen
This document discusses best practices for middleware and integration architecture modernization using Apache Camel. It provides an overview of Apache Camel, including what it is, how it works through routes, and the different Camel projects. It then covers trends in integration architecture like microservices, cloud native, and serverless. Key aspects of Camel K and Camel Quarkus are summarized. The document concludes with a brief discussion of the Camel Kafka Connector and pointers to additional resources.
How do we get our software out on the Internet of Things? Many assumptions in current deployment practices don't hold up. Devices can be occasionally connected, through low-bandwidth networks and are generally outside of direct control. Manually shuffling around binaries is not an option.
Apache ACE is an open-source Java provisioning tool tackling such challenges.You can manage Java apps and configs in a modular fashion. The foundations of ACE are OSGi, semantic versioning and reliable communication. Pushing out incremental updates and managing numerous devices becomes possible.
This webinar introduces Apache Camel's large range of components for connectivity and protocol support, and how the 50+ patterns create a powerful toolbox that lets you build integration solutions "Lego style". This webinar will introduce you to the Camel community and why it is so important for any serious open source project to have a thriving community.
Speaker: Claus Ibsen - Camel PMC member and top committer
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...Claus Ibsen
In this session, we'll focus on:
Camel 3: Demos of how Camel 3, Camel K and Camel Quarkus all work together, and will provide insights into Camel’s role in the next major release of Red Hat Integration products.
Camel K: This serverless integration platform provides low-code/no-code capabilities, where integrations can be snapped together quickly using the powers from integration patterns and Camel’s extensive set of connectors.
Camel Quarkus: Using Knative (the fast runtime of Quarkus) and Camel K brings awesome serverless features, such as auto-scaling, scaling to zero, and event-based communication, with great integration capabilities from Apache Camel.
You will also hear about the latest Camel sub-project Camel Kafka Connectors which makes it possible to use all the Camel components as Kafka Connect connectors.
Finally we bring details of the roadmap for what is coming up in the Camel projects.
Writing highly scalable WebSocket using the Atmosphere Framework and Scalajfarcand
- The document discusses the Atmosphere Framework, an open-source Java library that allows web applications to communicate in real-time via WebSocket or Comet techniques.
- It provides a uniform API that hides the complexities of different browser and server WebSocket implementations and allows fallback to alternative techniques like Comet.
- The framework integrates with various Java web servers and frameworks and supports Servlet, RESTful, and native WebSocket APIs to build scalable real-time applications.
This document discusses deploying applications to Cloud Foundry using Spring, Vaadin, and Cloud Foundry. It provides an overview of deploying a Java application using the vmc command line tool and Spring Tool Suite. It also covers services, runtime choices, and the benefits of using open source Cloud Foundry which avoids vendor lock-in.
Building Powerful WebSocket, Comet, and RESTful Applications Using Atmosphere
This document discusses the Atmosphere framework for building asynchronous web applications. It introduces key concepts like suspending responses, broadcasting events, scheduling broadcasts, and clustering. It also provides an example of building a real-time Twitter search application with Atmosphere and discusses how Atmosphere allows writing applications once that can run anywhere across different transports without browser workarounds. The document encourages developers to use the simple Atmosphere APIs to build powerful asynchronous applications and to join the Atmosphere community.
This document provides instructions for developing an API plug-in for CloudStack version 4.5 using SolidFire as an example. It outlines the steps to create a new Maven project called "abc123" by copying the existing "solidfire" project template. It describes updating files and dependencies to reference the new "abc123" project instead of "solidfire". The document then explains how to create the key classes needed to implement the plug-in, map it to API commands, and deploy the final JAR file. The goal is to extend CloudStack's API with new commands that can invoke functionality from a third-party product via the plug-in.
Integrating microservices with apache camel on kubernetesClaus Ibsen
Apache Camel has fundamentally changed the way Java developers build system-to-system integrations by using enterprise integration patterns (EIP) with modern microservice architectures. In this session, we’ll show you best practices with Camel and EIPs, in the world of Spring Boot microservices running on Kubernetes. We'll also discuss practices how to build truly cloud-native distributed and fault-tolerant microservices and we’ll introduce the upcoming Camel 3.0 release, which includes serverless capabilities via Camel K. This talk is a mix with slides and live demos.
Tomcat New Evolution discusses the new features introduced in Tomcat 6 and 7. Some key highlights include:
- Tomcat 6 introduced features like memory leak prevention, CSRF protection, session fixation protection, NIO connector, Comet support, logging improvements, web services support, and clustering.
- Tomcat 7 features included externalizing static resources, WebSocket support, easier embedded usage, and asynchronous logging.
- Both versions aimed to improve performance, security, and scalability through these new capabilities. Tomcat continues evolving to support newer standards and address common issues.
Building flexible ETL pipelines with Apache Camel on QuarkusIvelin Yanev
This document discusses building flexible ETL pipelines with Apache Camel on Quarkus. It begins with an overview of what ETL is and the extract, transform, load process. It then discusses what Apache Camel is and how it is an open source integration framework that allows defining routing and mediation rules. The document introduces Camel K and Camel Quarkus, noting that Camel Quarkus brings Camel's integration capabilities to the Quarkus runtime. It argues that Apache Camel and Quarkus is a good combination for efficient ETL due to Camel's easy learning curve and extensibility and Quarkus' benefits like low memory usage and fast startup times. The document concludes with a demo
Apache Camel is a leading open source integration framework that has been around for more than a decade. With the release of Apache Camel 3, the Camel family has been extended to include a full range of projects that are tailored to popular platforms including Spring Boot, Quarkus, Kafka, Kubernetes, and others - creating an ecosystem. Join this webinar to learn what’s new in Camel 3 and about Camel projects: - Latest features in Camel 3 - Quick demos of Camel 3, Camel Quarkus, Camel K, and Camel Kafka Connector - Present insights into what's coming next
Speakers: Andrea Cosentino, Claus Ibsen
Apache ServiceMix4 : Dream platform for Java Integration Charles Moulliard
The document summarizes the FUSE ESB platform, which provides integration capabilities through concepts like messaging, OSGI services, and web services. It discusses the FUSE architecture, which uses lightweight OSGI containers and supports standards like Camel, CXF, and ActiveMQ. It also presents examples of high availability integration architectures that use features like broker replication and clustering.
Tuning and development with SIP Servlets on MobicentsJean Deruelle
The document discusses tuning Java virtual machines for SIP servlet applications and developing SIP servlets using frameworks. It recommends using CMS garbage collection with tuning, enabling parallel young generation GC and other performance options. It also describes how to develop SIP servlets as POJO classes using the Spring Signaling Framework or CDI-Telco Framework to simplify development and add features like aspect-oriented programming.
Apache Camel v3, Camel K and Camel QuarkusClaus Ibsen
In this session, we will explore key challenges with function interactions and coordination, addressing these problems using Enterprise Integration Patterns (EIP) and modern approaches with the latest innovations from the Apache Camel community:
Apache Camel is the Swiss army knife of integration, and the most powerful integration framework. In this session you will hear about the latest features in the brand new 3rd generation.
Camel K, is a lightweight integration platform that enables Enterprise Integration Patterns to be used natively on any Kubernetes cluster. When used in combination with Knative, a framework that adds serverless building blocks to Kubernetes, and the subatomic execution environment of Quarkus, Camel K can mix serverless features such as auto-scaling, scaling to zero, and event-based communication with the outstanding integration capabilities of Apache Camel.
- Apache Camel 3
- Camel K
- Camel Quarkus
We will show how Camel K works. We’ll also use examples to demonstrate how Camel K makes it easier to connect to cloud services or enterprise applications using some of the 300 components that Camel provides.
Presented at JAX London 2015.
The last few years have seen a huge growth in the usage of JavaScript, to the extent that it is often reported to be the #1 programming language in use today. Additionally, the arrival of server-side JavaScript through frameworks such as Node.js and Ringo.js, and JavaScript on the JVM through Nashorn and Avatar.js, means that enterprise web applications written in JavaScript are not just a possibility—but a reality for companies such as LinkedIn, eBay, Yahoo, ADP and Dow Jones. This session will compare and contrast the two platforms and describe the advantages of each for deploying, managing and monitoring highly scalable applications.
Cloud State of the Union for Java DevelopersBurr Sutter
This presentation provides a broad overview of what is going on in the Cloud computing world - for Java developers - presented on Dec 21st 2010 at the Atlanta Java Users Group - ajug.org - no audio was recorded.
Java vs. Java Script for enterprise web applications - Chris BaileyJAXLondon_Conference
The document compares Java and JavaScript for enterprise web applications. It finds that while JavaScript has a larger developer base and adoption according to metrics like GitHub repositories and StackOverflow surveys, Java remains dominant in enterprise applications and for server-side development. It discusses the different deployment models for each language, with JavaScript being ubiquitous in browsers while Java has a long history on servers. JavaScript code tends to be more concise, requiring around 1/3 less code on average. The document also evaluates performance, finding JavaScript is faster for I/O tasks while slower for computationally intensive work. It discusses challenges in optimizing dynamically typed languages like JavaScript.
Cloud-powered Continuous Integration and Deployment architectures - Jinesh VariaAmazon Web Services
The presentation will discuss some architectural patterns in continuous integration, deployment and optimization and I will share some of the lessons learned from Amazon.com.
The goal of the presentation is to convince you that if you invest your time where you get the maximum learning from your customers, automate everything else in the cloud (CI + CD + CO), you get fast feedback and will be able to release early, release often and recover quickly from your mistakes. Dynamism of the cloud allows you to increase the speed of your iteration and reduce the cost of mistakes so you can continuously innovate while keeping your cost down.
- Guillaume Nodet presented on ServiceMix, an open source ESB based on JBI and OSGi standards.
- ServiceMix aims to provide services decoupling, normalized message exchanges, and support for mediation, routing, and orchestration use cases.
- The latest ServiceMix architecture uses OSGi as the runtime container and leverages bundles as the packaging mechanism instead of traditional JBI components.
This document discusses different ways to deploy and consume web services in Apache ServiceMix using Apache CXF. It recommends packaging services as OSGi bundles over WAR files or JBI assemblies. The key techniques covered include using the CXF codegen plugin to generate Java code from WSDL/XSD, implementing JAX-WS endpoints, configuring services and clients with Spring, and packaging services as OSGi bundles or WAR files with Maven.
Oracle API Gateway integrates, accelerates, governs, and secures Web API and SOA-based systems. It serves REST APIs and SOAP Web Services to clients, converting between REST and SOAP and XML and JSON. It applies security rules like authentication and content filtering. It also provides monitoring of API and service usage, caching, and traffic management.
The document provides an overview of new features and enhancements in ADF 3.0, including a new JS-API that has been rewritten in Typescript, performance improvements, full SSO support, new process and task cloud components, extensibility features, and search enhancements like facet fields and a chip list component. Code examples are provided for common tasks like importing modules, listing apps and processes, and configuring SSO. Resources like documentation, repositories, and a Gitter channel are also listed for additional support.
This document discusses the evolution of Apache ServiceMix from version 3.x to 4.x. Key points include:
1) ServiceMix 4 uses an OSGi-based modular architecture with the ServiceMix Kernel and NMR components, separating them from the JBI components.
2) The Kernel provides an OSGi container with features like provisioning, hot deployment and management.
3) NMR adds messaging capabilities for loosely coupled integration independently of JBI.
4) JBI runs on top of NMR and provides Java Business Integration functionality and packaging.
This document provides a summary of a presentation on Fuse Technology. It discusses Integration Platforms like Apache Camel and Apache Karaf. It also covers management and provisioning with Fabric8 and Hawtio, and security policy management with ApiMan and Keycloak. The presentation includes a demo of designing a REST service with Camel, deploying it on JBoss Fuse using a profile, and configuring security.
This document provides an overview and setup instructions for introducing servlets. It discusses:
1) What a servlet is - a Java program that runs on a server and processes incoming web requests and responses based on a URL.
2) Installing Tomcat, the Java web server, and Eclipse, the IDE, to develop and run servlets.
3) Creating a basic "Hello World" web application with a servlet using Eclipse, and deploying it to Tomcat.
OpenSource API Server based on Node.js API framework built on supported Node.js platform with Tooling and DevOps. Use cases are Omni-channel API Server, Mobile Backend as a Service (mBaaS) or Next Generation Enterprise Service Bus. Key functionality include built in enterprise connectors, ORM, Offline Sync, Mobile and JS SDKs, Isomorphic JavaScript and Graphical API creation tool.
SmartFrog is a framework for describing, deploying, and managing distributed service components across a network. It uses a declarative description language to specify configurations and templates that can be extended and combined. The SmartFrog deployment engine loads and instantiates components based on the descriptions, supplying the correct configuration to each one. Components implement a lifecycle and can be written to deploy specific services.
The document provides steps to connect to a CloudFoundry environment and deploy a sample Predix application. It includes instructions on installing the CF CLI, logging in, listing services, creating a PostgreSQL service instance, pushing a sample app, and binding the app to the database. The steps cover common operations for deploying and managing apps on Pivotal CloudFoundry and interacting with services on Predix.
RESThub is a framework that provides generic and reusable components for building RESTful applications including:
- Generic DAO and business services that reduce development time and improve efficiency.
- Generic REST web services that allow easily building REST-based architectures.
- Generic tests to test DAOs, services and web services and protect against side effects.
- A JavaScript stack for building lightweight client-side web apps based on jQuery that reduces traffic and server load.
- Security based on OAuth2 and a stateless architecture that improves scalability.
This document summarizes ServiceMix 4, which is built on top of Apache Felix Karaf. It provides an overview of how ServiceMix 4 is constructed from various Apache projects like Felix, Camel and ServiceMix. It also describes key Karaf concepts like the command shell, features, blueprint services and the web console. Finally, it discusses how ServiceMix adds support for JBI and NMR on top of Karaf.
1. Red Hat | Bryan Saunders
Camel from the Field
Bryan Saunders
Feb 16, 2015
2. Agenda
Introduction to Camel
What is Camel
Camel Features
Enterprise Integration Patterns
Key Components
Camel Architecture
Supported Platforms
Camel Hands On
Common EIPs
Camel on EAP
Using JMS
Web Services
Future of Camel
Q & A
4. What is Camel
Apache Camel ™ is a versatile open-source integration framework
based on known Enterprise Integration Patterns.
- Apache Camel Website
Apache Camel is an open source Java framework that focuses on
making integration easier and more accessible to developers. It does
this by providing: concrete implementations of all the widely used
EIPs, connectivity to a great variety of transports and APIs, and easy
to use Domain Specific Languages (DSLs) to wire EIPs and transports
together
- Jonathan Anstey
5. Why an Integration Framework
Integration is Critical for Business
Framework does the Heavy Lifting
Lets you Focus on the Problem
Prevents Re-inventing the Wheel
6. History of Camel
Started in March 2007
Founded by
James Strachan
Rob Davies
Hiram Chirino
Guillaume Nodet
First Release in June 2007
Spawned from Apache ServiceMix and Apache ActiveMQ
7. Camel Features
Very Leightweight , Consists of only a handful of JARs
Easy Configuration
No Heavy Specification
No Container Dependencies
Payload Agnostic
12. Components
191 Components and counting
Component for pretty much anything
Most commonley used components
CXF
CXFRS
JMS
ActiveMQ
AMQP
Infinispan
CDI
Drools
17. Error Handling
Try...Catch...Finally
Exception Clause in Java DSL
Error Handlers
Default Error Handler
Dead Letter Channel
Logging Error Handler
No Error Handler
Transaction Error Handler
Support for Exponential Backoff of Retries
19. Redelivery Delay Patterns
Allows for custom backoff of retries.
Syntax: limit:delay;limit2:delay2;limit3:delay3;...;limitN:delayN
If delayPattern=5:1000;10:5000;20:20000 then we get
Redelivery attempt number 1..4 = 0 sec (as the first group starts with 5)
Redelivery attempt number 5..9 = 1 sec (the first group)
Redelivery attempt number 10..19 = 5 sec (the second group)
Redelivery attempt number 20.. = 20 sec (the last group)
20. Security
Four Broad Categories of Security Offered
Route Security
Payload Security
Endpoint Security
Configuration Security
23. Endpoint Security
Some components can be secured, but not all
Jetty - HTTP Basic & SSL
CXF - HTTP Basic & WS-Security
Spring Web Services - HTTP Basic & WS-Security
Netty - SSL
MINA - SSL
Cometd - SSL
JMS - JAAS and SSL for client <--> broker communication
25. Scalable
Load Balancing Policies
Thread and Service Pools
Asynchronous API
Clustering
Same JVM & Context - Use direct or seda
Same JVM, Different Context - Use vm
Different JVM - Use jms, activemq, ftp, etc...
OSGi - Use Normalized Message Router (NMR)
26. HA & Failover
Not natively supported
Provided by the following components
Camel Fabric Master component
Camel ZooKeeper via a Route policy
Camel JGroups
27. Testable
Native test frameworks
Supports unit and integration Testing
Built in mock & stub support
Advanced testing with NotifyBuilder and AdviceWith
Works with 3rd party test frameworks
PaxExam
Arquillian
JUnit
TestNG
28. Available Test Harnesses
Name Component Description
Camel
Test
camel-test Standalone Java library to create Camel test cases using a single Java
class for all your configuration and routing without using Spring or
Guice
Spring
Testing
camel-test-
spring
Supports JUnit 4 tests that bootstrap a test environment using Spring
without needing to be familiar with Spring Test.
Blueprint
Testing
camel-test-
blueprint
Provides the ability to do unit testing on blueprint configurations
Guice camel-
guice
Uses Guice to dependency inject your test classes
Camel
TestNG
camel-
testng
Supports plain TestNG based tests with or without Spring or Guice
33. Enterprise Integration Patterns
Similar to Design Patterns
Focused specifically on Integration
Written by Gregor Hohpe & Bobby Wolf
65 Documented Patterns
Camel supports 53 of them
39. Route
Set of rules that define message flow
Consists of:
Endpoints
EIP Constructs
Processors
40. Endpoint
Implementation of the Message Endpoint pattern
Created by components
Referred to by uniue URI's in the DSL
Consumers receive messages
Producers send messages
41. Component
Essentially a factory for Endpoint instances
Adds functionality to Camel
Custom components extend DefaultComponent
46. Camel and Red Hat
Included in JBoss Fuse
Included in JBoss Fuse Service Works
Run as part of SwitchYard
Run outside of SwitchYard on EAP Container
Supported on EAP 6.1.1+
Requires JBoss Fuse & JBoss EAP Subscription
Must use Camel libraries from JBoss Fuse
49. Fuse or Service Works
Use Fuse if...
Dont use Java or JEE
Dont use EAP
Use OSGi or Karaf
Governance is not needed
No SCA requirement
Use Fuse Service Works if...
Use JEE
Want to use JEE in Services
Currently use EAP
Need Governance
Need SCA or already use SwitchYard
50. Camel Considerations
For Fuse...
Can use Blueprint/Spring/Java DSL for Routes
Most configuration is done via XML
Testing relies on PaxExam and Built in Camel Test Frameworks
For Fuse Service Works w/ SwitchYard...
SwitchYard limits amount of Components you can use
JEE Stack well Supported
No XML Configuration
Can make use of Arquillian
For Camel on EAP...
Can use CDI or Spring
JEE Stack not currently well supported
Most Components use Spring for configuration
Can make use of Arquillian
52. Camel on EAP
Use Camel without SwitchYard or Karaf
Supported on EAP 6.1.1 and up with Camel 2.12 Red Hat Libraries
Two ways to use Libraries
Packaged inside Application
Deployed as EAP Module
Camel Started with 3 methods
Spring ContextLoaderListener
ServletListener Component
CDI Component
53. Starting with Spring
Requires Spring
Best if already using Spring
Camel uses Spring's Bean Registry
Started using Spring ContextLoaderListener
Configuration very similar to Fuse with Spring or Blueprint
56. Starting with Spring Demo
https://github.com/bsaunder/camel/tree/master/eap_6/soap-
contract-first
57. Starting without Spring
Does not Require Spring
Best if using JEE, but do not need to access Camel with JEE Stack
Camel uses a Simple Map based Bean Registry (Can also use JNDI)
Started using CamelServletContextListener
Configuration XML Based
Route Builders defined in web.xml
60. Bootstrapping with CDI
Does not Require Spring or use Servlets
Best if using JEE, Especially CDI
Camel uses CDI Bean Manager
Started using an @Startup @Singleton Annotated Bean
All Configuration done in Java, No XML
61. Camel Bootstrap Class
Must be a Singleton, @Singleton
Must run at Startup. @Startup
Inject an instance of CdiCamelContext
Adds a CDI Bean Registry that allows lookup of CDI Beans when
Instantiated
@PostConstruct method should Configure/Start Context and Add
Routes
@PreDestroy should Stop Camel Context
63. Using the XML Based DSL
Spring and Blueprint XML routes can also be used
Routes loaded from XML file in Bootstrap Class
InputStream is = this.getClass().getClassLoader().getResourceAsStream("camelroutes.xml");
if (is != null) {
RoutesDefinition routes = this.camelCtx.loadRoutesDefinition(is);
this.camelCtx.addRouteDefinitions(routes.getRoutes());
}
65. Configuration with Camel CDI
No Spring Config or Context
With Camel CDI Components are Configured in Java
Configured on the Camel Context
All Components can be Configured
66. Configuring Components
Configred in your Bootstrap Class
Must be Configured Prior to Start of Camel Context
Lookup Existing Components with getComponent()
Lookup via Registered Name - jms, activemq, etc...
Most Core Components already Registered on Context
Lazily initialize Components that arent Registered
Add New Components with addComponent()
69. Camel & JBoss A-MQ
Camel has no JBoss A-MQ Component
Several ways to Connect to A-MQ from Camel
JMS Component
ActiveMQ Component
Bean using JMS API
70. Camel JMS vs ActiveMQ
JMS component
Based on Spring JMS
Uses Spring JmsTemplate for Sending
Uses Spring MessageListenerContainer for Consuming
ActiveMQ Component
Based on JMS Component
Optimized for ActiveMQ
Supports ActiveMQ Specific Features such as Destination Options
71. MDB vs Camel JMS
Using an MDB Generally offers Higher Performance
Use a Producer Template to send to a Direct Camel Route
MDB Uses Containers Pooled Resource Adapter
Camel JMS Component Built on Spring JMS
Uses the DefaultMessageListenerContainer
Shares a Single Connection for all Consumers
72. Attachments over JMS
Not Supported by Camel or any of its JMS based Components
Two Solutions
Move Attachment into Message Body with a Custom Object
Use the Claim Check EIP
73. Claim Check EIP
Replaces Message Data with a Unique ID for Future Retrieval
Data stored into Persistent Data Store
Data Retrieved later using Unique ID
74. Claim Check EIP Example
from("direct:start").to("bean:checkLuggage").to("jms:queue:SomeQueue");
from("jms:queue:SomeQueue").to("bean:dataEnricher").log("Do Stuff");
public static final class CheckLuggageBean {
public void checkLuggage(Exchange exchange, @Body String body, @XPath("/order/@custId") String custId) {
dataStore.put(custId, body);
exchange.getIn().setHeader("claimCheck", custId);
exchange.getIn().setBody(null);
}
}
public static final class DataEnricherBean {
public void addDataBackIn(Exchange exchange, @Header("claimCheck") String claimCheck) {
exchange.getIn().setBody(dataStore.get(claimCheck));
dataStore.remove(claimCheck);
exchange.getIn().removeHeader("claimCheck");
}
}
75. Web Services with Camel CDI
Web Services are common place in Integration
Camel has Several Web Service Related Components
CXF
CXFRS
Spring Web Services
Rest
Spark-Rest
76. Some of the Problems
Spring Web Services require Spring
Rest and Spark-Rest Components not Available
Part of Camel 2.14
Only Leaves CXF and CXFRS
Dependent on Spring for Configuration
Needs Servlet to Start
77. Using Camel CXF with Camel CDI
Configured via Camel Context
Endpoints created Programmatically
Requires Http Jetty Transport to Publish Service
CxfEndpoint orderEndpoint = new CxfEndpoint();
orderEndpoint.setAddress("http://localhost:9595/order");
orderEndpoint.setServiceClass("net.bryansaunders.camel.OrderEndpoint");
orderEndpoint.setWsdlURL("wsdl/order.wsdl");
orderEndpoint.setCamelContext(this.camelCtx);
camelCtx.addEndpoint("cxf:bean:orderEndpoint", orderEndpoint);
78. Alternate Solution
Use the Web Services Subsystem
Deploy Web Services using JAX-WS
Use Producer Template to Call Camel from Implementation
Use a Direct Route
Route is more Flexible, Can be Called without SOAP
Easier to Configure more Advanced Web Services
80. Camel & SwitchYard Test Support
Camel and SwitchYard both include Test Frameworks
Mocks created with Camel Test cannot replace SwitchYard Endpoints
Intercept Messages and Route to Mockable Endpoint
SwitchYard expects Route to Start with SwitchYard Endpoint
Define two Routes
First Route has SwitchYard Endpoint and Forwards to Second Route
Second Route starts with a Mockable Endpoint (Usually Direct)
81. Camel & SwitchYard Test Support
public class SomeTestClass extends CamelTestSupport {
private static final String MESSAGE = "...";
@Test
public void someTest() throws Exception {
MockEndpoint endpoint = getMockEndpoint("mock:switchyard:WebOutService");
endpoint.expectedBodiesReceived(MESSAGE);
template.sendBody("direct:WebInService", MESSAGE);
endpoint.assertIsSatisfied();
}
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new WebInServiceRoute() {
@Override
public void configure() throws Exception {
interceptSendToEndpoint("switchyard://WebOutService")
.skipSendToOriginalEndpoint().to(
"mock:switchyard:WebOutService");
super.configure();
}
};
}
}
from("switchyard://WebInService").to("direct:WebInService");
from("direct:WebInService").log("Doing something very clever").to("switchyard://WebInCanonicalSystem");
82. Testing with Pax Exam
In-Container Testing Framework for OSGi, Java EE, and CDI
Similar to Arquillian
Uses a Test Driver and a Test Container
Test Driver launches the OSGi framework and the system under test
Probe Builds Bundles from Test Cases and Injects into the Container
JUnit and TestNG Drivers
Drivers are Annotation Based
83. Pax Exam
Supports All Major OSGi Frameworks
Equinox, Felix, Knoplerfish, Karaf
Multiple Strategies for Restarting and Reusing the Running OSGi
Framework for each Test
Two Types of Containers
Native runs in the same VM as the Test Driver
Forked runs in a separate VM from the Test Driver
84. Pax Exam Karaf Container
Eases Integration Testing with Pax Exam and Karaf
Provides an Actual Karaf Container for Testing
Supports any Karaf Based Distribution (Fuse, Service Mix, Geronimo)
Maintained as Official Pax Exam modules
Adds Karaf Specific Support
85. Container Configuration
Controls the Host Container
Determines the Set of Bundles and Features provisioned to the Container
Builds and Configures the Container Environment
Multiple Methods of Specifying Configuration Options
One or more Methods Annotated with @Configuration that return Option[]
86. Probe
Artifact added to the Container for Testing
Created on the Fly by Pax TinyBundles
Contains the Current Test Classes and All Classes/Resources under the
Same Root
Can be Configured inside the Test Class if needed
87. Writing Testable Routes
Anything that needs to Change during a Test should be Externalized
All Endpoints
Configuration Values
Header Names
Etc...
Integrations with External Resources should be Mock able
Database Connections
Messaging Brokers
Etc...
88. Generating Dependency File
Generate using the Maven Plugin
<plugin>
<groupId>org.apache.servicemix.tooling</groupId>
<artifactId>dependsmavenplugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<id>generatedependsfile</id>
<goals>
<goal>generatedependsfile</goal>
</goals>
</execution>
</executions>
</plugin>
Should use the versionAsInProject() method in Container Configuration
89. Configuring the Container
Container Configuration is Done with the @Configuration Annotation
Method should Return Option[]
Used for
Specifying the Distribution
Setting Distribution Properties
Log Level, Unpack Directory, Start Method, Etc…
Loading Features / Bundles
Adding/Modifying Distribution Environment
Property Files, Etc…
91. Modifying the Probe
Modified Using the @ProbeBuilder Annotation
Uses the Following Method Signature
@ProbeBuilder
public TestProbeBuilder probeConfiguration(TestProbeBuilder probe) {
// Do Things
}
Method should return the probe Parameter after Modification
Sets Probe Specific Configurations via Headers
Dynamically Imports all Packages by Default
92. Using Provisional Packages
Provisional Packages are by Default NOT Imported
Probe must be Modified to Import Them
Add the Following Line to your ProbeBuilder Method
probe.setHeader(Constants.DYNAMICIMPORT_PACKAGE, "*;status=provisional");
93. Getting the Camel Context
There will potentially be Multiple Camel Contexts running in the
Container
Need to get the Correct Context for Our Tests
Best Done in doPreSetup() Method that can be Overridden from
CamelTestSupport
Camel Context should be Looked Up by it’s name in the BundleContext
@Override
protected void doPreSetup() throws Exception {
camelContext = PaxExamTestUtil.getOsgiService(CamelContext.class,
"(camel.context.name=" + CAMEL_CONTEXT_NAME + ")", 10000, bundleContext);
assertNotNull(camelContext);
}
94. Sending Messages
2 Steps
Create/Start Producer Template
Send Message using Template
// Set Headers To Be Sent
final Map<String, Object> headerMap = new HashMap<String, Object>();
headerMap.put("WM_MSG_ID", null);
headerMap.put("WM_HO_WMQ_QUEUE", null);
// Send the Message Body
ProducerTemplate template = camelContext.createProducerTemplate();
template.start();
template.send("direct:gateway_in", new Processor() {
public void process(Exchange exchange) {
Message in = exchange.getIn();
in.setBody("Hello from Camel");
in.setHeaders(headerMap);
}
});
95. Using Mock Queues
Get the Endpoint from the Camel Context and Cast to a MockEndpoint
MockEndpoint mockNoHomeOfficeDlq = (MockEndpoint)
CamelContext.getEndpoint("mock:gateway_noHomeOfficeDlq");
Set Mock Endpoint’s Expectations
mockNoHomeOfficeDlq.expectedMessageCount(1);
mockNoHomeOfficeDlq.expectedBodiesReceived("Hello from Camel");
Send Messages to Mock Endpoint
Assert Mock Endpoint is Satisfied
mockNoHomeOfficeDlq.assertIsSatisfied(2500);
96. Pax Exam on Karaf Demo
https://github.com/bsaunder/camel/tree/master/fuse/pax-exam
97. What About Arquillian?
Arquillian has OSGi support
Works like standard Arquillian
Supports Multiple Containers
JBoss (Embedded)
Felix (Embedded)
Equinox (Embedded)
Karak (Embedded/Managed/Remote)
Not as Feature Rich as Pax Exam
Evolving Quickly
99. Camel v3 Improvements
Improved Test Support
Support for testing indiviual components, processors, etc...
Persistent Message Store
Java 8 DSL
Split/Optimize Camel-CXF
100. Camel on EAP Subsystem
Full EAP Subsystem
Improved Integration with JEE Standards
Updated JEE Related Camel Components
camel-cdi
camel-cxf
camel-jaxb
camel-jms
camel-jmx
camel-jpa
Full Arquillian Support
Available now in Wildfly 8.1
Official Support in future Fuse Release
Targeted for Fuse 6.2
101. Questions?
Presentation is Available At
https://github.com/bsaunder/camel_from_the_field
All Demo Code is Available At
https://github.com/bsaunder/camel/