Red Hat has been using the phrase “Accelerate, Integrate and Automate”, for sometime now, to explain its comprehensive middleware portfolio to its customers. Red Hat middleware does not work in isolation. It is imperative that these different middleware products can work together to achieve a business outcome.
In this article, I am going to show you how to make the 2 “Integrate” products: JBoss Fuse (Fuse), JBoss Data Virtualisation (JDV) and the “Automate” products: JBoss Business Process Management Suite (BPMS)/JBoss Business Rules Management System (BRMS) work together. Since BPMS/BRMS and JDV run on JBoss Application Server (EAP), I can even claim that this example involves middleware products of all 3 categories ie, Accelerate, Integrate and Automate. Continue reading Making JBoss Fuse, Data Virtualisation and BPMS Work Together – Part 1
In Part 1, I describe what Data Virtualisation is and how one product, namely JBoss Data Virtualisation, works and its architecture. In this instalment, I am going to describe the implementation of a virtual database using 3 data sources. I am also going to show you how to interact with the virtual database using the SquirrelSQL client. The intention of this article is to give you some ideas as to how easy it is to aggregate several data sources to construct a virtual database. It explains the implementation on a high level only and does not give a step-by-step instruction of how to do it from scratch. Continue reading JBoss Data Virtualization Part 2 – An Example
The Journey Begins
With the release of BPMS/BRMS 6.3 back in May, I think it is time for me to embark on a journey to explore its new features. What better to do than migrate an existing business rules application which I deployed on the Realtime Decision Server in BPMS 6.1 to 6.3’s new Intelligent Process Server. A piece of cake, so I thought… Continue reading BPMS/BRMS 6.3: An Intelligent Process Server Odyssey
Have you ever lamented over how difficult it is to test a CEP application, let alone doing a demo? Common challenges include:
- How to generate events for testing a CEP application?
- How to demo a CEP application?
- Cannot be real-time, it takes too long
- Lack of infrastructure during demo
- Need repeatable outcome
In this article, I am going to show you a framework that I developed which allows you to define external events in a CSV file, play them back to your CEP application in demonstrations in accelerated time. This framework can also be used to generate a large volume of events based on event arrival distribution either in realtime or accelerated time to load test your CEP application. It is such a versatile tool that you can even use it to perform discrete event simulation (not described in this article).
The framework solves all the problems listed earlier by allowing you to:
- Configure load to drive your CEP application
- Run your CEP application in accelerated time
- See the results quickly
- Use it as a reusable infrastructure for CEP application testing and demos
- Achieve repeatable outcome
Examples will be provided to showcase the capabilities of the framework including playing back configured events for a CEP application and realtime load generation using JBoss Fuse/A-MQ and event arrival patterns (distributions).
This article is divided into the following main sections:
- The Optometrist CEP Application – this CEP application shows how to configure individual events to drive the CEP application in a CSV file.
- The Stock Price CEP Application – this is a simple CEP Application which illustrates the event generation capability based on event arrival distribution.
- Realtime Load Generation via Fuse and A-MQ integration – this section illustrates how realtime load generation can be achieved running multiple instances of the load generator to feed the Stock Price application via Fuse and A-MQ by applying software design patterns to loosely couple the load generator and the CEP application.
- How it works – shows the UML class diagram containing the load testing framework classes, their attributes, operations and relationships. It also describes how the framework works including how the load generator is loosely coupled to your CEP application using the Observer design pattern.
The first few sections give you an overview of the capabilities of the framework. The “How it works” section outlines how the framework works. Continue reading A Load Generation Framework for CEP Application Testing and Demos
In my last article, I showed you how to use the Java 7’s Fork/Join framework to write a parallel program. If you examine the code carefully, you will notice that it looks quite different from normal serial Java code. Developers having to write code differently for parallel programs imposes a serious barrier to its wide adoption as a framework for writing parallel programs. What developers want is that they can write code that can be executed serially as well as in parallel. Enter lambdas and streams. The Java community has observed the trend (Moore’s Law, hitting the frequency wall ie, power dissipation issues as described in my previous article) and recognised that chip designers have nowhere to go but parallel. Consequently, software has to be written such that it can take advantage of the parallel hardware. And the OpenJDK Project Lambda was started in Dec 2009 with the aims to support programming in a multicore environment by adding closures and related features to the Java SE platform. The objectives are realised in Java SE 8 as JSR 335: Lambda Expressions for the Java Programming Language. In this article, I am going to show you how to use lambdas and streams to implement a Mandelbrot generation parallel program and compare its performance with the Fork/Join framework we examined last time. Continue reading Java Parallel Programming Part 3: Lambdas and Streams
This is the first of three posts on Java Parallel Programming using a Shared Memory Model after my introductory post on the subject . In this article, I shall show you how to use Java 7’s Fork/Join framework for parallel programming. As you are aware, multi-threading has been available since Java was first introduced in the last millennium. What’s the fuss regarding Fork/Join then? According to Herbert Schildt in his book “Java The Complete Reference Eighth Edition” (ISBN: 978-0-07-160631-8) on page 1077:
...multithreading is used to allow two or more tasks to share the CPU. This type of multithreading is typically supported by an object of type Thread (as described in Chapter 11). Although this type of multithreading will always remain quite useful, it was not optimized for situations in which two or more CPUs are available (multicore computers)...
In contrast to the usual multithreading model, the Fork/Join Framework introduced in Java 7 automatically scales to make use of multiple processors available. In addition, it simplifies the creation and use of multiple threads as you will see in the code segments later on. Continue reading Java Parallel Programming Part 2: Fork/Join
The first question you have is probably: What is parallel programming and why? Parallel programming or computing is a form of computation in which many calculations are carried out simultaneously, operating on the principle that large problems can often be divided into smaller ones, which are then solved at the same time. In short, its main aims are to:
- Increase speed
- Process huge amount of data
- Solve problems in real time
- Solve problems in due time
Why now? Continue reading Java Parallel Programming Part 1: Introduction
High Performance Computing or HPC refers to the practice of aggregating computing power in a way that delivers much higher performance than one could get out of a single machine in order to solve large problems in science, engineering, or business. In the past, it was quite costly to build a HPC cluster. But with the ever diminishing cost of hardware, I built one some months ago for experimentation. It is now due for a revamp. But before I describe the revamp details, here is a recap on the existing HPC cluster which I shall refer to as my home Compute Cluster. Continue reading Home Compute Cluster Revamp – Part 1
After putting my home server online running my blog and other applications accessible from the Internet, I left it unattended for a few days and then I found that I couldn’t access my blog from the Internet any more. It has been attacked by hackers using Denial-of-service attacks. Hackers created a large number of half-open TCP connections to the server and established connections to the Apache Web Server. The latter caused the Apache Web Server’s Prefork Multi-Processing Module (MPM) to spawn the maximum number of Processes allowed. This combination brought the server performance to a stand-still. The DMZ I created appears to be holding up as I did not find any evidence on hackers breaking through my second firewall. Continue reading Defending Hacking Attacks on My Home Server
(This article assumes some basic knowledge of the JBoss BPM Suite including using Business Central.)
JBoss BPMS forms are generated and customised by business analysts when they create business processes. The forms are usually used for kicking off a business process instance and interacting with the user when the process reaches a user task eg, for a manager to manually approve a loan. Few customers use the forms on the BPMS Execution Servers. They prefer to build a web application that interacts with a business process remotely running on a BPMS Execution Server to gain fine-grained access control, consistent look-and-feel and better client interaction. The main issue is how to use the forms generated on the BPMS server from the web application. There was no easy way to do that until the recent release of JBoss BPMS 6.1. Continue reading Building a JBoss BPMS Web Application using jBPM Form API