Skip to main content

Posts

HTTP/2 tutorial for beginners

HTTP is the most widely used application layer protocol in the world. Entire Web is running on top of this protocol. HTTP 1.1 was introduced in 1999 and is still the de-facto standard for web communication. With the improvements of the web and the way people interact with the web (mobile devices, laptops, etc..), this protocol has been hacked to provide new functionality. This hacking is no longer stable and the world of internet needed a new protocol version. That is why IETF has developed HTTP/2 protocol to address the challenges which are faced by the web community. You can find the latest draft of this protocol here . Why we need HTTP/2 Early days, bandwidth was the limiting factor. But today, average internet user in US has a bandwidth of 11Mbit/s Latency is the new bandwidth. End users will not worry about the bandwidth as long as they get better responsive applications. HTTP 0.9 - Initial version of the protocol introduced in 1991. Required a new TCP connection per re...

WSO2 ESB 4.9.0 Released !!!

It has been months since I have written a blog post. One of the main reason for that was the subject of this post. We have been working on ESB 4.9.0 release day in day out and most of the time beyond mid night. With all the efforts, we have released the most awaited ESB release. You can download the binary from the following location http://wso2.com/products/enterprise-service-bus/ What is special about WSO2 ESB 4.9.0 WSO2 ESB has been well known for the near zero latency and the ultra performance of its mediation engine. We made this mediation engine faster and more feature rich than ever. Inbound Endpoints make ESB the ultimate integration engine with more dynamism.  Coordination support for Scheduled tasks, Message Processors and Inbound endpoints make sure that you are safe unless there is at least one node up and running Integration with different MQ protocols has been extended with RabbitMQ, MQTT, Kafka Message storing capabilities has been extended with JDBC, R...

WSO2 ESB Error Handling Tutorial - Part I (Client side error handling)

Recently, I found a nice video on facebook which was shared by Sanjiva Weerawarana (CEO @ WSO2), which was a narration by Matt Damon. The original paragraph was taken from a speech by Howard Zinn's 1970 speech. https://vimeo.com/48834336 According to that, world is topsy turvy (upside down). Wrong people are in power, Wrong people are out of power. But there is one thing missing in that speech. Which is that wrong people are using software, wrong people are not using software :). Sorry about going out of the topic. But this speech has really moved me. Anyway, let's start talking about the subject. WSO2 ESB is the central hub of your SOA architecture. It will communicate with all kinds of heterogenous systems. These systems can go mad sometimes. In such a scenarios, WSO2 ESB should not go mad. If you haven't done proper error handling at WSO2 ESB, even though it does not go mad, people will feel that it has gone mad by looking at lengthy error logs and exceptions. So w...

Extending WSO2 ESB with a Custom Transport Implementation - Part II

This blog post is a continuation to my previous blog post where I have described the concepts of WSO2 ESB transports mechanism. Since we have covered the basics, let's start writing some real code. I will be using the ISO8583 standard as my subject to this custom implementation. I will be grabbing some content from this blog post for my reference to ISO8583 java implementation (Business logic). Thanks Manoj Fernando for writing such an informative post. http://manoj-fernando.blogspot.com/2013/08/iso8583-with-wso2-esb.html Idea of the custom transport implementation is to provide a mechanism to write your business logic which can plug in to the WSO2 ESB runtime. I am not going to tell more about ISO8583 or it's internal implementations. I will be using already implemented java library jPos for this purpose.  It has the functionality to cover the basic use cases of ISO8583 implementations. Sample use case Let’s take the scenario of a certain financial application needi...

Extending WSO2 ESB with a Custom Transport Implementation - Part I

WSO2 ESB is considered as one of the best and highest performing open source integration solutions available in the market. One of the astonishing features of the WSO2 ESB is the extensibility of the solution to meet your custom requirements. This means a LOT, if you have dealt with proprietary solutions provided big players (you name it). With this blog post, I will be discussing about one of the not so frequently used but THE BEST extension point in WSO2 ESB which is implementing a custom transport. Given that WSO2 ESB is an extensible solution, that does not mean that it is lacking OOTB features. In fact it provides the most complete feature set provided by any open source integration solution in the market. But as you know, it is not a silver bullet (In fact we can't make silver bullets). Therefore, you may encounter some scenarios where you need to write a custom transport implementation to connect with one of your systems. I will be taking ISO8583 messaging standard to...

Monitoring Garbage Collection of WSO2 ESB

Garbage Collection has been one of the most important features of Java programming language which made it the automatic choice for developing enterprise applications. WSO2 ESB has been written entirely in Java. Garbage Collection is pretty much related to the performance of a Java program. WSO2 ESB is a java program and it needs to provide the maximum performance to the users who use that for their enterprise integrations. From this blog post, I will be discussing about different tools which we can use to monitor the GC performance of WSO2 ESB. 1) Monitoring GC activity using jstat command We can use the jstat command line tool which comes with the JDK to monitor the GC activity on a java program. Let's start the WSO2 ESB server by executing the wso2server.sh file located under ESB_HOME/bin directory. sh wso2server.sh start Then we need to find the process ID of this java process using the following command ps -ef | grep wso2esb | grep java 501 13352 13345   0...

Garbage Collection and Application Performance

Automatic Garbage Collection is one of the finest features of the Java programming language. You can find more information about Garbage Collection concepts from the below link. http://soatutorials.blogspot.com/2015/06/understanding-java-garbage-collection.html Even though GC is a cool feature in the JVM, it comes at a cost. Your application will stop working (Stop the World) when GC happens in the JVM level. Which means that, GC events will affect the performance of your java application. Due to this, you should have a proper understanding about the impact of GC for your application.  There are two general ways to reduce garbage-collection pause time and the impact it has on application performance: The garbage collection itself can leverage the existence of multiple CPUs and be executed in parallel. Although the application threads remain fully suspended during this time, the garbage collection can be done in a fraction of the time, effectively reducing the susp...