The document discusses the Apache SOA stack and debunks some myths about SOA. It provides an overview of the Enterprise Service Bus (ESB) and explains why the Apache ServiceMix stack is a good choice as an ESB due to its modularity, stability, and cluster capabilities. The document also discusses how to design software and build systems for an ESB using OSGi and Maven.
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.
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.
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
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...
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Invited Remote Lecture to SC21
The International Conference for High Performance Computing, Networking, Storage, and Analysis
St. Louis, Missouri
November 18, 2021
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.
This document provides an overview of Apache Camel, an open source framework for integration. It discusses key Camel concepts like routes, endpoints, components, messages and integration patterns. It provides examples of routing messages between different endpoints using the Java and XML domain specific languages.
Apache Camel is eight years old, and some say it's effectiveness as the glue between components has diminished. "Our open source experts say, "Not so!"
This is a classic example of older technology not being used to its fullest in favor of the latest and greatest. By walking through little known configuration and optimization tricks to get data flowing reliably and efficiently - even for today's complexity and scale - this session proves that older technology is often still the best solution.
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.
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.
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015Krzysztof Sobkowiak
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
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQLUlf Wendel
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...
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.
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.
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.
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.
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.
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.
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.
JBoss Fuse - Fuse workshop EAP containerChristina Lin
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
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.
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.
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.
WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...WSO2
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.
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.
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.
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
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.
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.
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.
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.
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.
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 DCPaco Nathan
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.
Microservices for java architects it-symposium-2015-09-15Derek Ashmore
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.
Java EE microservices architecture - evolving the monolithMarkus Eisele
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.
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.
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.
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.
Strata SC 2014: Apache Mesos as an SDK for Building Distributed FrameworksPaco Nathan
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.
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.
Similar to Succeding with the Apache SOA stack (20)
Advanced Techniques for Cyber Security Analysis and Anomaly DetectionBert Blevins
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.
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfjackson110191
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.
The Rise of Supernetwork Data Intensive ComputingLarry Smarr
Invited Remote Lecture to SC21
The International Conference for High Performance Computing, Networking, Storage, and Analysis
St. Louis, Missouri
November 18, 2021
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.
Support en anglais diffusé lors de l'événement 100% IA organisé dans les locaux parisiens d'Iguane Solutions, le mardi 2 juillet 2024 :
- Présentation de notre plateforme IA plug and play : ses fonctionnalités avancées, telles que son interface utilisateur intuitive, son copilot puissant et des outils de monitoring performants.
- REX client : Cyril Janssens, CTO d’ easybourse, partage son expérience d’utilisation de notre plateforme IA plug & play.
Best Programming Language for Civil EngineersAwais Yaseen
The integration of programming into civil engineering is transforming the industry. We can design complex infrastructure projects and analyse large datasets. Imagine revolutionizing the way we build our cities and infrastructure, all by the power of coding. Programming skills are no longer just a bonus—they’re a game changer in this era.
Technology is revolutionizing civil engineering by integrating advanced tools and techniques. Programming allows for the automation of repetitive tasks, enhancing the accuracy of designs, simulations, and analyses. With the advent of artificial intelligence and machine learning, engineers can now predict structural behaviors under various conditions, optimize material usage, and improve project planning.
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxSynapseIndia
Your comprehensive guide to RPA in healthcare for 2024. Explore the benefits, use cases, and emerging trends of robotic process automation. Understand the challenges and prepare for the future of healthcare automation
How Social Media Hackers Help You to See Your Wife's Message.pdfHackersList
In the modern digital era, social media platforms have become integral to our daily lives. These platforms, including Facebook, Instagram, WhatsApp, and Snapchat, offer countless ways to connect, share, and communicate.
Kief Morris rethinks the infrastructure code delivery lifecycle, advocating for a shift towards composable infrastructure systems. We should shift to designing around deployable components rather than code modules, use more useful levels of abstraction, and drive design and deployment from applications rather than bottom-up, monolithic architecture and delivery.
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsMydbops
This presentation, delivered at the Postgres Bangalore (PGBLR) Meetup-2 on June 29th, 2024, dives deep into connection pooling for PostgreSQL databases. Aakash M, a PostgreSQL Tech Lead at Mydbops, explores the challenges of managing numerous connections and explains how connection pooling optimizes performance and resource utilization.
Key Takeaways:
* Understand why connection pooling is essential for high-traffic applications
* Explore various connection poolers available for PostgreSQL, including pgbouncer
* Learn the configuration options and functionalities of pgbouncer
* Discover best practices for monitoring and troubleshooting connection pooling setups
* Gain insights into real-world use cases and considerations for production environments
This presentation is ideal for:
* Database administrators (DBAs)
* Developers working with PostgreSQL
* DevOps engineers
* Anyone interested in optimizing PostgreSQL performance
Contact info@mydbops.com for PostgreSQL Managed, Consulting and Remote DBA Services
Transcript: Details of description part II: Describing images in practice - T...BookNet Canada
This presentation explores the practical application of image description techniques. Familiar guidelines will be demonstrated in practice, and descriptions will be developed “live”! If you have learned a lot about the theory of image description techniques but want to feel more confident putting them into practice, this is the presentation for you. There will be useful, actionable information for everyone, whether you are working with authors, colleagues, alone, or leveraging AI as a collaborator.
Link to presentation recording and slides: https://bnctechforum.ca/sessions/details-of-description-part-ii-describing-images-in-practice/
Presented by BookNet Canada on June 25, 2024, with support from the Department of Canadian Heritage.
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Chris Swan
Have you noticed the OpenSSF Scorecard badges on the official Dart and Flutter repos? It's Google's way of showing that they care about security. Practices such as pinning dependencies, branch protection, required reviews, continuous integration tests etc. are measured to provide a score and accompanying badge.
You can do the same for your projects, and this presentation will show you how, with an emphasis on the unique challenges that come up when working with Dart and Flutter.
The session will provide a walkthrough of the steps involved in securing a first repository, and then what it takes to repeat that process across an organization with multiple repos. It will also look at the ongoing maintenance involved once scorecards have been implemented, and how aspects of that maintenance can be better automated to minimize toil.
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
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.
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
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
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
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/