<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>PRABATH'S TECH BLOG</title><description></description><managingEditor>noreply@blogger.com (Prabath Ariyarathna)</managingEditor><pubDate>Mon, 9 Dec 2024 16:52:29 +0530</pubDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">84</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">25</openSearch:itemsPerPage><link>http://prabu-lk.blogspot.com/</link><language>en-us</language><itunes:explicit>no</itunes:explicit><itunes:keywords>open,source</itunes:keywords><itunes:subtitle>Open source</itunes:subtitle><itunes:category text="Technology"><itunes:category text="Tech News"/></itunes:category><itunes:author>prabath ariyarathna</itunes:author><itunes:owner><itunes:email>prabathmail@yahoo.com</itunes:email><itunes:name>prabath ariyarathna</itunes:name></itunes:owner><item><title>Select different backend pools based on the HTTP Headers in Nginx</title><link>http://prabu-lk.blogspot.com/2017/03/select-different-backend-pools-based-on.html</link><pubDate>Tue, 21 Mar 2017 09:46:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-4160681372283398617</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;span style="font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family: &amp;quot;georgia&amp;quot; , &amp;quot;times new roman&amp;quot; , serif;"&gt;Some scenarios we need to select different backend pools based on some attributes in the request.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;georgia&amp;quot; , &amp;quot;times new roman&amp;quot; , serif;"&gt;&lt;a href="http://nginx.org/"&gt;Nginx&lt;/a&gt; has that capability to selecting different&amp;nbsp;backend pools based on the request header value.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSWaUEEikgrdexC3iRsD-6RPMsSB_0AV3N1jubG8Y1dO0UV3ia7m8UKj80VExec4UDxb64PVjM2MSHpWd_qym1w5_Jx0cpk8_XdG9s1j7kP4OrhZ3JMV7mfvQankTmY9ZnzzS-13FDMJGQ/s1600/diagram.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSWaUEEikgrdexC3iRsD-6RPMsSB_0AV3N1jubG8Y1dO0UV3ia7m8UKj80VExec4UDxb64PVjM2MSHpWd_qym1w5_Jx0cpk8_XdG9s1j7kP4OrhZ3JMV7mfvQankTmY9ZnzzS-13FDMJGQ/s400/diagram.png" width="225" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;span style="background-color: white; font-family: &amp;quot;georgia&amp;quot; , &amp;quot;times new roman&amp;quot; , serif;"&gt;To accomplish this in Nginx you can use the following code in your configuration.&lt;/span&gt;&lt;/div&gt;
&lt;span style="background-color: white; color: #333333; font-family: &amp;quot;lato&amp;quot; , sans-serif; font-size: 18px;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="background-color: white; color: #333333; font-family: &amp;quot;lato&amp;quot; , sans-serif; font-size: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;upstream gold {
     server 127.0.0.1:8080;
     server 127.0.0.1:8081;
     server 127.0.0.1:8082;
}

upstream platinum {
     server 127.0.0.1:8083;
     server 127.0.0.1:8084;
     server 127.0.0.1:8085;
}

upstream silver {
     server 127.0.0.1:8086;
     server 127.0.0.1:8087;
}

# map to different upstream backends based on header
map $customer_type $pool {
     default "gold";
     platinum "platinum";
     silver "silver";
}

server {
     listen 80;
     server_name localhost;
     location / {
          proxy_pass http://$pool;

          #standard proxy settings
          proxy_set_header X-Real-IP $remote_addr;
          proxy_redirect off;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header Host $http_host;
          proxy_redirect off;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_set_header X-NginX-Proxy true;
          proxy_connect_timeout 600;
          proxy_send_timeout 600;
          proxy_read_timeout 600;
          send_timeout 600;
}
&lt;/pre&gt;


&lt;br /&gt;

&lt;span style="font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;"&gt;You can test this setup by sending request with custom http header customer_type.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;"&gt;&lt;b&gt;Ex:- customer_type = gold&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;"&gt;This will load balance only among the 8080, 8081 and 8082.&lt;/span&gt;&lt;/div&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;/pre&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;/pre&gt;
&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSWaUEEikgrdexC3iRsD-6RPMsSB_0AV3N1jubG8Y1dO0UV3ia7m8UKj80VExec4UDxb64PVjM2MSHpWd_qym1w5_Jx0cpk8_XdG9s1j7kP4OrhZ3JMV7mfvQankTmY9ZnzzS-13FDMJGQ/s72-c/diagram.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>Why Container based deployment is preferred for the Microservices?</title><link>http://prabu-lk.blogspot.com/2017/01/why-container-based-deployment-is.html</link><category>deployment</category><category>Microservice</category><category>Microservice deployment</category><pubDate>Mon, 23 Jan 2017 13:51:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-4831673718669117734</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 11pt; margin-top: 4pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;When it comes to Microservices architecture, the deployment of Microservices plays a critical role and has the following key requirements.&lt;/span&gt;&lt;/div&gt;
&lt;span style="background-color: white; font-family: Arial; font-size: 16px; white-space: pre-wrap;"&gt;&lt;b&gt;&lt;u&gt;Ability to deploy/un-deploy independently from other Microservices.&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="background-color: white; font-family: Arial; font-size: 16px; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="background-color: white; font-family: Arial; font-size: 16px; white-space: pre-wrap;"&gt;Developers never need to coordinate the deployment of changes that are local to their   service. These kinds of changes can be deployed as soon as they have been tested. The UI team can, for example, perform A|B testing and rapidly iterate on UI changes. The Microservices Architecture pattern makes continuous deployment possible.&lt;/span&gt;&lt;div&gt;
&lt;span style="font-family: Arial;"&gt;&lt;span style="white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 16px; white-space: pre-wrap;"&gt;&lt;b&gt;&lt;u&gt;Must be able to scale at each Microservices level (a given service may get more traffic than other services). &lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 16px; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; Monolithic applications are difficult to scale individual portions of the application. If one service is memory intensive and another CPU intensive, the server must be provisioned with enough memory and CPU to handle the baseline load for each service. This can get expensive if each server needs high amount of CPU and RAM, and is exacerbated if load balancing is used to scale the application horizontally. Finally, and more subtlety, the engineering team structure will often start to mirror the application architecture over time.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;img alt="main.png" height="307" src="https://lh3.googleusercontent.com/W287N5NQTrFbBA9VXRRW5qs7K4kgvHsNoJ2J4hNmX-VgfOvH8fhcxPu5TEFidEWXVBfBf34L6SoCnsQ1DM3xPmLIdAJtR7OcOKBbPYQiONtt1HsvHoTk9j0q03JDYUCqI9XF3bAx" style="border: none; transform: rotate(0rad);" width="369" /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;We can overcome this by using Microservices. Any service can be individually scaled based on its resource requirements. Rather than having to run large servers with lots of CPU and RAM, Microservices can be deployed on smaller hosts containing only those resources required by that service. &lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; For example, you can deploy a CPU-intensive image processing service on EC2 Compute Optimized instances and deploy an in-memory database service on EC2 Memory-optimized instances.&lt;/span&gt;&lt;/div&gt;
&lt;b style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/b&gt;
&lt;span style="background-color: white; font-family: Arial; font-size: 16px; white-space: pre-wrap;"&gt;&lt;b&gt;&lt;u&gt;Building and deploying Microservices quickly.&lt;/u&gt;&lt;/b&gt; &lt;/span&gt;&lt;span style="background-color: white; font-family: Arial; font-size: 16px; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; One of the key drawback of the monolithic application is the difficult to scale. As explained in above section, it needs to mirror the whole application to scale. With the micro services architecture we can scale the specific services since we are deploying services in the isolated environment. Nowadays dynamically scaling the application is very famous every iSaaS has that capability(eg:- Elastic load balancing). With that approach we need to quickly launch the application in the isolated environment.&lt;/span&gt;&lt;/div&gt;
&lt;b style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Following are the basic deployment patterns which we can commonly see in the industry.&lt;/span&gt;&lt;/div&gt;
&lt;span style="background-color: white; font-family: Arial; font-size: 16px; white-space: pre-wrap;"&gt;&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Multiple service instances per host - deploy multiple service instances on a host&lt;/li&gt;
&lt;/ul&gt;
&lt;/span&gt;&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt; text-align: left;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;img alt="multipleservice.png" height="153" src="https://lh3.googleusercontent.com/yKqYr24-RPsp3n-Cn9x5njugvac_c3W6ua1yj_qDBnosh-V0c8MVrQEkPhhHTyDLjMeul18b0Kdisk41YBy6MQzGmAmzNgX5Z1CZZ0wYkk3NtoTj8roLHAGK0KuW914Pxmn8IsmN" style="border: none; transform: rotate(0rad);" width="353" /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="background-color: white; font-family: Arial; font-size: 16px; white-space: pre-wrap;"&gt;&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Service instance per host - deploy a single service instance on each host&lt;/li&gt;
&lt;/ul&gt;
&lt;/span&gt;&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt; text-align: left;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;img alt="multiHost.png" height="153" src="https://lh3.googleusercontent.com/gB7bJMVehS-MQztxI_M2u-ySEWok-E7TsqjnJUzR2CJecG57Ebs9uuNtj8XzgwWTSzUr27Gc7GNnCqsv_-Pkx8a5I_vwDc3IX2I7feU_jPxlnh3H0M9Du__FRG7Z5s6jaupj8mUf" style="border: none; transform: rotate(0rad);" width="273" /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;span style="background-color: white; font-family: Arial; font-size: 16px; white-space: pre-wrap;"&gt;&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Service instance per VM - a specialization of the Service Instance per Host pattern where the host is a VM&lt;/li&gt;
&lt;/ul&gt;
&lt;/span&gt;&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt; text-align: left;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;img alt="VM.png" height="153" src="https://lh6.googleusercontent.com/8xWwf0IJH29cnhSQ3adfqrp2R5zeHAFGWTJ4DQtkN03AAGY0jhIYhmw9M3qihllP-X_Y_Vsd1-go4crdTGtE2DKejQg6plC5n3pbb8tN5gvn-zpYDUtuxzOPPGseII1-X1AgHGpi" style="border: none; transform: rotate(0rad);" width="273" /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="background-color: white; font-family: Arial; font-size: 16px; white-space: pre-wrap;"&gt;&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Service instance per Container - a specialization of the Service Instance per Host pattern where the host is a container&lt;/li&gt;
&lt;/ul&gt;
&lt;/span&gt;&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt; text-align: left;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;         &lt;img alt="container.png" height="153" src="https://lh4.googleusercontent.com/SZOW5qwksvg3Pd47Q4SB-IoNQzfdVyiuYQ06SbrcFL--F-LdQwMBf4_KeCOopcMB7XOVDt46Fc3NH9bpfH8uUvNRRd41rBwa-pzbKakDNBkIF6yRoUl4b4e3TJufLPCc_HPzva8r" style="border: none; transform: rotate(0rad);" width="273" /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h2 dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 18pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 21.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Container or VM?&lt;/span&gt;&lt;/h2&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;As of today there is a significant trend in the industry to move towards containers from VMs for deploying software applications. The main reasons for this are the flexibility and low cost that containers provide compared to VMs. Google has used container technology for many years with &lt;/span&gt;&lt;a href="http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43438.pdf" style="text-decoration: none;"&gt;&lt;span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Borg &amp;amp; Omega&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; container cluster management platforms for running Google applications at scale. More importantly Google has contributed to container space by implementing cgroups and participating in libcontainer project. Google may have gained a huge gain in performance, resource utilization and overall efficiency using containers during past years. Very recently Microsoft who did not had an operating system level virtualization on Windows platform took immediate actions to implement native support for containers on Windows Server.&lt;/span&gt;&lt;/div&gt;
&lt;b style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;img alt="VM_vs_Docker.png" height="219" src="https://lh4.googleusercontent.com/iLhxf_HnA8O8MzUl7vEzFJxPU26HO1j9RmjTfD0y49OoZPvsrKX6UNC2xWhRKPjRQS7oIUd9r6w_Cvfy5e9ygfbkf80bpCGopFjYhPkPxYqAscYrEZe2vZHkGzSjYM0MfFhE3ug9" style="border: none; transform: rotate(0rad);" width="555" /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;I found nice comparison between the VMS and Containers in the internet which comparing House and the Apartments.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Houses (the VMs) are fully self-contained and offer protection from unwanted guests. They also each possess their own infrastructure – plumbing, heating, electrical, etc. Furthermore, in the vast majority of cases houses are all going to have at a minimum a bedroom, living area, bathroom, and kitchen. I’ve yet to ever find a “studio house” – even if I buy the smallest house I may end up buying more than I need because that’s just how houses are built. &lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Apartments (the containers) also offer protection from unwanted guests, but they are built around shared infrastructure. The apartment building (Docker Host) shares plumbing, heating, electrical, etc. Additionally apartments are offered in all kinds of different sizes – studio to multi-bedroom penthouse. You’re only renting exactly what you need. Finally, just like houses, apartments have front.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;There are design level differences between these two concepts. Containers are sharing the underlying resources while providing the isolate environment and it only provides the resources which need to run the application but VMS are different. It first start the OS and then start your application. Like or not it's providing default set of unwanted services which consume the resources.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Before move into the actual comparison, lets see how we can deploy micro services instance in any environment. Environment can be single or multi host in the single VM or it can be the multiple container in the single VM, single container in the single VM or dedicated environment. It is not just starting application on the VM or deploy application in the web container. We should have automated way to manage it. As the example AWS provide nice VM management capability for any deployments. If we use VM for the deployment we are normally build the VM with required application component and using this VM we can spawn any number of different instances. &lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Similar to AWS VM management, we need some container management platform for the container as well, because when we need scale the specific service we cannot manually monitor the environment and start new instance. It should be automated. As the example we can use Kubunertees. It is extending Docker's capabilities by allowing to manage a cluster of Linux containers as a single system, managing and running Docker containers across multiple hosts, offering co-location of containers, service discovery, and replication control. &lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; Both VM and containers are designed to provide an isolated environment. Additionally, in both cases that environment is represented as a binary artifact that can be moved between hosts. There may be other similarities but those are the major differences as i see.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;In a VM-centered world, the unit of abstraction is a monolithic VM that stores not only application code, but often it's stateful data. A VM takes everything that used to sit on a physical server and just packs it into a single binary so it can be moved around. &amp;nbsp;But it is still the same thing. &amp;nbsp;With containers, the abstraction is the application; or more accurately a service that helps to make up the application.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;When we scale up the instances this is very useful because we use VMs means we need to spawn another VM instance. It will take some times to start(OS boot time, Application boot time) but with the Docker like container deployment we can start new container instance within few milliseconds(Application boot time). &lt;/span&gt;&lt;/div&gt;
&lt;b style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Other important factor is patching the existing services. Since we cannot develop the code without any issue. Definitely we need to patch the code. Patching the code in microservices environment is little bit tricky because we may have more than 100 of instances to patch. So If we get the VM deployment, we need to make the new VM image by adding new patches and use it for the deployment. It is not an easy task because there can be more than 100 micro services and we need to maintain different type of VM images but with the Docker like container based deployment is not an issue. We can configure docker image to get these patched from configured place. We can achieve similar requirement by puput script in the VM environment but Docker has that capability out of the box. Therefore the total config and software update propagation time would be much faster with the container approach.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;A heavier car may need more fuel for reaching higher speeds than a car of the same spec with less weight. Sports car manufacturers always adhere to this concept and use light weight material such as aluminum and carbon fiber for improving fuel efficiency. The same theory may apply to software systems. The heavier the software components, the higher the computation power they need. Traditional virtual machines use a dedicated operating system instance for providing an isolated environment for software applications. This operating system instance needs additional memory, disk and processing power in addition to the computation power which needed by the applications. Linux containers solved this problem by reducing the weight of the isolated unit of execution by sharing the host operating system kernel with hundreds of containers. The following diagram illustrates a sample scenario of how much resources containers would save compared to virtual machines&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;img alt="RESOURCE.png" height="281" src="https://lh5.googleusercontent.com/3nXZhem-wH-RK8Fci7mm3WgKwTn60Bz5MR-JoMqtI3XB-cwbzUiQvwM3xc6sDNdFFu3HyWeCMMj1orzNl2ooTmmcjZE3fahdR5GK0lPVGU2_orPlUF0d5ShayCPSj1SLLS5yzizx" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624" /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;We cannot say Container based deployment is the best for the Micro services for every deployment it is based on the different constrained . So we need &amp;nbsp;carefully select one or both as the hybrid way based on our requirement.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Reference :- &lt;/span&gt;&lt;a href="http://microservices.io/" style="text-decoration: none;"&gt;&lt;span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;http://microservices.io&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 8pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 16px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;a href="http://blog.docker.com/" style="text-decoration: none;"&gt;http://blog.docker.com&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://lh3.googleusercontent.com/W287N5NQTrFbBA9VXRRW5qs7K4kgvHsNoJ2J4hNmX-VgfOvH8fhcxPu5TEFidEWXVBfBf34L6SoCnsQ1DM3xPmLIdAJtR7OcOKBbPYQiONtt1HsvHoTk9j0q03JDYUCqI9XF3bAx=s72-c" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author><enclosure length="856540" type="application/pdf" url="http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43438.pdf"/><itunes:explicit>no</itunes:explicit><itunes:subtitle>When it comes to Microservices architecture, the deployment of Microservices plays a critical role and has the following key requirements. Ability to deploy/un-deploy independently from other Microservices. Developers never need to coordinate the deployment of changes that are local to their service. These kinds of changes can be deployed as soon as they have been tested. The UI team can, for example, perform A|B testing and rapidly iterate on UI changes. The Microservices Architecture pattern makes continuous deployment possible. Must be able to scale at each Microservices level (a given service may get more traffic than other services). Monolithic applications are difficult to scale individual portions of the application. If one service is memory intensive and another CPU intensive, the server must be provisioned with enough memory and CPU to handle the baseline load for each service. This can get expensive if each server needs high amount of CPU and RAM, and is exacerbated if load balancing is used to scale the application horizontally. Finally, and more subtlety, the engineering team structure will often start to mirror the application architecture over time. We can overcome this by using Microservices. Any service can be individually scaled based on its resource requirements. Rather than having to run large servers with lots of CPU and RAM, Microservices can be deployed on smaller hosts containing only those resources required by that service. For example, you can deploy a CPU-intensive image processing service on EC2 Compute Optimized instances and deploy an in-memory database service on EC2 Memory-optimized instances. Building and deploying Microservices quickly. One of the key drawback of the monolithic application is the difficult to scale. As explained in above section, it needs to mirror the whole application to scale. With the micro services architecture we can scale the specific services since we are deploying services in the isolated environment. Nowadays dynamically scaling the application is very famous every iSaaS has that capability(eg:- Elastic load balancing). With that approach we need to quickly launch the application in the isolated environment. Following are the basic deployment patterns which we can commonly see in the industry. Multiple service instances per host - deploy multiple service instances on a host &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Service instance per host - deploy a single service instance on each host &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Service instance per VM - a specialization of the Service Instance per Host pattern where the host is a VM &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Service instance per Container - a specialization of the Service Instance per Host pattern where the host is a container Container or VM? As of today there is a significant trend in the industry to move towards containers from VMs for deploying software applications. The main reasons for this are the flexibility and low cost that containers provide compared to VMs. Google has used container technology for many years with Borg &amp;amp; Omega container cluster management platforms for running Google applications at scale. More importantly Google has contributed to container space by implementing cgroups and participating in libcontainer project. Google may have gained a huge gain in performance, resource utilization and overall efficiency using containers during past years. Very recently Microsoft who did not had an operating system level virtualization on Windows platform took immediate actions to implement native support for containers on Windows Server. I found nice comparison between the VMS and Containers in the internet which comparing House and the Apartments. Houses (the VMs) are fully self-contained and offer protection from unwanted guests. They also each possess their own infrastructure – plumbing, heating, electrical, etc. Furthermore, in the vast majority of cases houses are all going to have at a minimum a bedroom, living area, bathroom, and kitchen. I’ve yet to ever find a “studio house” – even if I buy the smallest house I may end up buying more than I need because that’s just how houses are built. Apartments (the containers) also offer protection from unwanted guests, but they are built around shared infrastructure. The apartment building (Docker Host) shares plumbing, heating, electrical, etc. Additionally apartments are offered in all kinds of different sizes – studio to multi-bedroom penthouse. You’re only renting exactly what you need. Finally, just like houses, apartments have front. There are design level differences between these two concepts. Containers are sharing the underlying resources while providing the isolate environment and it only provides the resources which need to run the application but VMS are different. It first start the OS and then start your application. Like or not it's providing default set of unwanted services which consume the resources. Before move into the actual comparison, lets see how we can deploy micro services instance in any environment. Environment can be single or multi host in the single VM or it can be the multiple container in the single VM, single container in the single VM or dedicated environment. It is not just starting application on the VM or deploy application in the web container. We should have automated way to manage it. As the example AWS provide nice VM management capability for any deployments. If we use VM for the deployment we are normally build the VM with required application component and using this VM we can spawn any number of different instances. Similar to AWS VM management, we need some container management platform for the container as well, because when we need scale the specific service we cannot manually monitor the environment and start new instance. It should be automated. As the example we can use Kubunertees. It is extending Docker's capabilities by allowing to manage a cluster of Linux containers as a single system, managing and running Docker containers across multiple hosts, offering co-location of containers, service discovery, and replication control. Both VM and containers are designed to provide an isolated environment. Additionally, in both cases that environment is represented as a binary artifact that can be moved between hosts. There may be other similarities but those are the major differences as i see. In a VM-centered world, the unit of abstraction is a monolithic VM that stores not only application code, but often it's stateful data. A VM takes everything that used to sit on a physical server and just packs it into a single binary so it can be moved around. &amp;nbsp;But it is still the same thing. &amp;nbsp;With containers, the abstraction is the application; or more accurately a service that helps to make up the application. When we scale up the instances this is very useful because we use VMs means we need to spawn another VM instance. It will take some times to start(OS boot time, Application boot time) but with the Docker like container deployment we can start new container instance within few milliseconds(Application boot time). Other important factor is patching the existing services. Since we cannot develop the code without any issue. Definitely we need to patch the code. Patching the code in microservices environment is little bit tricky because we may have more than 100 of instances to patch. So If we get the VM deployment, we need to make the new VM image by adding new patches and use it for the deployment. It is not an easy task because there can be more than 100 micro services and we need to maintain different type of VM images but with the Docker like container based deployment is not an issue. We can configure docker image to get these patched from configured place. We can achieve similar requirement by puput script in the VM environment but Docker has that capability out of the box. Therefore the total config and software update propagation time would be much faster with the container approach. A heavier car may need more fuel for reaching higher speeds than a car of the same spec with less weight. Sports car manufacturers always adhere to this concept and use light weight material such as aluminum and carbon fiber for improving fuel efficiency. The same theory may apply to software systems. The heavier the software components, the higher the computation power they need. Traditional virtual machines use a dedicated operating system instance for providing an isolated environment for software applications. This operating system instance needs additional memory, disk and processing power in addition to the computation power which needed by the applications. Linux containers solved this problem by reducing the weight of the isolated unit of execution by sharing the host operating system kernel with hundreds of containers. The following diagram illustrates a sample scenario of how much resources containers would save compared to virtual machines We cannot say Container based deployment is the best for the Micro services for every deployment it is based on the different constrained . So we need &amp;nbsp;carefully select one or both as the hybrid way based on our requirement. &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Reference :- http://microservices.io &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;http://blog.docker.com</itunes:subtitle><itunes:author>prabath ariyarathna</itunes:author><itunes:summary>When it comes to Microservices architecture, the deployment of Microservices plays a critical role and has the following key requirements. Ability to deploy/un-deploy independently from other Microservices. Developers never need to coordinate the deployment of changes that are local to their service. These kinds of changes can be deployed as soon as they have been tested. The UI team can, for example, perform A|B testing and rapidly iterate on UI changes. The Microservices Architecture pattern makes continuous deployment possible. Must be able to scale at each Microservices level (a given service may get more traffic than other services). Monolithic applications are difficult to scale individual portions of the application. If one service is memory intensive and another CPU intensive, the server must be provisioned with enough memory and CPU to handle the baseline load for each service. This can get expensive if each server needs high amount of CPU and RAM, and is exacerbated if load balancing is used to scale the application horizontally. Finally, and more subtlety, the engineering team structure will often start to mirror the application architecture over time. We can overcome this by using Microservices. Any service can be individually scaled based on its resource requirements. Rather than having to run large servers with lots of CPU and RAM, Microservices can be deployed on smaller hosts containing only those resources required by that service. For example, you can deploy a CPU-intensive image processing service on EC2 Compute Optimized instances and deploy an in-memory database service on EC2 Memory-optimized instances. Building and deploying Microservices quickly. One of the key drawback of the monolithic application is the difficult to scale. As explained in above section, it needs to mirror the whole application to scale. With the micro services architecture we can scale the specific services since we are deploying services in the isolated environment. Nowadays dynamically scaling the application is very famous every iSaaS has that capability(eg:- Elastic load balancing). With that approach we need to quickly launch the application in the isolated environment. Following are the basic deployment patterns which we can commonly see in the industry. Multiple service instances per host - deploy multiple service instances on a host &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Service instance per host - deploy a single service instance on each host &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Service instance per VM - a specialization of the Service Instance per Host pattern where the host is a VM &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Service instance per Container - a specialization of the Service Instance per Host pattern where the host is a container Container or VM? As of today there is a significant trend in the industry to move towards containers from VMs for deploying software applications. The main reasons for this are the flexibility and low cost that containers provide compared to VMs. Google has used container technology for many years with Borg &amp;amp; Omega container cluster management platforms for running Google applications at scale. More importantly Google has contributed to container space by implementing cgroups and participating in libcontainer project. Google may have gained a huge gain in performance, resource utilization and overall efficiency using containers during past years. Very recently Microsoft who did not had an operating system level virtualization on Windows platform took immediate actions to implement native support for containers on Windows Server. I found nice comparison between the VMS and Containers in the internet which comparing House and the Apartments. Houses (the VMs) are fully self-contained and offer protection from unwanted guests. They also each possess their own infrastructure – plumbing, heating, electrical, etc. Furthermore, in the vast majority of cases houses are all going to have at a minimum a bedroom, living area, bathroom, and kitchen. I’ve yet to ever find a “studio house” – even if I buy the smallest house I may end up buying more than I need because that’s just how houses are built. Apartments (the containers) also offer protection from unwanted guests, but they are built around shared infrastructure. The apartment building (Docker Host) shares plumbing, heating, electrical, etc. Additionally apartments are offered in all kinds of different sizes – studio to multi-bedroom penthouse. You’re only renting exactly what you need. Finally, just like houses, apartments have front. There are design level differences between these two concepts. Containers are sharing the underlying resources while providing the isolate environment and it only provides the resources which need to run the application but VMS are different. It first start the OS and then start your application. Like or not it's providing default set of unwanted services which consume the resources. Before move into the actual comparison, lets see how we can deploy micro services instance in any environment. Environment can be single or multi host in the single VM or it can be the multiple container in the single VM, single container in the single VM or dedicated environment. It is not just starting application on the VM or deploy application in the web container. We should have automated way to manage it. As the example AWS provide nice VM management capability for any deployments. If we use VM for the deployment we are normally build the VM with required application component and using this VM we can spawn any number of different instances. Similar to AWS VM management, we need some container management platform for the container as well, because when we need scale the specific service we cannot manually monitor the environment and start new instance. It should be automated. As the example we can use Kubunertees. It is extending Docker's capabilities by allowing to manage a cluster of Linux containers as a single system, managing and running Docker containers across multiple hosts, offering co-location of containers, service discovery, and replication control. Both VM and containers are designed to provide an isolated environment. Additionally, in both cases that environment is represented as a binary artifact that can be moved between hosts. There may be other similarities but those are the major differences as i see. In a VM-centered world, the unit of abstraction is a monolithic VM that stores not only application code, but often it's stateful data. A VM takes everything that used to sit on a physical server and just packs it into a single binary so it can be moved around. &amp;nbsp;But it is still the same thing. &amp;nbsp;With containers, the abstraction is the application; or more accurately a service that helps to make up the application. When we scale up the instances this is very useful because we use VMs means we need to spawn another VM instance. It will take some times to start(OS boot time, Application boot time) but with the Docker like container deployment we can start new container instance within few milliseconds(Application boot time). Other important factor is patching the existing services. Since we cannot develop the code without any issue. Definitely we need to patch the code. Patching the code in microservices environment is little bit tricky because we may have more than 100 of instances to patch. So If we get the VM deployment, we need to make the new VM image by adding new patches and use it for the deployment. It is not an easy task because there can be more than 100 micro services and we need to maintain different type of VM images but with the Docker like container based deployment is not an issue. We can configure docker image to get these patched from configured place. We can achieve similar requirement by puput script in the VM environment but Docker has that capability out of the box. Therefore the total config and software update propagation time would be much faster with the container approach. A heavier car may need more fuel for reaching higher speeds than a car of the same spec with less weight. Sports car manufacturers always adhere to this concept and use light weight material such as aluminum and carbon fiber for improving fuel efficiency. The same theory may apply to software systems. The heavier the software components, the higher the computation power they need. Traditional virtual machines use a dedicated operating system instance for providing an isolated environment for software applications. This operating system instance needs additional memory, disk and processing power in addition to the computation power which needed by the applications. Linux containers solved this problem by reducing the weight of the isolated unit of execution by sharing the host operating system kernel with hundreds of containers. The following diagram illustrates a sample scenario of how much resources containers would save compared to virtual machines We cannot say Container based deployment is the best for the Micro services for every deployment it is based on the different constrained . So we need &amp;nbsp;carefully select one or both as the hybrid way based on our requirement. &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Reference :- http://microservices.io &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;http://blog.docker.com</itunes:summary><itunes:keywords>open,source</itunes:keywords></item><item><title>How Disruptor can use for improve the Performance of the interdependen Filters/Handlers?</title><link>http://prabu-lk.blogspot.com/2017/01/how-disruptor-can-use-for-improve.html</link><category>Disruptor</category><category>Filter</category><category>Handlers</category><category>Performance Improvement</category><pubDate>Wed, 18 Jan 2017 10:13:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-5138271643557823709</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;In the typical filter or handler pattern &amp;nbsp;we have set of data and filters/handlers. We are filtering the available data set using available filters. &lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;These filters may have some dependencies(In business case this could be the sequence dependency or data dependency) like filter 2 depends on filter 1 and some filters does not have dependency with others. With the existing approach, some time consuming filters are designed to use several threads to process the received records parallely to improve the performance.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b id="docs-internal-guid-d4ec7e66-afe1-75cc-74f0-389680812951" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;img alt="existing.png" height="282" src="https://lh5.googleusercontent.com/Tgo5uwG1V_NwVUuO8bcpDSu-9Wt9TA6NZ9bm58SrpJYFVw8OBHeTBUe_mIQ7FaGePJ1MkstMZ7pU76D6r6nkCvpYCSs2Oy8w23nBvng-fvDqHuOUgEhie-oxMiOHSwiQ5fiKLlfV" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="588" /&gt;&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;However we are executing each filter one after another. &amp;nbsp;Even Though we are using multiple threads for high time consuming filters, we need to wait until all the record finish to execute the next filter. Sometimes we need to populate some data from database for filters but with the existing architecture we need to wait until the relevant filter is executed.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;We can improve this by using non blocking approach as much as possible. Following diagram shows the proposed architecture.&lt;/span&gt;&lt;/div&gt;
&lt;b style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;img alt="distruptor (1).png" height="323" src="https://lh5.googleusercontent.com/9ADEfwH0YNJa_3e57ZAbyHvTML_VbUpjNPhQhC3n-QV4CjCPqLGWDNqN0sZQUgoUc8_VXwDRFitIq9NpdmanTz0XnEkSMPXZY-gtKWpbXFVkLQoOGyd6Q6FbN-lhcQ6wI9j2vWHo" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624" /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;According to the diagram, we are publishing routes to the Disruptor(Disruptor is simple ring buffer but it has so many performance improvement like cache padding) and we have multiple handler which are running on different threads. Each handler are belong to different filters. We can add more handlers to the same filter based on the requirement. Major advantage &amp;nbsp;is, we can process simultaneously across the all routes. Cases like dependency between the handlers could handle in the implementation level. With this approach, we don't need to wait until all the routes are filtered by the single routes. Other advantage is, we can add separate handlers for populate data for future use.&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: &amp;quot;arial&amp;quot;; font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"&gt;Disruptors are normally consuming more resources and it is depended on the waiting strategies which we can use for the handlers. So we need to decide on what kind &amp;nbsp;of Disruptor configuration patterns we can use for the application. It can be single disruptor, single disruptor for the user, multiple disruptor based on the configuration or we can configure some Disruption for selected filters(Handlers) and different one for other handlers.&lt;/span&gt;&lt;span style="font-family: &amp;quot;arial&amp;quot;; font-size: 14.6667px; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://lh5.googleusercontent.com/Tgo5uwG1V_NwVUuO8bcpDSu-9Wt9TA6NZ9bm58SrpJYFVw8OBHeTBUe_mIQ7FaGePJ1MkstMZ7pU76D6r6nkCvpYCSs2Oy8w23nBvng-fvDqHuOUgEhie-oxMiOHSwiQ5fiKLlfV=s72-c" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>Application Monitoring</title><link>http://prabu-lk.blogspot.com/2016/11/application-monitoring.html</link><category>JMX</category><category>MBeans</category><category>Monitoring</category><pubDate>Mon, 21 Nov 2016 20:01:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-5840832178897782725</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;span id="docs-internal-guid-b2a3fb66-874a-394c-ad0b-a673222f0f5e"&gt;&lt;span style="font-family: Arial; font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"&gt;In the software world, application monitoring is critical for the administrators as well as for the maintenance(Application support) teams. Obviously monitoring is very useful for the administrators. They need to monitor the realtime behavior of the application to give uninterrupted service to the end users, but monitoring is even important to the support teams to track down the issues of the applications. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span&gt;&lt;span style="font-family: Arial; font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvN3ClAV6pwkarKPo4ab4AZFiKtzOYZ4n_pZO0QgH81Q-33lEtyYiCgjUu1l6FZ-DhxDGWhrL0y-c3r-BVNmGRv711cT2owMPWoReRhSvI9TGMRY7EdiFmkLLd09kxAYZSpCSFpZLr9Ods/s1600/3-seo-optimization-set.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="275" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvN3ClAV6pwkarKPo4ab4AZFiKtzOYZ4n_pZO0QgH81Q-33lEtyYiCgjUu1l6FZ-DhxDGWhrL0y-c3r-BVNmGRv711cT2owMPWoReRhSvI9TGMRY7EdiFmkLLd09kxAYZSpCSFpZLr9Ods/s400/3-seo-optimization-set.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Doing support is the most important phase of the software development life cycle after delivering the product. End Users reported &amp;nbsp;different kind of issues and support engineers need some informations which are related to the application behaviour to solve the issues. Some issues are domain related and we can simply recreate the issues in our local environment. Fixing the issue is not a big deal if we could reproduce the same behavior in our local setup but some issues are not easy to replicate in the local environment because those aren’t continuously happening in the production setup. So Identifying the exact root cause is the challenge. Concurrency issues, Thread spinning issue and memory issues are in the top of the order. Software developer should have proper plan to report the status of the application with required details when application has some issues. Putting log messages with the proper details and proper place are the most important but same cases like high CPU usage, developer need some more information like thread dump to track the issue. Support engineers or developers may be identified the issue by looking at the logs, thread dump or heap dumps, but application specific information need for some cases. Proper monitoring mechanism can fulfil that requirement. There are different type of &amp;nbsp;monitoring application available in the industry for different purposes but all these applications are developed as the general purpose applications. Application developer need to implement application specific monitoring mechanism for achieving that requirement.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;span id="docs-internal-guid-b2a3fb66-874b-0e0e-1f02-ad58ca716cae"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;b&gt;Note:-&lt;/b&gt;&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;span style="background-color: white; color: #222222; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Proper Monitoring mechanism can be get as the marketing factor because client can incorporate JMX APis with their existing monitoring dashboards seamlessly or we can provide our own monitoring dashboard to the customers.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: #222222; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span id="docs-internal-guid-b2a3fb66-874b-6014-68f5-0b57ddc6a0c2"&gt;&lt;h3 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;"&gt;
&lt;span style="color: #434343; font-family: Arial; font-size: 18.6667px; vertical-align: baseline; white-space: pre-wrap;"&gt;JMX(Java management extension)&lt;/span&gt;&lt;/h3&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/span&gt;&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: #222222; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;The JMX technology provides the tools for building distributed, Web-based, modular and dynamic solutions for managing and monitoring devices, applications, and service-driven network. Starting with the J2SE platform 5.0, JMX technology is included in the Java SE platform. JMX is the recommended way to monitor and manage java applications. As an example, administrator can stop or start the application or dynamically can change the configurations. Monitoring and management are the basic usage of the JMX. JMX can be used for design the full modularize applications which can enable and disable the modules at any time via the JMX, but main intention of this article is for discussing management and monitoring capabilities of the JMX.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: #222222; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: #222222; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;span style="background-color: transparent; color: #434343; font-size: 18.6667px; font-weight: 700;"&gt;JMX architecture.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: #222222; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1elvZLvnxCsGTdwm_6Cgfyx6_xHnuxNkosoe9hq9CPTYGQEYnnuU_ctp46TIDATCSnY-0ITX0aZQz2EPHDkFlDc__xuTty6l0cq1nPLRnf9CitGfb2yBrUhDv7Nvci0CFL-hUL4K42tUs/s1600/diagram1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1elvZLvnxCsGTdwm_6Cgfyx6_xHnuxNkosoe9hq9CPTYGQEYnnuU_ctp46TIDATCSnY-0ITX0aZQz2EPHDkFlDc__xuTty6l0cq1nPLRnf9CitGfb2yBrUhDv7Nvci0CFL-hUL4K42tUs/s400/diagram1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Three main layers can be identified in the JMX architecture.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ol style="margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;li dir="ltr" style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"&gt;&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Prob Level&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;The level closed to the application is called the instrumentation layer or prob layer. This level consists of four approaches for instrumenting application and system resources to be manageable (i.e., making them &lt;/span&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: italic; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;managed beans&lt;/span&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;, or &lt;/span&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: italic; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;MBeans&lt;/span&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;), as well as a model for sending and receiving notifications. This level is the most important level for the developers because this level prepares resources to be manageable. We can identify main two categories when we consider about the &amp;nbsp;instrumentation level.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul style="margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;li dir="ltr" style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: disc; margin-left: 48px; text-decoration: none; vertical-align: baseline;"&gt;&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Application resources( Eg:- Connection pool, Thread pool, .. etc)&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 72pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;An application resources that need to be manageable through the JMX must provide the metadata about a resource’s features are known as its &lt;/span&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: italic; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;management interface. &lt;/span&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Management applications may interact with the resources via management interface.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul style="margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;li dir="ltr" style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: disc; margin-left: 48px; text-decoration: none; vertical-align: baseline;"&gt;&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Instrumentation strategy.&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 72pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;There are four instrumentation approaches defined by JMX that we can use to describe the management interface of a resource: standard, dynamic, model, and open&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2. &amp;nbsp;Agent Level&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;The agent level of the JMX architecture is made up of the MBean server and the JMX agent services. The MBean server has two purposes: it serves as a registry of MBeans and as a communications broker between MBeans and management applications (and other JMX agents). The JMX agent services provide additional functionality that is mandated by the JMX specification, such as scheduling and dynamic loading.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3. &amp;nbsp;Remote management Level&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;span id="docs-internal-guid-b2a3fb66-874c-27e8-4711-5ca8d4a81dcb"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Top level of the JMX architecture is called the &lt;/span&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: italic; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;distributed services level&lt;/span&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;. This level contains the middleware that connects JMX agents to applications that manage them (&lt;/span&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: italic; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;management applications&lt;/span&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;). This middleware is broken into two categories: protocol adaptors and connectors.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: #222222; font-family: Arial; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;/div&gt;
&lt;span&gt;&lt;span style="font-family: Arial; font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvN3ClAV6pwkarKPo4ab4AZFiKtzOYZ4n_pZO0QgH81Q-33lEtyYiCgjUu1l6FZ-DhxDGWhrL0y-c3r-BVNmGRv711cT2owMPWoReRhSvI9TGMRY7EdiFmkLLd09kxAYZSpCSFpZLr9Ods/s72-c/3-seo-optimization-set.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>Point A to Point B by Air</title><link>http://prabu-lk.blogspot.com/2016/11/point-to-point-b-by-air.html</link><category>Air cargo</category><category>cargo</category><pubDate>Wed, 2 Nov 2016 23:03:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-6969251976438602098</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;span style="font-family: &amp;quot;arial&amp;quot;; font-size: xx-medium;"&gt;&lt;span style="font-family: inherit; white-space: pre-wrap;"&gt;As a company or individually, you may need to deliver your goods from one place to another place. The most important thing is selecting the suited shipment mode for your logistics. Following are the major modes of shipments.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="font-family: &amp;quot;arial&amp;quot;;"&gt;&lt;span style="white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHSuy-GctVO22TE7-EGF0e8Hf5g3RU66m_rESwQUIYR_vuydZAqbQtzgNziAhHza_lWL5PNufLhjmXUW3DotKvHPNFEZPeETK2ZUN8nqm6hkMWaZQpcyIroOLev097xcQynEnwxEEGxPhyphenhyphen/s1600/cargo1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHSuy-GctVO22TE7-EGF0e8Hf5g3RU66m_rESwQUIYR_vuydZAqbQtzgNziAhHza_lWL5PNufLhjmXUW3DotKvHPNFEZPeETK2ZUN8nqm6hkMWaZQpcyIroOLev097xcQynEnwxEEGxPhyphenhyphen/s320/cargo1.png" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="font-family: &amp;quot;arial&amp;quot;;"&gt;&lt;span style="white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: &amp;quot;arial&amp;quot;;"&gt;&lt;span style="white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;1. Ground&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div style="display: inline !important;"&gt;
&lt;span style="font-family: inherit;"&gt;Land or "ground" shipping can be done by train or truck.In order to take air and sea shipments, &amp;nbsp; ground transportion is required to take the cargo from its place of origin to the airport or seaport .it is not always possible to establish a production facility near ports due to limited coastlines of countries.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;2. Air&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;Cargo is transported by air in specialized cargo aircraft or in the luggage compartments of &amp;nbsp; &amp;nbsp; passenger aircraft&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;3. Ship&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;Shipping is done by commercial ships. Merchant shipping is the lifeblood of the world economy, &amp;nbsp; carrying 90% of international trade with 102,194 commercial ships worldwide&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;4. Intermodal&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;Intermodal freight transport refers to shipments that involve more than one mode.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;Each of these modes have different pros and cons. We need to select best suited mode based on our requirement, because shipping cost can be directly affected to the business.However I will only discuss about the Air transport mode in this post.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; If we consider in the cost wise definitely Air transport mode is not cost effective but it has some advantage which most of the modern business need. I have listed below few of those.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;1. The fastest shipping method&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;When your goods need to be moved quickly, air freight is the best solution compared to sea freight &amp;nbsp; or ground transport.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;2. Highly reliable arrival and departure times&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;The arrival and departure times of flights are highly reliable, as airlines tend to be very on top of &amp;nbsp; &amp;nbsp; their schedules. Even missing a flight wouldn’t cause much delay as there are usually flights departing every hour.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;3. Send your cargo almost anywhere&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;Many airlines have a large network of destinations that cover almost the entire world. This means &amp;nbsp; that you can send the shipment to nearly every destination.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;4. Low insurance premium means large savings&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;As the transportation time for air cargo is comparatively short, the insurance premium is much &amp;nbsp; lower. Even if air freight can be expensive, this brings about savings in terms of lower insurance costs.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;5. High level of security and reduced risk of theft and damage&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;As the transportation time for air cargo is comparatively short, the insurance premium is much &amp;nbsp; lower. Even if air freight can be expensive, this brings about savings in terms of lower insurance costs.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;6. Less need of warehousing and fewer items in stock&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;With the quicker transit times of air freight, local warehouse requirement is much lesser &amp;nbsp;because stock &amp;nbsp;aren't needed to keep for longer. Customs clearance, cargo inspection and cargo handlers are more efficient, as most of cargos are cleared within a matter of hours.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;7. Less packaging required&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;Normally, air shipments require less heavy packing than for ocean shipments. So it saves both time &amp;nbsp; and money to spend for additional packing.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;8. Follow the status of cargo&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: &amp;quot;arial&amp;quot;;"&gt;&lt;span style="font-family: inherit; white-space: pre-wrap;"&gt;Many companies offer the opportunity to track cargo using web applications, which means arrival   and departure of cargos can be closely monitored by staying at any where in the world.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="font-family: &amp;quot;arial&amp;quot;;"&gt;&lt;span style="white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: &amp;quot;arial&amp;quot;;"&gt;&lt;span style="white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: &amp;quot;arial&amp;quot;;"&gt;&lt;span style="white-space: pre-wrap;"&gt;Let’s think some company or individual selected Air cargo as the transportation mode for shipments, there are several parties who involved within the process. Airways are the major party who own the carriers. We can find three major type of carriers in the Air cargo arena.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="font-family: &amp;quot;arial&amp;quot;;"&gt;&lt;span style="white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Passenger aircraft&lt;/b&gt; use &amp;nbsp;spare volume in the airplane's baggage hold (the "belly") that is not being used for passenger luggage - a common practice used by passenger airlines, who additionally transport cargo on scheduled passenger flights. - this practice is known as Belly Cargo. Cargo can also be transported in the passenger cabin as hand-carry by an “on-board courier”.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Cargo aircraft&lt;/b&gt; are dedicated for the job - they carry freight on the main deck and in the belly by means of nose-loading or side loading.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Combi&lt;/b&gt; aircraft carries cargo on the main deck behind the passengers’ area with side loading and in the belly.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;Passenger aircrafts are the famous transport medium for the Air cargo because we cannot find Cargo aircrafts commonly for the each and every destinations. However main business of the Passenger airways is not the cargo handling because their main focus is the passenger handling. So Cargo is considered as the secondary business. One of the main reason for this is, marketing is easier with &amp;nbsp;passenger transportation. As examples, marketing on the passenger seats can be done based on the facilities like business class , economy class , free wifi and meals but this cannot be done for cargo.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Passenger Airlines are not putting their full effort on the cargo business since this is secondary business for them. Hence most of the services are outsourced to the several parties.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;Following diagram explains few of them briefly.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjK8elH1V8sQ9wEnJm_bbdh9GE16WHroL8kc4ZigfDwXLdeCpvF-3iu-hdu35ZoxpU4y62JL5LpW_hNuDlBLhK5BI6DBhHo233yMVOfbBDNy9ls0IsNGW_ffH6JfEapoFhK7tHzAFJQc35/s1600/Aircargo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;img border="0" height="297" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjK8elH1V8sQ9wEnJm_bbdh9GE16WHroL8kc4ZigfDwXLdeCpvF-3iu-hdu35ZoxpU4y62JL5LpW_hNuDlBLhK5BI6DBhHo233yMVOfbBDNy9ls0IsNGW_ffH6JfEapoFhK7tHzAFJQc35/s640/Aircargo.png" width="640" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;span style="font-family: inherit;"&gt;According to the above diagram you can see merchants are not directly dealing with the Airways. There are two main parties in between merchant and the airway. Each and every party has separate responsibilities.&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;Merchants.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;span style="font-family: inherit;"&gt;Merchants are the clients in the cargo industry. As an example we can get the Seagate(Hard disk manufacturer) and 3M(provides cutting edge health and safety products). They are producing products in their Singapore factories and need to ship products to different destinations(eg:- Sri lanka) based on the requirements via Air cargo. As I explained earlier since this is secondary business for the Airways, they are not putting enough staff members for this service. So most of the required things such as documentation is done by third parties. So merchants are directly dealing with the logistic providers(Forwarders) for these purposes.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;Forwarders.(3PL)&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;span style="font-family: inherit;"&gt;Normally 3PLs work in this scenario is deliver the goods to the required destinations but other than that they are providing various of services in the logistic context like warehousing, local distributing.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;span style="font-family: inherit;"&gt;Most of the largest 3PLs are multinational companies and they are based in many countries, if not they have some partner 3PLs. Common practice is Merchant send the request to the 3PL for sending their goods to the single or multiple destinations. &amp;nbsp;Most of the large scale merchants are using multiple 3PLs for delivering their goods. Most of the time 3PLs are responsible for preparing the required documents for the goods, because most of the times different parties need different documents to proceed freight. Other than this, they are doing re packaging if required. Next step is handover the goods to the ground handling agents.&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;span style="font-family: inherit;"&gt;According to the diagram, Forwarders are playing two different roles in two(Origin and destination) sides. In destination side their responsibility is delivering the goods to the consumers . Consumers could be the company or shopping mall or individual&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;Ground handling agents&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;span style="font-family: inherit;"&gt;First Of All let see why we need ground handling agents.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;span style="font-family: inherit;"&gt;Passenger airlines has several destinations(Singapore Airlines has 63 international destinations) So maintaining different cargo office in each and every destination is not a possible task. Since this is common issue for the each and every Airways, every airport has ground handling agents. Most of the time those are owned by the national carrier of the country. So their responsibility is handling cargo behalf of the Airways. SATS is the main ground handling agent in the Changi airport and it is owned by Singapore airline. It is providing cargo handling to the Singapore airline as well as the other airlines. There can be multiple ground handling agent in big airports.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHSuy-GctVO22TE7-EGF0e8Hf5g3RU66m_rESwQUIYR_vuydZAqbQtzgNziAhHza_lWL5PNufLhjmXUW3DotKvHPNFEZPeETK2ZUN8nqm6hkMWaZQpcyIroOLev097xcQynEnwxEEGxPhyphenhyphen/s72-c/cargo1.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>How to monitor the Thread CPU usage in the WSO2 Products?</title><link>http://prabu-lk.blogspot.com/2016/05/how-to-monitor-thread-cpu-usage-in-wso2.html</link><category>APIM</category><category>CPU Usage</category><category>ESB</category><category>Monitoring</category><category>Thread</category><category>Wso2 Products</category><pubDate>Fri, 20 May 2016 08:09:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-1633367110699451303</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
1. Download JConsole &lt;a class="" href="https://bitbucket.org/pjtr/topthreads/downloads/topthreads-1.1.jar"&gt;topthreads&lt;/a&gt; Plugin.&lt;br /&gt;
&lt;br /&gt;
2. Add following entries to the PRODUCT_HOME/bin/wso2server.sh&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;b&gt;-Dcom.sun.management.jmxremote \&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; -Dcom.sun.management.jmxremote.port=PORT \&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; -Dcom.sun.management.jmxremote.ssl=false \&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; -Dcom.sun.management.jmxremote.authenticate=false \&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; -Djava.rmi.server.hostname=IP_ADDRESS \&lt;/b&gt;&lt;br /&gt;
Define your &lt;b&gt;IP_ADDRESS&lt;/b&gt; address and &lt;b&gt;PORT&lt;/b&gt; (port should be not used anywhere in that instance)&lt;br /&gt;
&lt;br /&gt;
3. Run the JConsole using following command.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;b&gt;jconsole -pluginpath PATH_TO_JAR/topthreads-1.1.jar&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
4. Copy "JMXServerManager JMX Service URL" from the wso2carbon logs after restart the Wso2 Server (Eg:- service:jmx:rmi://localhost:11111/jndi/rmi://localhost:9999/jmxrmi) to the Remote process with the username and password.&lt;br /&gt;
&lt;br /&gt;
5. Under &lt;b&gt;Top Threads&lt;/b&gt; tab you can monitor the thread CPU usage.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEial3ha9WHd9TDYBEqRKzDjqJRHw2K5IB9Bvj5DzXoHtzIhh3Z8OBjTZUQqIZKz3CyFU5OOZ5_B2JG3ej1i0-s0tOHQQiV5ik3SgPFlksIWb7Nmh-wZZ6B_-JDwbdt2C65ezLwfJmm3er0v/s1600/thread.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="312" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEial3ha9WHd9TDYBEqRKzDjqJRHw2K5IB9Bvj5DzXoHtzIhh3Z8OBjTZUQqIZKz3CyFU5OOZ5_B2JG3ej1i0-s0tOHQQiV5ik3SgPFlksIWb7Nmh-wZZ6B_-JDwbdt2C65ezLwfJmm3er0v/s400/thread.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEial3ha9WHd9TDYBEqRKzDjqJRHw2K5IB9Bvj5DzXoHtzIhh3Z8OBjTZUQqIZKz3CyFU5OOZ5_B2JG3ej1i0-s0tOHQQiV5ik3SgPFlksIWb7Nmh-wZZ6B_-JDwbdt2C65ezLwfJmm3er0v/s72-c/thread.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>Enable SecureVault Support for jndi.properties - WSO2 ESB - MB 3.0</title><link>http://prabu-lk.blogspot.com/2016/04/enable-securevault-support-for.html</link><category>Enable SecureVault</category><category>WSO2 ESB</category><category>WSO2 MB</category><pubDate>Tue, 5 Apr 2016 22:35:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-3715484916441013885</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;span style="background-color: white; color: #222222; font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 12.8px;"&gt;We cannot use cipertool to automate encryption process for the selected elements in the &lt;b&gt;jndi.properties&lt;/b&gt; file, because we can only specify Xpath notation here, but still we can use the manual process.&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: #222222; font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 12.8px;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: #222222; font-family: &amp;quot;arial&amp;quot; , sans-serif;"&gt;&lt;span style="background-color: white; font-size: 12.8px;"&gt;Sample&amp;nbsp;&lt;b&gt;&lt;span style="background-color: #fefdfd; color: #4a4a4a; font-family: &amp;quot;arial&amp;quot; , &amp;quot;tahoma&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;freesans&amp;quot; , sans-serif; font-size: 13px; line-height: 18.2px;"&gt;[ESB_home]/repository/conf/&lt;/span&gt;&lt;span style="font-size: 12.8px;"&gt;jndi.properties&lt;/span&gt;&lt;/b&gt;&amp;nbsp;file&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background: rgb(255, 255, 255);"&gt;&lt;span style="color: #222222; font-family: &amp;quot;arial&amp;quot; , sans-serif;"&gt;&lt;span style="font-size: 12.8px;"&gt;&lt;pre style="background: #f1f0f0; color: black;"&gt;# register some connection factories
# connectionfactory.[jndiname] = [ConnectionURL]
connectionfactory.QueueConnectionFactory = amqp://admin:admin@clientID/carbon?brokerlist
='tcp://localhost:5672'

# register some queues in JNDI using the form
# queue.[jndiName] = [physicalName]
queue.MyQueue = example.MyQueue

# register some topics in JNDI using the form
# topic.[jndiName] = [physicalName]
topic.MyTopic = example.MyTopic&lt;/pre&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;span style="color: #222222; font-family: &amp;quot;arial&amp;quot; , sans-serif;"&gt;&lt;span style="background-color: white; font-size: 12.8px;"&gt;&lt;b&gt;1. &lt;/b&gt;Enable secure valut in the ESB&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #222222; font-family: &amp;quot;arial&amp;quot; , sans-serif;"&gt;&lt;span style="background-color: white; font-size: 12.8px;"&gt;&lt;span style="color: #333333; font-family: monospace; font-size: 14px; line-height: 20px;"&gt;sh ciphertool.sh -Dconfigure&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="background-color: white; color: #222222; font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 12.8px;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: #222222; font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 12.8px;"&gt;&lt;b&gt;2.&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white; color: #333333; font-family: &amp;quot;helvetica neue light&amp;quot; , , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 14px; line-height: 19px;"&gt;Go to the &lt;b&gt;[ESB_home]/bin&lt;/b&gt; and execute the following command to generate the&amp;nbsp;encrypted value for the&amp;nbsp;clear&amp;nbsp;text&amp;nbsp;&amp;nbsp;password.&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-size: 14px; line-height: 19px;"&gt;&lt;pre style="background: #f1f0f0; color: black;"&gt;sh ciphertool.sh&lt;/pre&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;span style="background-color: white; color: #333333; font-family: &amp;quot;helvetica neue light&amp;quot; , , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 14px; line-height: 19px;"&gt;&lt;b&gt;3.&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: #fefdfd; color: #333333; font-family: &amp;quot;helvetica neue light&amp;quot; , , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 13px; line-height: 18.2px;"&gt;&lt;span style="background-color: white;"&gt;&lt;span style="font-size: 14px; line-height: 19px;"&gt;It will prompt following &amp;nbsp;console for input value. &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #fefdfd; color: #4a4a4a; font-family: &amp;quot;arial&amp;quot; , &amp;quot;tahoma&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;freesans&amp;quot; , sans-serif; font-size: 13px; line-height: 18.2px;"&gt;Answer: wso2carbon&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="color: #4a4a4a; font-family: &amp;quot;arial&amp;quot; , &amp;quot;tahoma&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;freesans&amp;quot; , sans-serif;"&gt;&lt;span style="font-size: 13px; line-height: 18.2px;"&gt;&lt;pre style="background: #f1f0f0; color: black;"&gt;[Please Enter Primary KeyStore Password of Carbon Server : ]&lt;/pre&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;span style="background-color: #fefdfd; color: #4a4a4a; font-family: &amp;quot;arial&amp;quot; , &amp;quot;tahoma&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;freesans&amp;quot; , sans-serif; font-size: 13px; line-height: 18.2px;"&gt;&lt;b&gt;4.&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: #fefdfd; color: #4a4a4a; font-family: &amp;quot;arial&amp;quot; , &amp;quot;tahoma&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;freesans&amp;quot; , sans-serif; font-size: 13px; line-height: 18.2px;"&gt;Then it will appear second console for &amp;nbsp;following input value.&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #fefdfd; color: #4a4a4a; font-family: &amp;quot;arial&amp;quot; , &amp;quot;tahoma&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;freesans&amp;quot; , sans-serif; font-size: 13px; line-height: 18.2px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;(Answer: According to our property file, the plain text is "&lt;b&gt;amqp://admin:admin@clientID/carbon?brokerlist='tcp://localhost:5672'&lt;/b&gt;".)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #4a4a4a; font-family: &amp;quot;arial&amp;quot; , &amp;quot;tahoma&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;freesans&amp;quot; , sans-serif;"&gt;&lt;span style="font-size: 13px; line-height: 18.2px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="color: #4a4a4a; font-family: &amp;quot;arial&amp;quot; , &amp;quot;tahoma&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;freesans&amp;quot; , sans-serif;"&gt;&lt;span style="font-size: 13px; line-height: 18.2px;"&gt;&lt;b&gt;Encryption is done Successfully&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: rgb(241, 240, 240);"&gt;&lt;span style="color: #4a4a4a; font-family: &amp;quot;arial&amp;quot; , &amp;quot;tahoma&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;freesans&amp;quot; , sans-serif;"&gt;&lt;span style="line-height: 18.2px;"&gt;&lt;pre style="background: #f1f0f0; color: black;"&gt;&lt;b&gt;Encrypted value is :&lt;/b&gt;cpw74SGeBNgAVpryqj5/xshSyW5BDW9d1UW0xMZDxVeoa6xS6CFtU
+ESoR9jRjyA1JRHutZ4SfzfSgSzy2GQJ/2jQIw70IeT5EQEAR8XLGaqlsE5IlNoe9dhyLiPXEPRGq4k/BgU
QDYiBg0nU7wRsR8YXrvf+ak8ulX2yGv0Sf8=&lt;/pre&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;span style="color: #4a4a4a; font-family: &amp;quot;arial&amp;quot; , &amp;quot;tahoma&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;freesans&amp;quot; , sans-serif;"&gt;&lt;span style="font-size: 13px; line-height: 18.2px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;5.&lt;/b&gt;&amp;nbsp;&lt;span style="background-color: #fefdfd; color: #4a4a4a; font-family: &amp;quot;arial&amp;quot; , &amp;quot;tahoma&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;freesans&amp;quot; , sans-serif; font-size: 13px; line-height: 18.2px;"&gt;Open the&amp;nbsp;cipher-text.properties file, which is under &lt;b&gt;[ESB_home]/repository/conf/security&lt;/b&gt; and add the following entry.&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background: rgb(255, 255, 255);"&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial;"&gt;&lt;span style="color: #4a4a4a; font-family: &amp;quot;arial&amp;quot; , &amp;quot;tahoma&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;freesans&amp;quot; , sans-serif;"&gt;&lt;span style="line-height: 18.2px;"&gt;&lt;pre style="background: #f1f0f0; color: black;"&gt;&lt;b&gt;connectionfactory.QueueConnectionFactory&lt;/b&gt;=cpw74SGeBNgAVpryqj5/xshSyW5BDW9d1UW0xMZ
DxVeoa6RjyA1JRHutZ4SfzfSgSzy2GQJ/2jQIw70IeT5EQEAR8XLGaqlsE5IlNoe9dhyLiPXEPRGq4k/BgUQD
YiBg0nU7wRsR8YXrvf+ak8ulX2yGv0Sf8=&lt;/pre&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;span style="background-color: #fefdfd; color: #4a4a4a; font-family: &amp;quot;arial&amp;quot; , &amp;quot;tahoma&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;freesans&amp;quot; , sans-serif; font-size: 13px; line-height: 18.2px;"&gt;&lt;span style="font-family: &amp;quot;arial&amp;quot; , &amp;quot;tahoma&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;freesans&amp;quot; , sans-serif;"&gt;&lt;b&gt;6.&lt;/b&gt; Open the&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #fefdfd; color: #4a4a4a; font-family: &amp;quot;arial&amp;quot; , &amp;quot;tahoma&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;freesans&amp;quot; , sans-serif; font-size: 13px; line-height: 18.2px;"&gt;[ESB_home]/repository/conf/&lt;/span&gt;&lt;span style="background-color: white; color: #222222; font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 12.8px;"&gt;jndi.properties&lt;/span&gt;&lt;span style="color: #4a4a4a; font-family: &amp;quot;arial&amp;quot; , &amp;quot;tahoma&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;freesans&amp;quot; , sans-serif;"&gt;&lt;span style="font-size: 13px; line-height: 18.2px;"&gt;&amp;nbsp;file and update the key/value of&amp;nbsp;connectionfactory&amp;nbsp;field.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background: #f1f0f0; color: black;"&gt;&lt;span style="color: #4a4a4a; font-family: &amp;quot;arial&amp;quot; , &amp;quot;tahoma&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;freesans&amp;quot; , sans-serif;"&gt;&lt;span style="font-size: 13px; line-height: 18.2px;"&gt;&lt;b&gt;connectionfactory.QueueConnectionFactory&lt;/b&gt;=secretAlias:connectionfactory.QueueConnectionFactory&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;span style="color: #4a4a4a; font-family: &amp;quot;arial&amp;quot; , &amp;quot;tahoma&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;freesans&amp;quot; , sans-serif;"&gt;&lt;span style="font-size: 13px; line-height: 18.2px;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #4a4a4a; font-family: &amp;quot;arial&amp;quot; , &amp;quot;tahoma&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;freesans&amp;quot; , sans-serif;"&gt;&lt;span style="font-size: 13px; line-height: 18.2px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>How SSL Tunneling working in the WSO2 ESB</title><link>http://prabu-lk.blogspot.com/2015/11/how-ssl-tunneling-working-in-wso2-esb.html</link><category>Proxy Server</category><category>SSL Tunneling</category><category>WSO2 ESB</category><category>WSO2 ESB SSL Tunneling</category><pubDate>Thu, 5 Nov 2015 12:05:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-825747188554675448</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
This blog post assumes that the user who reads has some basic understanding of SSL tunneling and the basic message flow of the ESB. If you are not familiar with the concepts of the SSL tunneling you can refer my previous blog post about the &lt;a href="http://prabu-lk.blogspot.com/2015/11/what-is-ssl-tunneling.html"&gt;SSL tunneling&lt;/a&gt; and you can get detail idea about the message flow from this &lt;a href="http://wso2.com/library/articles/2013/12/demystifying-wso2-esb-pass-through-transport-part-i"&gt;article&lt;/a&gt;.&lt;br /&gt;
I will give brief introduction about the targetHandler for understand concepts easily.&amp;nbsp;As you may already know TargetHandler(TH) is responsible for handling requests and responses for the backend side. It is maintaining status (REQUEST_READY, RESPONSE_READY .. ,etc) based on the events which fired by the IOReactor and executing relevant methods. As the example if a response which is coming from the backend side hits to the ESB, IOReactor fire the responseRecived method in the targetHandler side. Followings are the basic methods contain in the target handler and their responsibilities.&lt;br /&gt;
&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;b&gt;Connect: -&amp;nbsp;&lt;/b&gt;This is executed when new outgoing connection needed.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;b&gt;RequestReady:-&amp;nbsp;&lt;/b&gt;This is executed by the IOReactor when new outgoing HTTP request headers are coming. Inside this method we are writing http Headers to the relevant backend.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;b&gt;OutputReady:-&lt;/b&gt;&amp;nbsp;Responsible for writing request body to the specified backend service.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;b&gt;ResponseRecived:-&amp;nbsp;&lt;/b&gt;This is executed when backend response headers are coming to the ESB.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;b&gt;OutputReady:-&amp;nbsp;&lt;/b&gt;Responsible for reading the backend response body.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Let me explain tunneling process step by step.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBMdtvKaAv1iDjrK38rOo7Bev-diHqFidfdHH_w9IITosYEpQRBvOxarr3zMT_Uo-SBbZR1nAB56aQIsxE2ITt3BYlW7npZ5gi_-KF0O9J01H6H16zTj87wNVqbtfN4XVPQCmKUli4RUkv/s1600/123.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="201" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBMdtvKaAv1iDjrK38rOo7Bev-diHqFidfdHH_w9IITosYEpQRBvOxarr3zMT_Uo-SBbZR1nAB56aQIsxE2ITt3BYlW7npZ5gi_-KF0O9J01H6H16zTj87wNVqbtfN4XVPQCmKUli4RUkv/s640/123.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style="text-align: left;"&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;If proxy server is configured in the ESB, once request comes to the target handler side, it creates &amp;nbsp; &amp;nbsp;&amp;nbsp;connection with the proxy server because all request need to go via the proxy server.&lt;/li&gt;
&lt;li&gt;Once request headers comes to the TH side(inside the &lt;i&gt;requestReady&lt;/i&gt; method), those headers need to send to the actual backend side, but still we don't have connectivity between the actual backend and the ESB. &lt;br /&gt;In this point we need to start initializing the tunneling in between ESB and the actual backend service. As I explained in the &lt;a href="http://prabu-lk.blogspot.com/2015/11/what-is-ssl-tunneling.html"&gt;previous article&lt;/a&gt;. For initialize the tunneling, we need to first send the CONNECT request to the proxy server side. If you checked the TH requestReady code you can see the how CONNECT request is sending to the proxy server.&lt;/li&gt;
&lt;li&gt;Proxy server establishing the connection with the backend service&amp;nbsp;Once CONNECT&amp;nbsp;request&amp;nbsp;hits.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Base on the&amp;nbsp;CONNECT&amp;nbsp;request which has send from the TH &lt;i&gt;requestReady&lt;/i&gt; methods, Proxy server responses&amp;nbsp;with the 200 range status code. &lt;br /&gt;This will initially hits to the TH &lt;i&gt;responseRecive&lt;/i&gt; method. So it will upgrade the existing connection to secure one by initiating a TLS handshake on that channel. Internally existing IOSession upgrades into the SSLIOSession by using IOSession informations. &lt;br /&gt;Since everything is now relayed to the backend server, it's as if the TLS exchange was done directly with backend secure service.&lt;/li&gt;
&lt;li&gt;Now the tunnel between the ESB and backend secure service has been initialized. we need to send actual request to the backend secure service. For that we need to trigger the target handler execution again. Under &lt;i&gt;responseRecive&lt;/i&gt; method you can see executing&lt;br /&gt;&lt;i&gt;&amp;nbsp;conn.resetInput();&lt;/i&gt;&lt;i&gt;&amp;nbsp;conn.requestOutput();&lt;/i&gt;&amp;nbsp;to execute the &lt;i&gt;requestReady&lt;/i&gt; and &lt;i&gt;outputReady&lt;/i&gt; methods for sending actual request to the backend.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;span style="font-size: large;"&gt;How to setup SSL handling in the ESB?&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;First you need to setup proxy server.&lt;br /&gt;Install Squid as described &lt;a href="http://wiki.squid-cache.org/SquidFaq/InstallingSquid"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Configure for the ESB side.&lt;br /&gt;In &lt;i&gt;&lt;esb_home&gt;/repository/conf/axis2/axis2.xml&lt;/esb_home&gt;&lt;/i&gt;, add the following parameters to the transportSender configuration for &lt;i&gt;PassThroughHttpSender&lt;/i&gt;,&lt;i&gt;PassThroughHttpSSLSender&lt;/i&gt;, &lt;i&gt;HttpCoreNIOSender&lt;/i&gt;, and &lt;i&gt;HttpCoreNIOSSLSender&lt;/i&gt;:&lt;br /&gt;&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="color: #808030;"&gt;&amp;lt;&lt;/span&gt;parameter name&lt;span style="color: #808030;"&gt;=&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;http.proxyHost&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt; locked&lt;span style="color: #808030;"&gt;=&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;false&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #808030;"&gt;&amp;gt;&lt;/span&gt;hostIP&lt;span style="color: #808030;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #808030;"&gt;/&lt;/span&gt;parameter&lt;span style="color: #808030;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #808030;"&gt;
&amp;lt;&lt;/span&gt;parameter name&lt;span style="color: #808030;"&gt;=&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;http.proxyPort&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt; locked&lt;span style="color: #808030;"&gt;=&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;false&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #808030;"&gt;&amp;gt;&lt;/span&gt;portNumber&lt;span style="color: #808030;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #808030;"&gt;/&lt;/span&gt;parameter&lt;span style="color: #808030;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;where hostIP and portNumber specify the IP address and port number of the proxy server.Uncomment the following parameter in the PassThroughHttpSSLSender and HttpCoreNIOSSLSender configurations and change the value to "AllowAll".&lt;br /&gt;&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="color: #808030;"&gt;&amp;lt;&lt;/span&gt;parameter name&lt;span style="color: #808030;"&gt;=&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;HostnameVerifier&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #808030;"&gt;&amp;gt;&lt;/span&gt;AllowAll&lt;span style="color: #808030;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #808030;"&gt;/&lt;/span&gt;parameter&lt;span style="color: #808030;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;For example, if the host and port of proxy server is localhost:8080, your transportSender configurations for PassThroughHttPSender and PassThroughHttpSSLSender would look like this:&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBMdtvKaAv1iDjrK38rOo7Bev-diHqFidfdHH_w9IITosYEpQRBvOxarr3zMT_Uo-SBbZR1nAB56aQIsxE2ITt3BYlW7npZ5gi_-KF0O9J01H6H16zTj87wNVqbtfN4XVPQCmKUli4RUkv/s72-c/123.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">9</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>What is SSL Tunneling?</title><link>http://prabu-lk.blogspot.com/2015/11/what-is-ssl-tunneling.html</link><category>Proxy Server</category><category>SSL</category><category>SSL Tunneling</category><category>tunneling</category><pubDate>Thu, 5 Nov 2015 00:27:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-898298980483468478</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
You want to be able to access some restricted destinations and/or ports with some applications from your computer but you are on a restricted network (corporate) - Even using a Torrent client.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How to overcome this limitation?&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;What if backend service is secure one?&lt;/b&gt;&lt;br /&gt;
We can use SSL tunneling for overcome above issue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style="text-align: left;"&gt;
&lt;span style="font-size: large;"&gt;What is the SSL tunneling?&lt;/span&gt;&lt;/h2&gt;
&lt;div style="text-align: left;"&gt;
SSL tunneling is when an Internal client application requests a web object using HTTPS on port 8080 through the proxy server.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRsGF3JdCzXQnCo-cHJ3HUvVcOXqdfm2Qw_tYCPXnmOZacYQJaoKdjPs9rxWpNpYT6cYtIyXiwXiWiHeYWTQyCIBO0FJed4tgW24MwH1i_VnP5LHk6yQhN7K31gzZgh2pybznZIN08fIr1/s1600/mainimage.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="106" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRsGF3JdCzXQnCo-cHJ3HUvVcOXqdfm2Qw_tYCPXnmOZacYQJaoKdjPs9rxWpNpYT6cYtIyXiwXiWiHeYWTQyCIBO0FJed4tgW24MwH1i_VnP5LHk6yQhN7K31gzZgh2pybznZIN08fIr1/s400/mainimage.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
An example of this is when you are using online shopping. The internet connection to the target relevant e-commerce website &amp;nbsp;is tunneled to by you through proxy server. The key word here is through. The client communicates with the target web server directly after the initial connection has been established by proxy server, by means of communication within the SSL tunnel that has been created after SSL negotiation has taken place.&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2 style="text-align: left;"&gt;
How it's working?&lt;/h2&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxnYhWdlT7puzX2pqtsRSYx6GB-IIC1s_71MQ6qM9INOhG2TV2O2t1gKwUw283NBoKim9ZWZ1ybd8CQXp-y243UfQufNYYzhQJdLIiUMBmkgn0-GkALaDw3tKl1YcLkU0lO6wfB4Xjz4DO/s1600/image2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="203" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxnYhWdlT7puzX2pqtsRSYx6GB-IIC1s_71MQ6qM9INOhG2TV2O2t1gKwUw283NBoKim9ZWZ1ybd8CQXp-y243UfQufNYYzhQJdLIiUMBmkgn0-GkALaDw3tKl1YcLkU0lO6wfB4Xjz4DO/s400/image2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;The client makes a tunneling request: CONNECT server-host-name:port HTTP/1.1 (or HTTP/1.0). The port number is optional and is usually 443. The client application will automatically send the CONNECT request to the proxy server first for every HTTPS request if the forward proxy is configured in the browser. &amp;nbsp; &lt;br /&gt;&lt;pre style="background: #ffffff; color: black;"&gt;CONNECT www&lt;span style="color: #808030;"&gt;.&lt;/span&gt;example&lt;span style="color: #808030;"&gt;.&lt;/span&gt;com&lt;span style="color: purple;"&gt;:&lt;/span&gt;&lt;span style="color: #008c00;"&gt;443&lt;/span&gt; HTTP&lt;span style="color: #808030;"&gt;/&lt;/span&gt;&lt;span style="color: green;"&gt;1.1&lt;/span&gt;
&lt;span style="color: #e34adc;"&gt;Host:&lt;/span&gt; www&lt;span style="color: #808030;"&gt;.&lt;/span&gt;example&lt;span style="color: #808030;"&gt;.&lt;/span&gt;com&lt;span style="color: purple;"&gt;:&lt;/span&gt;&lt;span style="color: #008c00;"&gt;443&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;&lt;a href="http://tools.ietf.org/html/rfc2616"&gt;RFC 2616&lt;/a&gt; treats CONNECT as a way to establish a simple tunnel. There is more about it in &lt;a href="http://tools.ietf.org/html/rfc2817#section-5.2"&gt;RFC 2817&lt;/a&gt;, although the rest of &lt;a href="http://tools.ietf.org/html/rfc2817#section-5.2"&gt;RFC 2817&lt;/a&gt; (upgrades to TLS within a non-proxy HTTP connection) is rarely used.&lt;/li&gt;
&lt;li&gt;The proxy accepts the connection on its port 8080, receives the request, and connects to the destination server on the port requested by the client.&lt;/li&gt;
&lt;li&gt;The proxy replies to the client that a connection is established with the 200 OK response.&lt;/li&gt;
&lt;li&gt;After this, the connection between the client and the proxy server is kept open. The proxy server relays everything on the client-proxy connection to and from proxy-backend. The client upgrades its active (proxy-backend) connection to an SSL/TLS connection, by initiating a TLS handshake on that channel.&lt;br /&gt;Since everything is now relayed to the backend server, it's as if the TLS exchange was done directly with &lt;i&gt;www.example.com:443&lt;/i&gt;.&lt;br /&gt;The proxy server doesn't play any role in the handshake. The TLS handshake effectively happens directly between the client and the backend server.&lt;/li&gt;
&lt;li&gt;After the secure handshake is completed, the proxy sends and receives encrypted data to be decrypted at the client or at the destination server.&lt;/li&gt;
&lt;li&gt;If the client or the destination server requests a closure on either port, the proxy server closes both connections (ports 443 and 8080) and resumes its normal activity.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRsGF3JdCzXQnCo-cHJ3HUvVcOXqdfm2Qw_tYCPXnmOZacYQJaoKdjPs9rxWpNpYT6cYtIyXiwXiWiHeYWTQyCIBO0FJed4tgW24MwH1i_VnP5LHk6yQhN7K31gzZgh2pybznZIN08fIr1/s72-c/mainimage.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>How to write a Synapse Handler for the WSO2 ESB ?</title><link>http://prabu-lk.blogspot.com/2015/10/how-to-write-synapse-handler.html</link><category>Synapse Handler</category><category>WSO2 ESB</category><pubDate>Sun, 4 Oct 2015 19:25:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-6499738515127717685</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
Synapse handler is new feature which come with the ESB 4.9.0. It provide abstract handler implementation to the users. User can create their own concrete handlers which is executing in the synapse layer. Main intention of this blog post is to explain how to write synapse handler and explain basic theoretical background.&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style="line-height: 100%; margin-bottom: 0in; text-align: left;"&gt;
1. What is the handler?&lt;/h3&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
Handlers are basically talking with the chain of responsibility pattern. Chain of responsibility allows a number of classes to attempt to handle a request independently of any other object along the chain. Once the request is handled, it completes it's journey through the chain.&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
The Handler defines the interface which required to handle the request and concreteHandlers handle request in a specific manner that they are responsible for.&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIAPomJJit7FE1OKlt5MDc9ajcQRvqS3TGiMIsx1_EkxhF3Dmw_iUpdWbq7qwecl4GdJvliKU_Jh-Djq4dnuWsqV1qYjLeTjUW9MK0rKjkE3KnERifgk9-6HxX2Yn0USagLsU3FZb5ejP5/s1600/Class.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="167" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIAPomJJit7FE1OKlt5MDc9ajcQRvqS3TGiMIsx1_EkxhF3Dmw_iUpdWbq7qwecl4GdJvliKU_Jh-Djq4dnuWsqV1qYjLeTjUW9MK0rKjkE3KnERifgk9-6HxX2Yn0USagLsU3FZb5ejP5/s400/Class.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style="line-height: 100%; margin-bottom: 0in; text-align: left;"&gt;
2. What is Synapse handler?&lt;/h3&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
Synapse handler is providing abstract handle implementation which executes in the following four scenarios.&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhko7xhULLyLE549k4lZCl9TYfjeBiLp7vqL3CKTqD9fjbe7zpMesgAuYH1gYSlwjQQTiAtcqBgwXC4-Ro4HXePZ5k4LCy4vhzneiLN0mW49OyQFP7-CwT2kTM0bEuYLC9DIEI9AtUwSOpa/s1600/Client.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="62" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhko7xhULLyLE549k4lZCl9TYfjeBiLp7vqL3CKTqD9fjbe7zpMesgAuYH1gYSlwjQQTiAtcqBgwXC4-Ro4HXePZ5k4LCy4vhzneiLN0mW49OyQFP7-CwT2kTM0bEuYLC9DIEI9AtUwSOpa/s400/Client.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;b&gt;1. Request in flow&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;This is executing when request is hitting to the synapse engine.&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="line-height: 16px;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;public&lt;/span&gt; boolean handleRequestInFlow(MessageContext synCtx)&lt;span style="color: #808030;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;span style="line-height: 16px;"&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;b&gt;2. request out flow&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;This is executing when request goes out from the synapse engine.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="line-height: 16px;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;public&lt;/span&gt; boolean handleRequestOutFlow(MessageContext synCtx)&lt;span style="color: #808030;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;span style="line-height: 16px;"&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;b&gt;3. Response in flow&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;This is executing when response is hitting to the synapse engine.&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="line-height: 16px;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;public&lt;/span&gt; boolean handleResponseInFlow(MessageContext synCtx)&lt;span style="color: #808030;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;span style="line-height: 16px;"&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;b&gt;4. Response out flow&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;This is executing when response goes out from the synapse engine.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="line-height: 16px;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;public&lt;/span&gt; boolean handleResponseOutFlow(MessageContext synCtx)&lt;span style="color: #808030;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;span style="line-height: 16px;"&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
Following diagram shows the basic component structure of the ESB and how above mentioned scenarios are executing in the request and response flow.&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLaZjvHLRom2GovMkNpAGfDyuOlo0kcqVUDfLyR-1kXxV42B0K-UI1aEEMvuxiXJHu1Dwed70K5OUKntIAsP77hig9s-2_xfm1HmhHoK4lzp1SnmEwfMJUbQyKRQalD3gPXMoPaK0d2QN7/s1600/main.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLaZjvHLRom2GovMkNpAGfDyuOlo0kcqVUDfLyR-1kXxV42B0K-UI1aEEMvuxiXJHu1Dwed70K5OUKntIAsP77hig9s-2_xfm1HmhHoK4lzp1SnmEwfMJUbQyKRQalD3gPXMoPaK0d2QN7/s400/main.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style="margin-bottom: 0in; text-align: left;"&gt;
&lt;span style="line-height: 16px;"&gt;3. How to write concrete Synapse handler?&lt;/span&gt;&lt;/h3&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;You can implement concrete handler by implementing &lt;b&gt;SynapseHandler(&lt;i&gt;org.apache.synapse.SynapseHandler&lt;/i&gt;)&lt;/b&gt; interface or can extends &lt;b&gt;AbstractSynapseHandler(&lt;i&gt;org.apache.synapse.AbstractSynapseHandler&lt;/i&gt;)&lt;/b&gt; class.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="line-height: 16px;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;class&lt;/span&gt; TestHandler &lt;span style="color: maroon; font-weight: bold;"&gt;extends&lt;/span&gt; AbstractSynapseHandler &lt;span style="color: purple;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;span style="line-height: 16px;"&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: maroon; font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;static&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;final&lt;/span&gt; Log log &lt;span style="color: #808030;"&gt;=&lt;/span&gt; LogFactory&lt;span style="color: #808030;"&gt;.&lt;/span&gt;getLog&lt;span style="color: #808030;"&gt;(&lt;/span&gt;TestHandler&lt;span style="color: #808030;"&gt;.&lt;/span&gt;class&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #808030;"&gt;@&lt;/span&gt;Override&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: maroon; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #bb7977;"&gt;boolean&lt;/span&gt; handleRequestInFlow&lt;span style="color: #808030;"&gt;(&lt;/span&gt;MessageContext synCtx&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: purple;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; log&lt;span style="color: #808030;"&gt;.&lt;/span&gt;info&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;"Request In Flow"&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: maroon; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: purple;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #808030;"&gt;@&lt;/span&gt;Override&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: maroon; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #bb7977;"&gt;boolean&lt;/span&gt; handleRequestOutFlow&lt;span style="color: #808030;"&gt;(&lt;/span&gt;MessageContext synCtx&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: purple;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; log&lt;span style="color: #808030;"&gt;.&lt;/span&gt;info&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;"Request Out Flow"&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: maroon; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: purple;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #808030;"&gt;@&lt;/span&gt;Override&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: maroon; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #bb7977;"&gt;boolean&lt;/span&gt; handleResponseInFlow&lt;span style="color: #808030;"&gt;(&lt;/span&gt;MessageContext synCtx&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: purple;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; log&lt;span style="color: #808030;"&gt;.&lt;/span&gt;info&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;"Response In Flow"&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: maroon; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: purple;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #808030;"&gt;@&lt;/span&gt;Override&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: maroon; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #bb7977;"&gt;boolean&lt;/span&gt; handleResponseOutFlow&lt;span style="color: #808030;"&gt;(&lt;/span&gt;MessageContext synCtx&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: purple;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; log&lt;span style="color: #808030;"&gt;.&lt;/span&gt;info&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;"Response Out Flow"&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: maroon; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: purple;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;span style="color: purple;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h3 style="margin-bottom: 0in; text-align: left;"&gt;
&lt;span style="line-height: 16px;"&gt;4. Configuration&lt;/span&gt;&lt;/h3&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;You need to add following configuration item to the &lt;b&gt;synapse-handler.xml&lt;/b&gt;(&lt;i&gt;repository/conf&lt;/i&gt;) file to enable &amp;nbsp;deployed handler.&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="line-height: 16px;"&gt;&lt;span style="color: #a65700;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #5f5035;"&gt;handlers&lt;/span&gt;&lt;span style="color: #a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;span style="line-height: 16px;"&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #a65700;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #5f5035;"&gt;handler&lt;/span&gt; &lt;span style="color: #274796;"&gt;name&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;TestHandler&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt; &lt;span style="color: #274796;"&gt;class&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;package.TestHandler&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #a65700;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;span style="color: #a65700;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #5f5035;"&gt;handlers&lt;/span&gt;&lt;span style="color: #a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h3 style="line-height: 100%; margin-bottom: 0in; text-align: left;"&gt;
5. Deployment&lt;/h3&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
Handler can be deployed as a OSGI bundle or jar file to the ESB.&lt;/div&gt;
&lt;div style="margin-bottom: 0in;"&gt;
&lt;span style="line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="line-height: 100%; margin-bottom: 0in;"&gt;
&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIAPomJJit7FE1OKlt5MDc9ajcQRvqS3TGiMIsx1_EkxhF3Dmw_iUpdWbq7qwecl4GdJvliKU_Jh-Djq4dnuWsqV1qYjLeTjUW9MK0rKjkE3KnERifgk9-6HxX2Yn0USagLsU3FZb5ejP5/s72-c/Class.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>How Schedule failover message processor helps for the guaranteed delivery ?</title><link>http://prabu-lk.blogspot.com/2015/09/how-schedule-failover-message-processor.html</link><category>ESB 4.9.0</category><category>Failover Message processor</category><category>Guaranteed delivery</category><category>WSO2 ESB</category><pubDate>Sun, 13 Sep 2015 10:14:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-277347902820743792</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; white-space: pre-wrap;"&gt;Before we talk about the failover message forwarding processor, it’s better to understand the big picture of the concepts and use cases. The Scheduled Failover Message Forwarding Processor is part of the bigger picture of the&lt;/span&gt;&amp;nbsp;&lt;a href="http://wso2.com/library/articles/2014/01/guaranteed-delivery-with-Message-Store-Message-Processor%20/"&gt;message store and message processor&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
&lt;span style="font-size: large;"&gt;Message Store Message Processor.&lt;/span&gt;&lt;/div&gt;
WSO2 ESB’s &lt;a href="https://docs.wso2.com/display/IntegrationPatterns/Message+Store"&gt;Message-stores&lt;/a&gt; and &lt;a href="https://docs.wso2.com/display/ESB490/Message+Processors"&gt;Message-processors&lt;/a&gt;&amp;nbsp;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; white-space: pre-wrap;"&gt;are used to store incoming messages and then deliver them to a particular backend with added Quality of Services (QoS), such as throttling and guaranteed delivery. The basic advantage of the MSMP is that it allows you to send messages reliably to a backend service. These messages can be stored in a different reliable storage such as JMS, JDBC message stores. The MSMP powered by three basic components:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0YdSyZ659LrzcfkSnZZz1ZL_YVhpmZWxA6s2kNpcrwUnRdx7DwguWG22j8XeREJw9o5wSqAmk1TH1ZcXRA5TwImHDZ4F6seFnnRZUlJ9ReP6DRTx9vXYMszEX7sphJAWvSsecBS7ZCwh2/s1600/MSMP.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="146" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0YdSyZ659LrzcfkSnZZz1ZL_YVhpmZWxA6s2kNpcrwUnRdx7DwguWG22j8XeREJw9o5wSqAmk1TH1ZcXRA5TwImHDZ4F6seFnnRZUlJ9ReP6DRTx9vXYMszEX7sphJAWvSsecBS7ZCwh2/s400/MSMP.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;1. Store Mediator.&lt;/b&gt;&lt;br /&gt;
&lt;span id="docs-internal-guid-330a2711-1a75-1b37-0d93-274c32ae64ad"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; vertical-align: baseline; white-space: pre-wrap;"&gt;The Store mediator is the synapse mediator and can be used to store messages in the message store.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2. Message Store.&lt;/b&gt;&lt;br /&gt;
&lt;span id="docs-internal-guid-330a2711-1a75-7423-3ace-ba0d398fc3b7"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; vertical-align: baseline; white-space: pre-wrap;"&gt;A message store is storage in the ESB for messages. The WSO2 ESB comes with four types of message store implementations - In Memory, JMS, JDBC and RabitMQ Message Stores. Users also have the option to create a Custom Message Store with their own message store implementation. For more information, refer to the section Message Stores section.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3. Message Processor.&lt;/b&gt;&lt;br /&gt;
The Message Processor is used for consuming messages from the message store and sending it to the defined endpoint. Currently we have Forward and Sample Message Processor implementations; the ESB provides the facility to add custom message processors as well. Other than forwarding messages to the endpoint, the message processor provides other new features, which can be helpful to guaranteed delivery such as throttling, message retries when endpoint is not available, etc.&lt;br /&gt;
For more information, please refer to the&amp;nbsp;&lt;a href="https://docs.wso2.com/display/ESB490/Message+Processors"&gt;Message Processor&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;How to achieve guaranteed delivery?&lt;/span&gt;&lt;br /&gt;
&lt;span id="docs-internal-guid-330a2711-1a76-e9de-13e6-3aa2b18315b4"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; vertical-align: baseline; white-space: pre-wrap;"&gt;Guaranteed message delivery means once message comes to the ecosystem, it needs to be delivered to the defined endpoint without losing it while processing. We can identify a few areas which should be considered when we talking about the guaranteed delivery in message processor scenario:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. Store message&lt;/b&gt;&lt;br /&gt;
&lt;span id="docs-internal-guid-330a2711-1a77-b854-703a-367295afdc9a"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; vertical-align: baseline; white-space: pre-wrap;"&gt;Message store unavailability is the only scenario that we can identify for message loss when the store mediator trying to store a message in the message store. This can be happen due to reasons such as network failures, a message store crash or a system shutdown for maintenance. This kind of situation can overcome by different approaches.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;b&gt;Configure message store cluster&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;span id="docs-internal-guid-330a2711-1a77-f182-dea7-129d842ab743"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; vertical-align: baseline; white-space: pre-wrap;"&gt;We can configure a message store cluster as a one solution for this. This lets us avoid the single point of failure.&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjojWTYOuUzi66tVz30neUpk2AmCQ1YenoAnPPWXnOtf4Mvwb2KP86BKmJS-iV0FdOIqdf5uA2Z6TkHwX1PaESmQJWhd6kiQ6VyPipP9yjBXYQXBVtHmTzA2q0fQ5pqMbUOfdzyxweyqLUH/s1600/cluster.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjojWTYOuUzi66tVz30neUpk2AmCQ1YenoAnPPWXnOtf4Mvwb2KP86BKmJS-iV0FdOIqdf5uA2Z6TkHwX1PaESmQJWhd6kiQ6VyPipP9yjBXYQXBVtHmTzA2q0fQ5pqMbUOfdzyxweyqLUH/s200/cluster.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;b&gt;Defining failover message store.&lt;/b&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;span id="docs-internal-guid-330a2711-1a78-6163-f84b-76398aa6cd01"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; vertical-align: baseline; white-space: pre-wrap;"&gt;This allows the message store to store messages in the failover message store if the original message store is not available. ESB 4.9.0 has introduced a new feature allowing you to define a failover message store. Full details of failover message store will be discussed under a different section.&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc3396sUnfK2pbRJwWeXh0tkkTsF93mTJ-fQKLHIHr_HAEwp3foiahunlkUa6NWnBDgkLUwrb5FoL2S-_NUbwCqPuCY5aurlGXNGdejkYCKOWaxnWcBE2-kWfTSgrwM-VF0WcXr4fcKFPj/s1600/failover.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="130" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc3396sUnfK2pbRJwWeXh0tkkTsF93mTJ-fQKLHIHr_HAEwp3foiahunlkUa6NWnBDgkLUwrb5FoL2S-_NUbwCqPuCY5aurlGXNGdejkYCKOWaxnWcBE2-kWfTSgrwM-VF0WcXr4fcKFPj/s200/failover.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b&gt;2. Retrieve message from message store.&lt;/b&gt;&lt;br /&gt;
&lt;span id="docs-internal-guid-330a2711-1a79-14ef-fbb3-fb13355968cf"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; vertical-align: baseline; white-space: pre-wrap;"&gt;We need to decide on when we need to remove message from the store after retrieving the message processor from the message store, because otherwise the message can be lost in some cases. The ESB has a mechanism to signal to message store to remove the messages after a message successfully sent to the endpoint. The ESB will not remove the message from the message store if the message cannot be successfully sent to the endpoint.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr79odjlRqhYfXBfqk1XOEZMqzhHPGuGaEN8oTDE0ORl_PEtpU08nW0Q1QnXY-w5vKU4abHBGxaOow-u3_NS6rfab-NcWK1GTzBeDugsMben0kg1TYtsYWg1YTswcQpicFSIh-6B62LQtT/s1600/messageConsume.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="141" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr79odjlRqhYfXBfqk1XOEZMqzhHPGuGaEN8oTDE0ORl_PEtpU08nW0Q1QnXY-w5vKU4abHBGxaOow-u3_NS6rfab-NcWK1GTzBeDugsMben0kg1TYtsYWg1YTswcQpicFSIh-6B62LQtT/s400/messageConsume.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3. Send message to the define endpoint.&lt;/b&gt;&lt;br /&gt;
This scenario is technically part of the ‘forwarding message to the endpoint’ scenario. As we discussed under the “Retrieve message from the message store” section, messages are removed from the message store, if only after messages are sent successfully to the endpoint. Message processors provide a retry mechanism to retry to send messages if the endpoint is not available. Even though retry mechanism does not provide guaranteed delivery, it helps successfully send off messages to the endpoint.&lt;br /&gt;
&lt;br /&gt;
The message processor does have more functionality which can be used to tune the processor to improve guaranteed delivery; however, that’s outside the scope of this blog post. You can find more information about the message processor from&amp;nbsp;&lt;a href="https://docs.wso2.com/display/ESB490/Message+Processors"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style="text-align: left;"&gt;
Failover Message store and Schedule failover message processor scenario.&lt;/h2&gt;
As discussed in the earlier section, the Failover Message Store is using as a solution for message store failures. The store mediator forwards messages to the failover message store if the original message store fails. &lt;br /&gt;
&lt;br /&gt;
Initially we need to define failover message store first. It can be any type of message store that are available in the ESB. No special configuration is needed to specifically define the failover message store - when you define the original message store, you can simply select failover message store for the failure situations. When a failure situation happens, all incoming messages are forwarded into the failover message store by the store mediator.&lt;br /&gt;
&lt;br /&gt;
The next problem is how can we move messages which were forwarded to the failover message store to the original message store when it becomes available again. This is where the Failover Message Processor comes in. It’s the same as the Scheduled Message Forward Processor, except where the Message Forward Processor sends messages to the endpoints, this on forwards messages to the message store.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUEngunDira8GJg8t4qGNKucIv6_V9_LVyJp2fVOWoSJvCNJt5fFuceUrGGJIEcroKhcMh1MxjmWlOjmHSX_-IDSC9d3kgC8ftMKwOb-f_finzbGpX6HUQ4aFMgSH6cuzXGSZE1uBYMY8-/s1600/failoverFinal.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUEngunDira8GJg8t4qGNKucIv6_V9_LVyJp2fVOWoSJvCNJt5fFuceUrGGJIEcroKhcMh1MxjmWlOjmHSX_-IDSC9d3kgC8ftMKwOb-f_finzbGpX6HUQ4aFMgSH6cuzXGSZE1uBYMY8-/s400/failoverFinal.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span id="docs-internal-guid-330a2711-1a7f-2afe-297a-eef707438a6e"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; vertical-align: baseline; white-space: pre-wrap;"&gt;The following example explains how to setup a complete message processor scenario with the failover configurations.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. Create failover message store.&lt;/b&gt;&lt;br /&gt;
&lt;span id="docs-internal-guid-330a2711-1a7f-b33b-1cb8-701477a87e60"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; vertical-align: baseline; white-space: pre-wrap;"&gt;You don't need to specify any special configuration here. Keep in mind that in-memory message store is used for this example, but we cannot use in-memory message stores for the cluster setups since we cannot share in-memory stores among the cluster nodes. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO2K8yzTwbFPv53NugpgvuW3v8wky3AfEVwqcekjRkEKRzxIs-9AkLP_-euhxjwwq11-6imfi7BqkM8LPJnYR7zLcCSnJ0ZQY9gTBpZ5nHvTT_VsRxU7m_FUdMRg2U2N8zyldGnMt0fg-p/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt;  &amp;lt;messageStore name="failover"/&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;2. Create original message store for storing messages.&lt;/b&gt;&lt;br /&gt;
&lt;span id="docs-internal-guid-330a2711-1a80-1f30-71c6-eb8239dd2861"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; vertical-align: baseline; white-space: pre-wrap;"&gt;A JMS message store is used for this example. For enabling guaranteed delivery on the producer side (configure failover message store), you need to enable “Producer Guaranteed Delivery” property and need to specify the failover message store located under the “Show Guaranteed Delivery Parameters” section.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO2K8yzTwbFPv53NugpgvuW3v8wky3AfEVwqcekjRkEKRzxIs-9AkLP_-euhxjwwq11-6imfi7BqkM8LPJnYR7zLcCSnJ0ZQY9gTBpZ5nHvTT_VsRxU7m_FUdMRg2U2N8zyldGnMt0fg-p/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;messageStore  
     class="org.apache.synapse.message.store.impl.jms.JmsStore" name="Orginal"&amp;gt;  
     &amp;lt;parameter name="store.failover.message.store.name"&amp;gt;failover&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="store.producer.guaranteed.delivery.enable"&amp;gt;true&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="java.naming.factory.initial"&amp;gt;org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="java.naming.provider.url"&amp;gt;tcp://localhost:61616&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="store.jms.JMSSpecVersion"&amp;gt;1.1&amp;lt;/parameter&amp;gt;  
   &amp;lt;/messageStore&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5EbpdEql4_DKaTeiYTZktZlqiMEIFCWE6GvxC5Sj9sQ8HjI14qq_7lfLL5LB0MrIP2s4NFXEdmT9RVG8_3XUkt6k_Fxk4bplL3fxlUeJltXspB1Y9Mn1nDz3HIUuvILalM8PcfUfRTCcH/s1600/failoverstore.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="193" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5EbpdEql4_DKaTeiYTZktZlqiMEIFCWE6GvxC5Sj9sQ8HjI14qq_7lfLL5LB0MrIP2s4NFXEdmT9RVG8_3XUkt6k_Fxk4bplL3fxlUeJltXspB1Y9Mn1nDz3HIUuvILalM8PcfUfRTCcH/s640/failoverstore.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;3. Create Proxy Service to send messages to the original message store using store mediator.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO2K8yzTwbFPv53NugpgvuW3v8wky3AfEVwqcekjRkEKRzxIs-9AkLP_-euhxjwwq11-6imfi7BqkM8LPJnYR7zLcCSnJ0ZQY9gTBpZ5nHvTT_VsRxU7m_FUdMRg2U2N8zyldGnMt0fg-p/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;proxy name="Proxy1" transports="https http" startOnLoad="true" trace="disable"&amp;gt;    
  &amp;lt;target&amp;gt;  
    &amp;lt;inSequence&amp;gt;  
     &amp;lt;property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/&amp;gt;  
     &amp;lt;property name="OUT_ONLY" value="true"/&amp;gt;  
     &amp;lt;log level="full"/&amp;gt;  
     &amp;lt;store messageStore="Orginal"/&amp;gt;  
    &amp;lt;/inSequence&amp;gt;  
  &amp;lt;/target&amp;gt;  
 &amp;lt;/proxy&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;4. Define endpoint for the schedule forward message processor.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;span id="docs-internal-guid-330a2711-1a80-6c79-2a81-af3afe329d0d"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; vertical-align: baseline; white-space: pre-wrap;"&gt;SimpleStockquate service is used as a backend service.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO2K8yzTwbFPv53NugpgvuW3v8wky3AfEVwqcekjRkEKRzxIs-9AkLP_-euhxjwwq11-6imfi7BqkM8LPJnYR7zLcCSnJ0ZQY9gTBpZ5nHvTT_VsRxU7m_FUdMRg2U2N8zyldGnMt0fg-p/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;endpoint name="SimpleStockQuoteService"&amp;gt;  
  &amp;lt;address uri="http://127.0.0.1:9000/services/SimpleStockQuoteService"/&amp;gt;  
 &amp;lt;/endpoint&amp;gt;  &lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;5. Add schedule forward message processor to forward messages to the previously defined endpoint.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
This &lt;a href="https://docs.wso2.com/display/ESB490/Message+Forwarding+Processor"&gt;link&lt;/a&gt; contain more information about the schedule forward message processor.&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO2K8yzTwbFPv53NugpgvuW3v8wky3AfEVwqcekjRkEKRzxIs-9AkLP_-euhxjwwq11-6imfi7BqkM8LPJnYR7zLcCSnJ0ZQY9gTBpZ5nHvTT_VsRxU7m_FUdMRg2U2N8zyldGnMt0fg-p/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;messageProcessor  
     class="org.apache.synapse.message.processor.impl.forwarder.ScheduledMessageForwardingProcessor"  
     messageStore="Orginal" name="ForwardMessageProcessor" targetEndpoint="SimpleStockQuoteService"&amp;gt;  
     &amp;lt;parameter name="client.retry.interval"&amp;gt;1000&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="throttle"&amp;gt;false&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="max.delivery.attempts"&amp;gt;4&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="member.count"&amp;gt;1&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="max.delivery.drop"&amp;gt;Disabled&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="interval"&amp;gt;1000&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="is.active"&amp;gt;true&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="target.endpoint"&amp;gt;SimpleStockQuoteService&amp;lt;/parameter&amp;gt;  
   &amp;lt;/messageProcessor&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;6. Add schedule failover message processor for forwarding failover messages from failover message store to the original message store.&lt;/b&gt;&lt;br /&gt;
&lt;span id="docs-internal-guid-330a2711-1a85-1db1-c32e-a8d61545a64d"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; vertical-align: baseline; white-space: pre-wrap;"&gt;When you are defining a failover message processor, you need to fill two mandatory parameters which are very important for the failover scenario.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;b&gt;Source message store.&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Target message store.&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span id="docs-internal-guid-330a2711-1a85-58db-c464-e6a2039ba3d1"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; vertical-align: baseline; white-space: pre-wrap;"&gt;Failover message processor sends messages from the failover store to the original store when it is available in the failover scenario. In this configuration, the source message store should be the failover message store and target message store should be the original message store.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQNSTf9oftnsORJcMQ275Le3Jm4sV4Yl_sJ96BjLY5-xuy-iYxdsKnLQe_pqnnHC8uovqixGV71DzO-Ep0m0Xx8Hs0_yLYXj2KCvNyPvjRe4439yvlNNm4KilYoHAFiWjCCyR6dwpj_x3G/s1600/Screen+Shot+2015-09-13+at+11.36.10+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="316" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQNSTf9oftnsORJcMQ275Le3Jm4sV4Yl_sJ96BjLY5-xuy-iYxdsKnLQe_pqnnHC8uovqixGV71DzO-Ep0m0Xx8Hs0_yLYXj2KCvNyPvjRe4439yvlNNm4KilYoHAFiWjCCyR6dwpj_x3G/s640/Screen+Shot+2015-09-13+at+11.36.10+AM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO2K8yzTwbFPv53NugpgvuW3v8wky3AfEVwqcekjRkEKRzxIs-9AkLP_-euhxjwwq11-6imfi7BqkM8LPJnYR7zLcCSnJ0ZQY9gTBpZ5nHvTT_VsRxU7m_FUdMRg2U2N8zyldGnMt0fg-p/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;messageProcessor  
     class="org.apache.synapse.message.processor.impl.failover.FailoverScheduledMessageForwardingProcessor"  
     messageStore="failover" name="FailoverMessageProcessor"&amp;gt;  
     &amp;lt;parameter name="client.retry.interval"&amp;gt;60000&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="throttle"&amp;gt;false&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="max.delivery.attempts"&amp;gt;1000&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="member.count"&amp;gt;1&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="max.delivery.drop"&amp;gt;Disabled&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="interval"&amp;gt;1000&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="is.active"&amp;gt;true&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="message.target.store.name"&amp;gt;Orginal&amp;lt;/parameter&amp;gt;  
   &amp;lt;/messageProcessor&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;span id="docs-internal-guid-330a2711-1a85-98ae-fc16-979fcce5ac02"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; vertical-align: baseline; white-space: pre-wrap;"&gt;Other than above mandatory parameters, we have a few other optional parameters under the “Additional Parameter” section.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;7. Send Request to the Proxy Service&lt;/b&gt;&lt;br /&gt;
&lt;span id="docs-internal-guid-330a2711-1a86-1120-f001-33ea9f8c935f"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; vertical-align: baseline; white-space: pre-wrap;"&gt;Navigate to /samples/axis2client directory, and execute the following command to invoke the proxy service. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO2K8yzTwbFPv53NugpgvuW3v8wky3AfEVwqcekjRkEKRzxIs-9AkLP_-euhxjwwq11-6imfi7BqkM8LPJnYR7zLcCSnJ0ZQY9gTBpZ5nHvTT_VsRxU7m_FUdMRg2U2N8zyldGnMt0fg-p/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; ant stockquote -Daddurl=http://localhost:8280/services/Proxy1 -Dmode=placeorder  &lt;/code&gt;&lt;/pre&gt;
&lt;span id="docs-internal-guid-330a2711-1a86-4a61-96c3-3759f247b84e"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; vertical-align: baseline; white-space: pre-wrap;"&gt;Note a message similar to the following example printed in the Axis2 Server console.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO2K8yzTwbFPv53NugpgvuW3v8wky3AfEVwqcekjRkEKRzxIs-9AkLP_-euhxjwwq11-6imfi7BqkM8LPJnYR7zLcCSnJ0ZQY9gTBpZ5nHvTT_VsRxU7m_FUdMRg2U2N8zyldGnMt0fg-p/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; SimpleStockQuoteService :: Accepted order for : 7482 stocks of IBM at $ 169.27205579038733  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table border="1" class="myTable"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;&lt;div style="text-align: left;"&gt;
Parameter Name&lt;/div&gt;
&lt;/th&gt;
&lt;th&gt;&lt;div style="text-align: left;"&gt;
Description&lt;/div&gt;
&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;Forwarding interval (&lt;/span&gt;&lt;code style="background-color: white; color: #333333; font-size: 14px; line-height: 20px;"&gt;interval&lt;/code&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;)&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;Interval in milliseconds in which processor consumes messages.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;Retry interval (&lt;/span&gt;&lt;code style="background-color: white; color: #333333; font-size: 14px; line-height: 20px;"&gt;client.retry.interval&lt;/code&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;)&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;Message retry interval in milliseconds.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;Maximum delivery attempts (&lt;/span&gt;&lt;code style="background-color: white; color: #333333; font-size: 14px; line-height: 20px;"&gt;max.delivery.attempts&lt;/code&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;)&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;Maximum redelivery attempts before deactivating the processor. This is used when the backend server is inactive and the ESB tries to resend the message.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;Drop message after maximum delivery attempts (&lt;/span&gt;&lt;span style="background-color: white; color: #222222; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;max.delivery.drop&lt;/span&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;)&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; padding: 0px;"&gt;
If this parameter is set to&amp;nbsp;&lt;code&gt;Enabled&lt;/code&gt;, the message will be dropped from the message store after the maximum number of delivery attempts are made, and the message processor will remain activated. This parameter would have no effect when no value is specified for the&amp;nbsp;&lt;strong&gt;Maximum Delivery Attempts&lt;/strong&gt;&amp;nbsp;parameter.&lt;/div&gt;
&lt;div style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; margin-top: 10px; padding: 0px;"&gt;
The&amp;nbsp;&lt;strong&gt;Maximum Delivery Attempts&lt;/strong&gt;&amp;nbsp;parameter can be used when the backend is inactive and the message is resent.&lt;br /&gt;
&lt;br /&gt;
If this parameter is disabled, the undeliverable message will not be dropped and the message processor will be deactivated.&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;Fault sequence name (&lt;/span&gt;&lt;code style="background-color: white; color: #333333; font-size: 14px; line-height: 20px;"&gt;message.processor.fault.sequence&lt;/code&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;)&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;The name of the sequence where the fault message should be sent to in case of a SOAP fault.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;Deactivate sequence name (&lt;/span&gt;&lt;code style="background-color: white; color: #333333; font-size: 14px; line-height: 20px;"&gt;message.processor.deactivate.sequence&lt;/code&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;)&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;The deactivate sequence that will be executed when the processor is deactivated automatically. Automatic deactivation occurs when the maximum delivery attempts is exceeded and the Drop message after maximum delivery attempts parameter is disabled.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;Quartz configuration file path (&lt;/span&gt;&lt;code style="background-color: white; color: #333333; font-size: 14px; line-height: 20px;"&gt;quartz.conf&lt;/code&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;)&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;The Quartz configuration file path. This properties file contains the Quartz configuration&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;parameters for fine tuning the Quartz engine. More details of the configuration can be&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;found at&amp;nbsp;&lt;/span&gt;&lt;a class="external-link" href="http://quartz-scheduler.org/documentation/quartz-2.x/configuration/ConfigMain" rel="nofollow" style="background-color: white; color: #3366cc; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; text-decoration: none;" target="_blank"&gt;http://quartz-scheduler.org/documentation/quartz-2.x/configuration/ConfigMain&lt;/a&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;Cron Expression (&lt;/span&gt;&lt;code style="background-color: white; color: #333333; font-size: 14px; line-height: 20px;"&gt;cronExpression&lt;/code&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;)&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;The cron expression to be used to configure the retry pattern.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;Task Count (Cluster Mode)&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;"&gt;The required number of worker nodes when you need to run the processor in more than 1 worker node. Specifying this will not guarantee that the processor will run on each worker node. There can be instances where the processor will not run in some workers nodes.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span id="docs-internal-guid-330a2711-1a88-3252-3458-56a8773a96b5"&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; vertical-align: baseline; white-space: pre-wrap;"&gt;To test the failover scenario, you can shutdown the JMS broker(original message store) and send few messages to the proxy service. These messages are not sent to the backend since original message store is not available. You can see those messages are stored in the failover message store. If you check the ESB log, you can see the failover message processor is trying to forward messages to original message store periodically. Once the original message store is available, the failover processor send those messages to the original store and forward message processor send that to the backend service.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0YdSyZ659LrzcfkSnZZz1ZL_YVhpmZWxA6s2kNpcrwUnRdx7DwguWG22j8XeREJw9o5wSqAmk1TH1ZcXRA5TwImHDZ4F6seFnnRZUlJ9ReP6DRTx9vXYMszEX7sphJAWvSsecBS7ZCwh2/s72-c/MSMP.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>Illegal key size or default parameters</title><link>http://prabu-lk.blogspot.com/2015/09/illegal-key-size-or-default-parameters.html</link><category>JCE</category><category>Security</category><category>WSO2 ESB</category><pubDate>Wed, 9 Sep 2015 21:02:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-1066369251810208315</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
When you run the pre-defined security scenarios in the WSO2 ESB most probably you already faced the &lt;b&gt;Illegal key size or default parameters&lt;/b&gt; exception&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;org.apache.axis2.AxisFault: Error in encryption&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;at org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:76)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;at org.apache.axis2.engine.Phase.invokeHandler(Phase.java:340)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;at org.apache.axis2.engine.Phase.invoke(Phase.java:313)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:261)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:426)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:398)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:224)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;at org.apache.axis2.client.OperationClient.execute(OperationClient.java:149)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:554)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:530)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;at SecurityClient.runSecurityClient(SecurityClient.java:111)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;at SecurityClient.main(SecurityClient.java:33)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;Caused by: org.apache.rampart.RampartException: Error in encryption&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;at org.apache.rampart.builder.SymmetricBindingBuilder.doSignBeforeEncrypt(SymmetricBindingBuilder.java:765)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;at org.apache.rampart.builder.SymmetricBindingBuilder.build(SymmetricBindingBuilder.java:86)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;at org.apache.rampart.MessageBuilder.build(MessageBuilder.java:144)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;at org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:65)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;... 11 more&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;Caused by: org.apache.ws.security.WSSecurityException: Cannot encrypt data; nested exception is:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;org.apache.xml.security.encryption.XMLEncryptionException: Illegal key size or default parameters&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;Original Exception was java.security.InvalidKeyException: Illegal key size or default parameters&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;at org.apache.ws.security.message.WSSecEncrypt.doEncryption(WSSecEncrypt.java:608)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;at org.apache.ws.security.message.WSSecEncrypt.doEncryption(WSSecEncrypt.java:461)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;at org.apache.ws.security.message.WSSecEncrypt.encryptForExternalRef(WSSecEncrypt.java:388)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;at org.apache.rampart.builder.SymmetricBindingBuilder.doSignBeforeEncrypt(SymmetricBindingBuilder.java:755)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;... 14 more&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;Reason for this issue could be not installed JCE file to your JRE. First you can check after install JCE file on your JRE. To&amp;nbsp;confirm JCE file installed correctly, you can find following Java source.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #262626; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;class&lt;/span&gt; JCETest &lt;span style="color: purple;"&gt;{&lt;/span&gt;

    &lt;span style="color: maroon; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;static&lt;/span&gt; &lt;span style="color: #bb7977;"&gt;void&lt;/span&gt; main&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #bb7977; font-weight: bold;"&gt;String&lt;/span&gt; args&lt;span style="color: #808030;"&gt;[&lt;/span&gt;&lt;span style="color: #808030;"&gt;]&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: purple;"&gt;{&lt;/span&gt;
        &lt;span style="color: #bb7977;"&gt;int&lt;/span&gt; maxKeyLen &lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #008c00;"&gt;0&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;
        &lt;span style="color: maroon; font-weight: bold;"&gt;try&lt;/span&gt; &lt;span style="color: purple;"&gt;{&lt;/span&gt;
            maxKeyLen &lt;span style="color: #808030;"&gt;=&lt;/span&gt; Cipher&lt;span style="color: #808030;"&gt;.&lt;/span&gt;getMaxAllowedKeyLength&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;"AES"&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;
        &lt;span style="color: purple;"&gt;}&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;catch&lt;/span&gt; &lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #bb7977; font-weight: bold;"&gt;NoSuchAlgorithmException&lt;/span&gt; e&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: purple;"&gt;{&lt;/span&gt;
            Assert&lt;span style="color: #808030;"&gt;.&lt;/span&gt;fail&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;
        &lt;span style="color: purple;"&gt;}&lt;/span&gt;

        Assert&lt;span style="color: #808030;"&gt;.&lt;/span&gt;assertEquals&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #008c00;"&gt;2147483647&lt;/span&gt;&lt;span style="color: #808030;"&gt;,&lt;/span&gt; maxKeyLen&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;
        &lt;span style="color: #bb7977; font-weight: bold;"&gt;System&lt;/span&gt;&lt;span style="color: #808030;"&gt;.&lt;/span&gt;out&lt;span style="color: #808030;"&gt;.&lt;/span&gt;println&lt;span style="color: #808030;"&gt;(&lt;/span&gt;maxKeyLen&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;
    &lt;span style="color: purple;"&gt;}&lt;/span&gt;
&lt;span style="color: purple;"&gt;}&lt;/span&gt;
&lt;/pre&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="color: purple;"&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: rgb(255, 255, 255);"&gt;&lt;/pre&gt;
&lt;pre style="background: rgb(255, 255, 255);"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;AES key size should be equal to the 2147483647 if JCE files has been installed sucessfully.&lt;/span&gt; &lt;/pre&gt;
&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>How to preserving HTTP headers in WSO2 ESB 4.9.0 ?</title><link>http://prabu-lk.blogspot.com/2015/09/how-to-preserving-http-headers-in-wso2.html</link><category>HTTP Headers preserve</category><category>Nhttp</category><category>Passthru</category><category>WSO2  ESB</category><pubDate>Wed, 9 Sep 2015 19:17:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-3459019777636432442</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="background-color: white; color: #222222; font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span id="docs-internal-guid-1438f19c-1a89-bbb4-dd8f-57ced14b7835"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div dir="ltr" style="line-height: 1.68; margin-bottom: 4pt; margin-top: 8pt;"&gt;
&lt;span id="docs-internal-guid-1438f19c-1a89-bbb4-dd8f-57ced14b7835"&gt;&lt;span style="color: black; font-family: Arial; font-size: 13.3333px; vertical-align: baseline; white-space: pre-wrap;"&gt;Preserving HTTP headers are important when executing backend services via applications/middleware. This is because most of the time certain important headers are removed or modified by the applications/middleware which run the communication. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span id="docs-internal-guid-1438f19c-1a89-bbb4-dd8f-57ced14b7835"&gt; &lt;span style="color: black; font-family: Arial; font-size: 13.3333px; vertical-align: baseline; white-space: pre-wrap;"&gt;The previous version of our WSO2 ESB, version 4.8.1, only supported “&lt;/span&gt;&lt;span style="color: black; font-family: Arial; font-size: 13.3333px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"&gt;server&lt;/span&gt;&lt;span style="color: black; font-family: Arial; font-size: 13.3333px; vertical-align: baseline; white-space: pre-wrap;"&gt;” and “&lt;/span&gt;&lt;span style="color: black; font-family: Arial; font-size: 13.3333px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"&gt;user agent&lt;/span&gt;&lt;span style="color: black; font-family: Arial; font-size: 13.3333px; vertical-align: baseline; white-space: pre-wrap;"&gt;” header fields to preserve with, but with the new ESB 4.9.0, we’ve introduced a new new property (&lt;/span&gt;&lt;span style="color: black; font-family: Arial; font-size: 13.3333px; font-style: italic; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;http.headers.preserve&lt;/span&gt;&lt;span style="color: black; font-family: Arial; font-size: 13.3333px; vertical-align: baseline; white-space: pre-wrap;"&gt;) for the passthru&amp;nbsp;(&lt;/span&gt;&lt;span style="color: black; font-family: Arial; font-size: 13.3333px; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;repository/conf/&lt;/span&gt;&lt;span style="color: black; font-family: Arial; font-size: 13.3333px; font-style: italic; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;passthru-http.properties&lt;/span&gt;&lt;span style="color: black; font-family: Arial; font-size: 13.3333px; vertical-align: baseline; white-space: pre-wrap;"&gt;) and Nhttp(&lt;/span&gt;&lt;span style="color: black; font-family: Arial; font-size: 13.3333px; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;repository/conf/&lt;/span&gt;&lt;span style="color: black; font-family: Arial; font-size: 13.3333px; font-style: italic; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;nhttp.properties&lt;/span&gt;&lt;span style="color: black; font-family: Arial; font-size: 13.3333px; vertical-align: baseline; white-space: pre-wrap;"&gt;) transporters to preserve more HTTP headers. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, sans-serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;u&gt;Passthru transporter – support header fields&lt;/u&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;pre style="font-family: 'Courier New'; font-size: 10pt; margin: 0in 0in 0.0001pt; white-space: pre-wrap;"&gt;&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="font-family: Arial, sans-serif; font-size: 10pt;"&gt;Location&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial, sans-serif; font-size: 10pt;"&gt;Keep-Alive&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial, sans-serif; font-size: 10pt;"&gt;Content-Length&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial, sans-serif; font-size: 10pt;"&gt;Content-Type&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial, sans-serif; font-size: 10pt;"&gt;Date&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial, sans-serif; font-size: 10pt;"&gt;Server&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial, sans-serif; font-size: 10pt;"&gt;User-Agent&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial, sans-serif; font-size: 10pt;"&gt;Host&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/pre&gt;
&lt;pre style="font-family: 'Courier New'; font-size: 10pt; margin: 0in 0in 0.0001pt; white-space: pre-wrap;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;b&gt;&lt;u&gt;Nhttp transport – support headers&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="font-family: 'Courier New'; font-size: 10pt; margin: 0in 0in 0.0001pt; white-space: pre-wrap;"&gt;&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="font-family: Arial, sans-serif; font-size: 10pt;"&gt;Server&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial, sans-serif; font-size: 10pt;"&gt;User-Agent&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial, sans-serif; font-size: 10pt;"&gt;Date&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/pre&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;div dir="ltr" style="line-height: 1.68; margin-bottom: 4pt; margin-top: 8pt;"&gt;
&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;You can specify header fields which should be preserved in a comma-separated list, as shown below.&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.68; margin-bottom: 4pt; margin-top: 8pt;"&gt;
&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;http.headers.preserve = Location, Date, Server&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.68; margin-bottom: 4pt; margin-top: 8pt;"&gt;
&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Note &lt;/span&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;that&lt;/span&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; properties&lt;/span&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;(&lt;/span&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 13.333333333333332px; font-style: italic; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;http.user.agent.preserve, http.server.preserve&lt;/span&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;), which were used in ESB 4.8.1 for preserving headers, also works in ESB 4.9.0 - we’ve kept that for the backward compatibility.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>How to enable proxy service security in ESB 4.9.0?</title><link>http://prabu-lk.blogspot.com/2015/09/how-to-enable-proxy-service-security-in.html</link><category>ESB 4.9.0</category><category>Proxy Service</category><category>Security</category><pubDate>Wed, 9 Sep 2015 14:49:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-946355428193138560</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="background-color: white; color: #222222; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Security is &amp;nbsp;one of the major concern when we developing API base integrations or application developments. WSO2 supports &lt;a href="https://en.wikipedia.org/wiki/WS-Security"&gt;WS Security&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/WS-Policy"&gt;WS-Policy&lt;/a&gt; and &lt;a href="https://en.wikipedia.org/wiki/WS-SecurityPolicy"&gt;WS-Security Policy&lt;/a&gt; specifications. These specifications define a behavior model for web services. Proxy service security requirements are different from each others.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #222222; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://wso2.com/products/enterprise-service-bus/"&gt;WSO2 ESB&lt;/a&gt; providing pre-define commonly used twenty security scenarios to choose based on the security requirements. This functionality is provided by the security management feature which is bundled by default in service management feature in ESB. This configuration can be done via the web console until ESB 4.8.1 release, but this has been removed from the ESB 4.9.0. Even though this feature isn't provided by the ESB web console itself same functionality can be achieved by the new &lt;a href="http://wso2.com/products/developer-studio/"&gt;WSO2 Dev Studio&lt;/a&gt;. WSO2 always motivate to use dev studio to prepare required artifacts to the ESB rather than the web console. Better way to explain this scenario is by example. Following example provides guides to the way you need to enable security for the proxy service in newly released &lt;a href="http://wso2.com/products/enterprise-service-bus/"&gt;ESB 4.9.0&lt;/a&gt;.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #222222; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;wbr&gt;&lt;/wbr&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;wbr&gt;&lt;/wbr&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;wbr&gt;&lt;/wbr&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;wbr&gt;&lt;/wbr&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;wbr&gt;&lt;/wbr&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Note:&lt;/b&gt; Understanding the actual security requirement is the first step you need to follow before starting the implementation of the secure proxy service. In this example, I'm selecting basic auth as the security scenario.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #222222; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: 12pt;"&gt;1. As the first step, we need to create proxy service to secure. I'm going to create simple proxy service which front the SimpleStockQuate service.&lt;/span&gt;&lt;br /&gt;
&lt;ol style="text-align: left;"&gt;
&lt;/ol&gt;
&lt;div style="background-color: white; color: #222222; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;/div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-size: 7pt; font-stretch: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;u style="font-size: 12pt;"&gt;&lt;/u&gt;&lt;span style="font-size: 12pt;"&gt;Create ESB config project from the &lt;a href="http://wso2.com/products/developer-studio/"&gt;Developer Studio&lt;/a&gt; dashboard.&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-size: 7pt; font-stretch: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: 12pt;"&gt;Create Proxy service which named SimpleProxy.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6wbWNxqgh3vMTGeUKTgRP1bMSmf-VUWE1gP1_FxYvKVUarawoN2vJLCTOtCTZJeKfNBBSRj5MdHfmNfHFKtSlthOmb6TFIiAwCpIGiHSMGR4v9QCSYg9XSaLK3nK5jr7bjQxxR6YmGICv/s1600/CreateProxy.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="294" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6wbWNxqgh3vMTGeUKTgRP1bMSmf-VUWE1gP1_FxYvKVUarawoN2vJLCTOtCTZJeKfNBBSRj5MdHfmNfHFKtSlthOmb6TFIiAwCpIGiHSMGR4v9QCSYg9XSaLK3nK5jr7bjQxxR6YmGICv/s320/CreateProxy.png" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="background-color: white; color: #222222; font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="background-color: white; color: #222222; font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="background-color: white; color: #222222; font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="background-color: white; color: #222222; font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="background-color: white; color: #222222; font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="background-color: white; color: #222222; font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="background-color: white; color: #222222; font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="background-color: white; color: #222222; font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="background-color: white; color: #222222; font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;2. We need to define security policy file to enable security for the proxy service. Registry resource project needs to create for storing policy file.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: 12pt;"&gt;
&lt;li&gt;&lt;span style="font-size: 12pt;"&gt;Create Registry resource artifact(SecurityPolicy - Resource type should be WS-Policy)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background-color: white; color: #222222; font-size: 12pt;"&gt;Select design view of the SecurityPolicy.xml file. You can see all pre-defined security scenarios listed in this view. In this example, I'm selecting &lt;/span&gt;UserNameToken&lt;span style="background-color: white; color: #222222; font-size: 12pt;"&gt; scenario. Under this scenario, we need to select user rolls which allow to access the service. This option &lt;/span&gt;allow&lt;span style="background-color: white; color: #222222; font-size: 12pt;"&gt; you to select rolls inline and select available rolls from the ESB.&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;/span&gt;&lt;/ul&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: 12pt;"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;div style="background-color: white; color: #222222; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0.5in; margin-right: 0in;"&gt;
&lt;/div&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhf4nCuspn2vr8NhgEDjJOpy0J0Ef4Atf624C6l0WBJSpXG9lByRC36fP_PcFHMqskXjBmpjgX5tZvrKUgaVFyvRDOu2FxLnGPbvPlBtY8pUSwF0NnNaw4XOzL7noje9OCbXGZlhW6jS0Li/s1600/policyList.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="232" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhf4nCuspn2vr8NhgEDjJOpy0J0Ef4Atf624C6l0WBJSpXG9lByRC36fP_PcFHMqskXjBmpjgX5tZvrKUgaVFyvRDOu2FxLnGPbvPlBtY8pUSwF0NnNaw4XOzL7noje9OCbXGZlhW6jS0Li/s320/policyList.png" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWvQmK_KQLbWl8KfxT8KZvKtM6cXalh5Bm0IwA54qUANA6bmcj94bzTzso5mWsd95oAo7ja4lWp-jvYDExav0_zbp6RRsPtETLJFvCMZ8FVeCPodlzTsbdRn5lJLkvXP6HrGFEwLGIrRjm/s1600/policy.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWvQmK_KQLbWl8KfxT8KZvKtM6cXalh5Bm0IwA54qUANA6bmcj94bzTzso5mWsd95oAo7ja4lWp-jvYDExav0_zbp6RRsPtETLJFvCMZ8FVeCPodlzTsbdRn5lJLkvXP6HrGFEwLGIrRjm/s1600/policy.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWvQmK_KQLbWl8KfxT8KZvKtM6cXalh5Bm0IwA54qUANA6bmcj94bzTzso5mWsd95oAo7ja4lWp-jvYDExav0_zbp6RRsPtETLJFvCMZ8FVeCPodlzTsbdRn5lJLkvXP6HrGFEwLGIrRjm/s320/policy.png" width="291" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;3. Now we have both proxy service and security policy file. Next step is to enable security using defined policy file. Proxy service properties&amp;nbsp;has&lt;span style="font-size: 12pt;"&gt; &lt;/span&gt;separate&lt;span style="font-size: 12pt;"&gt; section for the security. It contains two properties which required for enabling security.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ol style="text-align: left;"&gt;
&lt;/ol&gt;
&lt;ul style="text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: 12pt;"&gt;
&lt;li&gt;&lt;span style="font-size: 12pt;"&gt;Security Enabled – This property should be True for enabling security&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: 12pt;"&gt;Service Policy – You need to select defined security policy file as a value of this &lt;/span&gt;&lt;span style="font-size: 12pt;"&gt;field&lt;/span&gt;&lt;span style="font-size: 12pt;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;/span&gt;&lt;/ul&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: 12pt;"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0.5in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6JtI6AFrnrRY_K4NnEECfIigrPxyicdb-AqNfbLlaRSqrn9oIg4DXBUk5mnpFOJR5kafdu8a-di_U4Dw5Bdu3WSk8Llny8SXeRuqhF_bLJbvO1tz-D_Mvf_0-VqRW9U88bUIWzb7m7DZX/s1600/selectpolicy.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="122" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6JtI6AFrnrRY_K4NnEECfIigrPxyicdb-AqNfbLlaRSqrn9oIg4DXBUk5mnpFOJR5kafdu8a-di_U4Dw5Bdu3WSk8Llny8SXeRuqhF_bLJbvO1tz-D_Mvf_0-VqRW9U88bUIWzb7m7DZX/s400/selectpolicy.png" width="400" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size: 12pt;"&gt;4. Now Security configurations &lt;/span&gt;has&lt;span style="font-size: 12pt;"&gt; been finished. Next step is to create CAR file to deploy into the ESB. We have two options to deploy artifacts into the EBS.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;&lt;ul&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: 12pt;"&gt; &lt;/span&gt;&lt;/ul&gt;
&lt;li&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size: 12pt;"&gt;Export artifacts as a CAR file from Developer Studio and upload &lt;/span&gt;file&lt;span style="font-size: 12pt;"&gt; to the ESB as a carbon application.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: 12pt;"&gt; &lt;/span&gt;&lt;/ul&gt;
&lt;li&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: 12pt;"&gt;Configure ESB as a server inside the Developer Studio and deploy directly.&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: 12pt;"&gt; &lt;/span&gt;&lt;/ul&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: 12pt;"&gt; &lt;/span&gt;&lt;/ul&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: 12pt;"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjopK03LpIepvLnsccbEmdyoYDZldulTIZAvWbQptznNuECaOa4EaVSafJCiYEwEApKfWucNp4Y08BcOmuD5d5WX7B1CkLl35erhcIUzvN4CrevjxNnX-hulYOAKw4ux7awmWQDXMd4KnmR/s1600/composite.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjopK03LpIepvLnsccbEmdyoYDZldulTIZAvWbQptznNuECaOa4EaVSafJCiYEwEApKfWucNp4Y08BcOmuD5d5WX7B1CkLl35erhcIUzvN4CrevjxNnX-hulYOAKw4ux7awmWQDXMd4KnmR/s320/composite.png" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;We are going to use first option in this example. Since we need to export both ESB config and registry project to the single car file, we need to add “Composite Application Project” to the Dev Studio and need to associate previous setup applications (ESB Config , Registry resource). You can export CAR file easily by selecting “Export Composite Application Project” option from the menu which pop up for the right click.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;5. WO2 ESB providing very simple way to install car file by just select and upload way.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size: 12pt;"&gt;You can find this option(“Carbon Applications"&lt;/span&gt;&lt;span style="font-size: 12pt;"&gt;) in the bottom of the right-hand side menu.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;When you click on the Service List menu you can see the deployed proxy service(“SimpleProxy”)&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;with enable security.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzXe6t7RehhAQqr_oRwlGk9iHG34MbhDPaRoiX3VIqx7nBowEw40nGcU_xZcKOxe-rhzo9YYcWi-wJFItz_awEZTuQ90FHEiet-vQE6eqNgAH_EH5rvYrqiGumJmqOQA_n7pHei2fop-k1/s1600/ProxyView.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="70" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzXe6t7RehhAQqr_oRwlGk9iHG34MbhDPaRoiX3VIqx7nBowEw40nGcU_xZcKOxe-rhzo9YYcWi-wJFItz_awEZTuQ90FHEiet-vQE6eqNgAH_EH5rvYrqiGumJmqOQA_n7pHei2fop-k1/s320/ProxyView.png" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;6. You can simple Test this proxy service by “Try this service” feature which provided by th ESB itself. You have to fill the userName and password fields before sending the request.&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2_7q5gaVxylp_FGCSMKFmT8129nUA2vPt9eRLqc1vCxrFwTNDUWrs7EU7BFIllTBuLrX-YD4hVRUls0pIW-QhiA8L_wpfMsd-bBDJuxz7lviSlozpcjHFuv1LxKru-k-Qt62muThaxbSi/s1600/TestNew.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" class="" height="192" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2_7q5gaVxylp_FGCSMKFmT8129nUA2vPt9eRLqc1vCxrFwTNDUWrs7EU7BFIllTBuLrX-YD4hVRUls0pIW-QhiA8L_wpfMsd-bBDJuxz7lviSlozpcjHFuv1LxKru-k-Qt62muThaxbSi/s320/TestNew.png" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Likewise, you can try other predefined scenarios or your own security implementation with the custom policy.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="im" style="background-color: white; color: #500050; font-size: 12.8px;"&gt;&lt;/span&gt;&lt;span class="im" style="background-color: white; color: #500050; font-size: 12.8px;"&gt;&lt;/span&gt;&lt;span class="im" style="background-color: white; color: #500050; font-size: 12.8px;"&gt;&lt;/span&gt;&lt;span class="im" style="background-color: white; color: #500050; font-size: 12.8px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style="font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6wbWNxqgh3vMTGeUKTgRP1bMSmf-VUWE1gP1_FxYvKVUarawoN2vJLCTOtCTZJeKfNBBSRj5MdHfmNfHFKtSlthOmb6TFIiAwCpIGiHSMGR4v9QCSYg9XSaLK3nK5jr7bjQxxR6YmGICv/s72-c/CreateProxy.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>No snappyjava in java.library.path Exception when running WSO2 Message Broker 2.2.0 in MAC OS</title><link>http://prabu-lk.blogspot.com/2015/07/no-snappyjava-in-javalibrarypath.html</link><category>WSO2 MB</category><pubDate>Thu, 16 Jul 2015 10:48:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-7003002197679442711</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
You can see the following exception when you running WSO2 MB 2.2.0 top of the MAC OS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="p1"&gt;
java.lang.reflect.InvocationTargetException&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at java.lang.reflect.Method.invoke(Method.java:606)&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at org.xerial.snappy.SnappyLoader.loadNativeLibrary(SnappyLoader.java:317)&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at org.xerial.snappy.SnappyLoader.load(SnappyLoader.java:219)&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at org.xerial.snappy.Snappy.&lt;clinit&gt;(Snappy.java:44)&lt;/clinit&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at org.apache.cassandra.io.compress.SnappyCompressor.create(SnappyCompressor.java:45)&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at org.apache.cassandra.io.compress.SnappyCompressor.isAvailable(SnappyCompressor.java:55)&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at org.apache.cassandra.io.compress.SnappyCompressor.&lt;clinit&gt;(SnappyCompressor.java:37)&lt;/clinit&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at org.apache.cassandra.config.CFMetaData.&lt;clinit&gt;(CFMetaData.java:82)&lt;/clinit&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at org.apache.cassandra.config.KSMetaData.systemKeyspace(KSMetaData.java:81)&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at org.apache.cassandra.config.DatabaseDescriptor.loadYaml(DatabaseDescriptor.java:491)&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at org.apache.cassandra.config.DatabaseDescriptor.&lt;clinit&gt;(DatabaseDescriptor.java:132)&lt;/clinit&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:216)&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:447)&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at org.wso2.carbon.cassandra.server.CassandraServerController$1.run(CassandraServerController.java:67)&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at java.lang.Thread.run(Thread.java:745)&lt;/div&gt;
&lt;div class="p1"&gt;
Caused by: java.lang.UnsatisfiedLinkError: no snappyjava in java.library.path&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886)&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at java.lang.Runtime.loadLibrary0(Runtime.java:849)&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at java.lang.System.loadLibrary(System.java:1088)&lt;/div&gt;
&lt;br /&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;at org.xerial.snappy.SnappyNativeLoader.loadLibrary(SnappyNativeLoader.java:52)&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;b&gt;Solution.&lt;/b&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;/div&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;Clone the&amp;nbsp;&lt;a href="https://github.com/xerial/snappy-java"&gt;https://github.com/xerial/snappy-java&lt;/a&gt;&amp;nbsp;repository to you machine.&lt;/li&gt;
&lt;li&gt;Run "make" command inside the cloned directory.&lt;/li&gt;
&lt;li&gt;Copy&amp;nbsp;"target/snappy-1.1.1-Mac-x86_64/libsnappyjava.jnilib" file in to the MB home directory. This will fix the issue.&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>MQ Telemetry Transport Protocol for IOT</title><link>http://prabu-lk.blogspot.com/2015/01/mq-telemetry-transport-protocol-for-iot.html</link><category>IOT</category><category>M2M</category><category>MQTT</category><pubDate>Fri, 2 Jan 2015 00:02:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-1715147662222180506</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://mqtt.org/"&gt;MQTT&lt;/a&gt; protocol is a lightweight, open and simple network protocol&amp;nbsp;for the device communications. It&amp;nbsp;&lt;span style="background-color: white; color: #333333; line-height: 25.6000003814697px;"&gt;is&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white;"&gt;based on the principle of publishing messages and subscribing to topics, or "pub/sub".&lt;/span&gt;&amp;nbsp;The protocol runs over TCP/IP, or over other network protocols that provide ordered, lossless, bi-directional connections.&amp;nbsp;It was designed for the&amp;nbsp;&lt;span style="background-color: white; color: #333333; line-height: 25.6000003814697px;"&gt;low-bandwidth, high latency networks in the late 1990s/early 2000s and its support to connect over thousands of clients to a single server. This characteristic is a suite for the devices which has very limited&amp;nbsp;processing powers and limited memory, such as sensors, mobile devices, monitoring devices. Since It provides a&amp;nbsp;common interface for everything, new sensors or devices can integrate very easily with the system. &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="background-color: white; color: #333333; line-height: 25.6000003814697px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF1jr2XfAQXm4TvkEnJdQzJTZbbuOpN13p62majIBdwT_s5p-PzWWO9QDkyRmMYoyOqm4KNq4F-FancNRVcBVzCgTEpZ4YZlWT3jECUSVoalr7Qf-qrJz9cK9PAX_KF_F33-yV5ZLjoXGj/s1600/MQTT.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF1jr2XfAQXm4TvkEnJdQzJTZbbuOpN13p62majIBdwT_s5p-PzWWO9QDkyRmMYoyOqm4KNq4F-FancNRVcBVzCgTEpZ4YZlWT3jECUSVoalr7Qf-qrJz9cK9PAX_KF_F33-yV5ZLjoXGj/s1600/MQTT.png" height="182" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="background-color: white; color: #333333; line-height: 25.6000003814697px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="background-color: white; color: #333333; line-height: 25.6000003814697px;"&gt;Message in &lt;a href="http://mqtt.org/"&gt;MQTT&lt;/a&gt; is published on topics. These topics are treated as a&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white;"&gt;hierarchy separate using slash(/) as a separator like in &amp;nbsp;the file system.&lt;/span&gt;&lt;span style="background-color: white;"&gt;Clients can receive messages by creating subscriptions. A subscription may be to an explicit topic, in which case only messages in that topic will be received, or it may include wildcards.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="background-color: white;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="background-color: white;"&gt;&lt;b&gt;Eg:-&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;sensors/COMPUTER_NAME/temperature/HARDDRIVE_NAME&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="background-color: white;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="background-color: white;"&gt;Two wildcards are available,&amp;nbsp;&lt;/span&gt;&lt;code class="option" style="background-color: white;"&gt;&lt;b&gt;+&lt;/b&gt;&amp;nbsp;&lt;/code&gt;&lt;span style="background-color: white;"&gt;or&amp;nbsp;&lt;/span&gt;&lt;code class="option" style="background-color: white;"&gt;&lt;b&gt;#&lt;/b&gt;&lt;/code&gt;&lt;span style="background-color: white;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="background-color: white;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;b&gt;&lt;code class="option" style="background-color: white;"&gt;+&lt;/code&gt;&lt;span style="background-color: white;"&gt;&amp;nbsp;can be used as a wildcard for a single level of hierarchy.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul class="itemizedlist" style="background-color: white;"&gt;
&lt;li class="listitem"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;sensors/+/temperature/+&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;&lt;code class="option" style="background-color: white;"&gt;#&lt;/code&gt;&lt;span style="background-color: white;"&gt;&amp;nbsp;can be used as a wildcard for all remaining levels of hierarchy.&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="background-color: white; font-family: Arial, Helvetica, sans-serif;"&gt;sensors/#&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://mqtt.org/"&gt;MQTT&lt;/a&gt; defines three levels of quality of service(QoS). This QoS define how messages are travel through the protocol. As an example, we can get a parcel sending through the normal mail or courier service. Courier service assures the delivery but normal mail not providing it.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="background-color: white; border: 0px; color: #222222; font-weight: bold; line-height: 18px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"&gt;QoS 0 - At most once delivery:&lt;/span&gt;&lt;span style="background-color: white; color: #222222; line-height: 18px;"&gt;&amp;nbsp;With this setting, messages are delivered according to the best effort of the underlying network.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="background-color: white; border: 0px; color: #222222; font-weight: bold; line-height: 18px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"&gt;QoS 1 - At least Once Delivery:&lt;/span&gt;&lt;span style="background-color: white; color: #222222; line-height: 18px;"&gt;&amp;nbsp;For this level of service, the &lt;a href="http://mqtt.org/"&gt;MQTT&lt;/a&gt; client or the server would attempt to deliver the message at-least once.&lt;/span&gt;&lt;span style="background-color: white; color: #222222; line-height: 18px;"&gt;But there can be a duplicate message.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="background-color: white; border: 0px; color: #222222; font-weight: bold; line-height: 18px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"&gt;QoS 2 - Exactly once delivery:&lt;/span&gt;&lt;span style="background-color: white; color: #222222; line-height: 18px;"&gt;&amp;nbsp;This is the highest level of Quality of Service. Additional protocol flows ensure that duplicate messages are not delivered to the receiving application.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; line-height: 18px;"&gt;&lt;b&gt;MQTT Server/Broker&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="background-color: white; line-height: 18px;"&gt;&lt;span style="color: #222222; font-family: Arial, Helvetica, sans-serif;"&gt;&lt;a href="https://github.com/mqtt/mqtt.github.io/wiki/servers"&gt;https://github.com/mqtt/mqtt.github.io/wiki/servers&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="background-color: white; line-height: 18px;"&gt;&lt;span style="color: #222222; font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="background-color: white; line-height: 18px;"&gt;&lt;span style="color: #222222; font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;MQTT Clients&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="background-color: white; line-height: 18px;"&gt;&lt;span style="color: #222222; font-family: Arial, Helvetica, sans-serif;"&gt;&lt;a href="https://github.com/mqtt/mqtt.github.io/wiki/libraries"&gt;https://github.com/mqtt/mqtt.github.io/wiki/libraries&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="background-color: white;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF1jr2XfAQXm4TvkEnJdQzJTZbbuOpN13p62majIBdwT_s5p-PzWWO9QDkyRmMYoyOqm4KNq4F-FancNRVcBVzCgTEpZ4YZlWT3jECUSVoalr7Qf-qrJz9cK9PAX_KF_F33-yV5ZLjoXGj/s72-c/MQTT.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>Basic HTTP Authentication for REST Web Service</title><link>http://prabu-lk.blogspot.com/2014/08/basic-http-authentication-for-rest-web.html</link><category>basic authentication</category><category>cuubez</category><category>jaxrs</category><category>rest</category><category>restful web service</category><pubDate>Tue, 19 Aug 2014 13:39:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-2885116845264422418</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
Basic HTTP authentication solve following security problems.&lt;/div&gt;
&lt;ul style="font-family: arial, sans-serif; font-size: 13px; max-width: 62em; padding-left: 25px;"&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;Get username and password from http request&lt;/li&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;Fetch the applicable method security details&lt;/li&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;Verify if user is authorized to access the API&lt;/li&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;Return valid error codes in case of invalid access&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
In this tutorial, we show you how to develop a simple RESTfull web service application with HTTP basic authentication using Cuubez framwork.&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
Technologies and Tools used in this article:&lt;/div&gt;
&lt;ol style="font-family: arial, sans-serif; font-size: 13px; max-width: 62em; padding-left: 25px;"&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;cuubez 1.1.1&lt;/li&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;JDK 1.6&lt;/li&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;Tomcat 6.0&lt;/li&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;Maven 3.0.3&lt;/li&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;Intellij IDEA 13.1.1&lt;/li&gt;
&lt;/ol&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;strong&gt;Note:&lt;/strong&gt;&amp;nbsp;If you want to know what and how REST works, just search on Google, ton of available resources.&lt;/div&gt;
&lt;h1 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: x-large; margin-top: 0px; max-width: 700px; padding-left: 0px;"&gt;
&lt;br /&gt;&lt;/h1&gt;
&lt;h1 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: x-large; margin-top: 0px; max-width: 700px; padding-left: 0px;"&gt;
&lt;a href="https://www.blogger.com/null" name="1._Directory_Structure"&gt;&lt;/a&gt;1. Directory Structure&lt;/h1&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
This is the final web project structure of this tutorial.&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;img src="http://cuubez.com/downloads/examples/basic_authentication/packageStructure.png" style="border: 0px; max-width: 100%;" /&gt;&lt;/div&gt;
&lt;h1 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: x-large; margin-top: 0px; max-width: 700px; padding-left: 0px;"&gt;
&lt;br /&gt;&lt;/h1&gt;
&lt;h1 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: x-large; margin-top: 0px; max-width: 700px; padding-left: 0px;"&gt;
&lt;a href="https://www.blogger.com/null" name="2._Standard_Web_Project"&gt;&lt;/a&gt;2. Standard Web Project&lt;/h1&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
Create a standard Maven web project structure.&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO2K8yzTwbFPv53NugpgvuW3v8wky3AfEVwqcekjRkEKRzxIs-9AkLP_-euhxjwwq11-6imfi7BqkM8LPJnYR7zLcCSnJ0ZQY9gTBpZ5nHvTT_VsRxU7m_FUdMRg2U2N8zyldGnMt0fg-p/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; mvn archetype:generate -DgroupId=com.cuubez -DartifactId=basic_authentication -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false  
&lt;/code&gt;&lt;/pre&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;strong&gt;Note:&lt;/strong&gt;&amp;nbsp;To support IntelliJ IDEA, use Maven command :&lt;/div&gt;
&lt;pre class="prettyprint" style="background-color: #eeeeee; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; font-size: 12px; max-width: 70em; overflow: auto; padding: 0.5em;"&gt;&lt;span class="pln"&gt;mvn idea&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;:&lt;/span&gt;&lt;span class="pln"&gt;idea&lt;/span&gt;&lt;/pre&gt;
&lt;h1 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: x-large; margin-top: 0px; max-width: 700px; padding-left: 0px;"&gt;
&lt;br /&gt;&lt;/h1&gt;
&lt;h1 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: x-large; margin-top: 0px; max-width: 700px; padding-left: 0px;"&gt;
&lt;a href="https://www.blogger.com/null" name="3._Project_Dependencies"&gt;&lt;/a&gt;3. Project Dependencies&lt;/h1&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
Cuubez is published in Maven repository. To develop cuubez REST application , just declares “cuubez-core” in Maven&amp;nbsp;pom.xml.&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;i&gt;File : pom.xml&lt;/i&gt;&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;
&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO2K8yzTwbFPv53NugpgvuW3v8wky3AfEVwqcekjRkEKRzxIs-9AkLP_-euhxjwwq11-6imfi7BqkM8LPJnYR7zLcCSnJ0ZQY9gTBpZ5nHvTT_VsRxU7m_FUdMRg2U2N8zyldGnMt0fg-p/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;dependency&amp;gt;  
   &amp;lt;groupId&amp;gt;com.cuubez&amp;lt;/groupId&amp;gt;  
   &amp;lt;artifactId&amp;gt;cuubez-core&amp;lt;/artifactId&amp;gt;  
   &amp;lt;version&amp;gt;1.1.1&amp;lt;/version&amp;gt;  
  &amp;lt;/dependency&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: x-large; margin-top: 0px; max-width: 700px; padding-left: 0px;"&gt;
&lt;br /&gt;&lt;/h1&gt;
&lt;h1 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: x-large; margin-top: 0px; max-width: 700px; padding-left: 0px;"&gt;
4. REST Service&lt;/h1&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
Simple REST service with basic HTTP authentication annotations.&lt;/div&gt;
&lt;ul style="font-family: arial, sans-serif; font-size: 13px; max-width: 62em; padding-left: 25px;"&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;@PermitAll: Specifies that all security roles are allowed to invoke the specified method(s)&lt;/li&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;@RolesAllowed: Specifies the list of roles permitted to access method(s)&lt;/li&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;@DenyAll: Specifies that no security roles are allowed to invoke the specified method(s)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO2K8yzTwbFPv53NugpgvuW3v8wky3AfEVwqcekjRkEKRzxIs-9AkLP_-euhxjwwq11-6imfi7BqkM8LPJnYR7zLcCSnJ0ZQY9gTBpZ5nHvTT_VsRxU7m_FUdMRg2U2N8zyldGnMt0fg-p/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; @Path("/users/{userId}")  
 @Produces(MediaType.APPLICATION_JSON)  
 public class UserResource {  
   private static Log log = LogFactory.getLog(UserResource.class);  
   @PermitAll  
   @GET  
   @Produces(MediaType.APPLICATION_JSON)  
   public Response userGet(@HeaderParam(value = "name") String name, @PathParam(value = "userId") String id, @QueryParam(value = "age") Double age) {  
     User user = new User(id, age, name);  
     return Response.ok().entity(user).build();  
   }  
   @RolesAllowed("ADMIN")  
   @Consumes(MediaType.APPLICATION_JSON)  
   @POST  
   public void userPost(User user) {  
     log.info("POST = [" + user + "]");  
   }  
   @DenyAll  
   @PUT  
   @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})  
   public void userPut(User user) {  
     log.info("PUT = [" + user + "]");  
   }  
 }  
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: x-large; margin-top: 0px; max-width: 700px; padding-left: 0px;"&gt;
&lt;br /&gt;&lt;/h1&gt;
&lt;h1 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: x-large; margin-top: 0px; max-width: 700px; padding-left: 0px;"&gt;
5. Authentication filter&lt;/h1&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
The security interceptor is build by implementing&amp;nbsp;&lt;strong&gt;com.cuubez.core.Interceptor.RequestInterceptor&lt;u&gt;&amp;nbsp;&lt;/u&gt;&lt;/strong&gt;interface. This interface has one method which need to implement.&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO2K8yzTwbFPv53NugpgvuW3v8wky3AfEVwqcekjRkEKRzxIs-9AkLP_-euhxjwwq11-6imfi7BqkM8LPJnYR7zLcCSnJ0ZQY9gTBpZ5nHvTT_VsRxU7m_FUdMRg2U2N8zyldGnMt0fg-p/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; @Provider  
 public class AuthenticationFilter implements RequestInterceptor {  
   private final InterceptorResponseContext ACCESS_FORBIDDEN = new InterceptorResponseContext("No access", HttpServletResponse.SC_FORBIDDEN);  
   public InterceptorResponseContext process(InterceptorRequestContext interceptorRequestContext) {  
     if (interceptorRequestContext.isAnnotationContain(DenyAll.class)) {  
       return ACCESS_FORBIDDEN; //Return access denied to user  
     } else if (interceptorRequestContext.isAnnotationContain(PermitAll.class)) {  
       return null; //Return null to continue request processing  
     } else if (interceptorRequestContext.isAnnotationContain(RolesAllowed.class)) {  
       //get encoded user name and password  
       String encodedUserName = interceptorRequestContext.getHeader("userName");  
       String encodedPassword = interceptorRequestContext.getHeader("password");  
       //decode user name and password  
       String decodedUserName = new String(Base64.decodeBase64(encodedUserName.getBytes()));  
       String decodedPassword = new String(Base64.decodeBase64(encodedPassword.getBytes()));  
       //get allowed user roles  
       String[] allowedRoles = ((RolesAllowed) interceptorRequestContext.getAnnotation(RolesAllowed.class)).value();  
       //Access userAccessor to retrieve user details(UserAccessor is not providing by framework, developer need to implement it according their requirement)  
       UserAccessor userAccessor = new UserAccessor();  
       String role = userAccessor.getUserRole(decodedUserName, decodedPassword);  
       if(isAllow(allowedRoles, role)) {  
         return null;  
       } else {  
         return ACCESS_FORBIDDEN;  
       }  
     }  
     return null;  
   }  
   private boolean isAllow(final String[] allowedRoles, final String userRole) {  
     for (String allRole : allowedRoles) {  
       if (allRole.equals(userRole)) {  
         return true;  
       }  
     }  
     return false;  
   }  
 }  
&lt;/code&gt;&lt;/pre&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
This interceptor mechanism provide full flexibility to developer.&lt;/div&gt;
&lt;h1 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: x-large; margin-top: 0px; max-width: 700px; padding-left: 0px;"&gt;
&lt;br /&gt;&lt;/h1&gt;
&lt;h1 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: x-large; margin-top: 0px; max-width: 700px; padding-left: 0px;"&gt;
&lt;a href="https://www.blogger.com/null" name="6._web.xml"&gt;&lt;/a&gt;6. web.xml&lt;/h1&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
The&amp;nbsp;&lt;strong&gt;ContextLoaderListner&lt;/strong&gt;&amp;nbsp;context listener has to be deployed in order to create the registry for cuubez ,while the&amp;nbsp;&lt;strong&gt;ServiceInitiator&lt;/strong&gt;&amp;nbsp;servlet is used so that incoming requests are correctly routed to the appropriate services. We have configured the specific servlet, named&amp;nbsp;&lt;strong&gt;“cuubez”&lt;/strong&gt;, to intercept requests under the&amp;nbsp;&lt;strong&gt;“/rest/”&lt;/strong&gt;&amp;nbsp;path.&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;i&gt;File : web.xml&lt;/i&gt;&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO2K8yzTwbFPv53NugpgvuW3v8wky3AfEVwqcekjRkEKRzxIs-9AkLP_-euhxjwwq11-6imfi7BqkM8LPJnYR7zLcCSnJ0ZQY9gTBpZ5nHvTT_VsRxU7m_FUdMRg2U2N8zyldGnMt0fg-p/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;web-app&amp;gt;  
  &amp;lt;display-name&amp;gt;Employee Example&amp;lt;/display-name&amp;gt;  
   &amp;lt;listener&amp;gt;  
     &amp;lt;listener-class&amp;gt;com.cuubez.core.servlet.BootstrapContextListener&amp;lt;/listener-class&amp;gt;  
   &amp;lt;/listener&amp;gt;  
   &amp;lt;servlet-mapping&amp;gt;  
    &amp;lt;servlet-name&amp;gt;init&amp;lt;/servlet-name&amp;gt;  
    &amp;lt;url-pattern&amp;gt;/rest/*&amp;lt;/url-pattern&amp;gt;  
   &amp;lt;/servlet-mapping&amp;gt;  
   &amp;lt;servlet&amp;gt;  
    &amp;lt;servlet-name&amp;gt;init&amp;lt;/servlet-name&amp;gt;  
    &amp;lt;servlet-class&amp;gt;com.cuubez.core.servlet.HttpServletDispatcher&amp;lt;/servlet-class&amp;gt;  
   &amp;lt;/servlet&amp;gt;  
 &amp;lt;/web-app&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: x-large; margin-top: 0px; max-width: 700px; padding-left: 0px;"&gt;
&lt;br /&gt;&lt;/h1&gt;
&lt;h1 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: x-large; margin-top: 0px; max-width: 700px; padding-left: 0px;"&gt;
7. Demo&lt;/h1&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
In this example, web request from&amp;nbsp;&lt;strong&gt;“projectURL/rest/users/{userId}”&lt;/strong&gt;&amp;nbsp;will match to&amp;nbsp;&lt;strong&gt;“UserResource“&lt;/strong&gt;, via&amp;nbsp;&lt;strong&gt;@Path("/users/{userId}")&lt;/strong&gt;.&lt;/div&gt;
&lt;blockquote style="font-family: arial, sans-serif; font-size: 13px; margin: 20px; max-width: 60em;"&gt;
&lt;h3 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-size: medium; margin: 0px; max-width: 700px; padding: 0.5ex 0.5em 0.5ex 0px;"&gt;
&lt;a href="https://www.blogger.com/null" name="1._GET_request"&gt;&lt;/a&gt;1. GET request&lt;/h3&gt;
&lt;/blockquote&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
(GET resource annotated by&amp;nbsp;&lt;strong&gt;@PermitAll&lt;/strong&gt;&amp;nbsp;annotation. Specifies that all security roles are allowed to invoke the specified method(s))&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;img src="http://cuubez.com/downloads/examples/basic_authentication/get.png" style="border: 0px; max-width: 100%;" /&gt;&lt;/div&gt;
&lt;blockquote style="font-family: arial, sans-serif; font-size: 13px; margin: 20px; max-width: 60em;"&gt;
&lt;h3 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-size: medium; margin: 0px; max-width: 700px; padding: 0.5ex 0.5em 0.5ex 0px;"&gt;
&lt;a href="https://www.blogger.com/null" name="2._POST_request"&gt;&lt;/a&gt;2. POST request&lt;/h3&gt;
&lt;/blockquote&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
(POST request annotated by&amp;nbsp;&lt;strong&gt;@RolesAllowed&lt;/strong&gt;&amp;nbsp;annotation.&amp;nbsp;&lt;strong&gt;ADMIN&lt;/strong&gt;&amp;nbsp;role permitted to access method(s))&lt;/div&gt;
&lt;ul style="font-family: arial, sans-serif; font-size: 13px; max-width: 62em; padding-left: 25px;"&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;Forbidden request (Wrong encoded(Base64) user name and password passed as a header variables)&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;img src="http://cuubez.com/downloads/examples/basic_authentication/post_unsuccess.png" style="border: 0px; max-width: 100%;" /&gt;&lt;/div&gt;
&lt;ul style="font-family: arial, sans-serif; font-size: 13px; max-width: 62em; padding-left: 25px;"&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;Successful request (Correct encoded(Base64) user name and password passed as a header variables)&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;img src="http://cuubez.com/downloads/examples/basic_authentication/post_success.png" style="border: 0px; max-width: 100%;" /&gt;&lt;/div&gt;
&lt;blockquote style="font-family: arial, sans-serif; font-size: 13px; margin: 20px; max-width: 60em;"&gt;
&lt;h3 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-size: medium; margin: 0px; max-width: 700px; padding: 0.5ex 0.5em 0.5ex 0px;"&gt;
&lt;a href="https://www.blogger.com/null" name="3._PUT_request"&gt;&lt;/a&gt;3. PUT request&lt;/h3&gt;
&lt;/blockquote&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
(PUT resource annotated by&amp;nbsp;&lt;strong&gt;@DenyAll&lt;/strong&gt;&amp;nbsp;annotation. Specifies that no security roles are allowed to invoke the specified method(s))&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;img src="http://cuubez.com/downloads/examples/basic_authentication/put.png" style="border: 0px; max-width: 100%;" /&gt;&lt;/div&gt;
&lt;h1 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: x-large; margin-top: 0px; max-width: 700px; padding-left: 0px;"&gt;
&lt;br /&gt;&lt;/h1&gt;
&lt;h1 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: x-large; margin-top: 0px; max-width: 700px; padding-left: 0px;"&gt;
8. Download&lt;a class="section_anchor" href="https://code.google.com/p/cuubez/wiki/Basic_http_authentication_sample#7._Download" style="color: #bbbbbb; display: inline; font-size: 20px; font-weight: lighter; margin-left: 0.7em; text-decoration: none;"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h3 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: medium; margin: 0px; max-width: 700px; padding: 0.5ex 0.5em 0.5ex 0px;"&gt;
&lt;a href="https://www.blogger.com/null" name="Download_Basic_Authentication_Sample_Application_-"&gt;&lt;/a&gt;Download Basic Authentication Sample Application -&amp;nbsp;&lt;a href="http://cuubez.com/downloads/examples/basic_authentication/basic-authentication.zip" rel="nofollow" style="color: #0000cc;"&gt;Basic-Authentication.zip&lt;/a&gt;&lt;/h3&gt;
&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>Embedded jetty for JAXRS</title><link>http://prabu-lk.blogspot.com/2014/08/embedded-jetty-for-jaxrs.html</link><category>cuubez</category><category>jaxrs</category><category>jetty</category><category>rest</category><pubDate>Tue, 19 Aug 2014 13:30:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-7521057347193595363</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
In this tutorial, we show you how to develop a simple RESTfull web service application with embedded jetty server using cuubez framwork.&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
Technologies and Tools used in this article:&lt;/div&gt;
&lt;ol style="font-family: arial, sans-serif; font-size: 13px; max-width: 62em; padding-left: 25px;"&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;cuubez 1.1.1&lt;/li&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;JDK 1.7&lt;/li&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;Maven 3.0.3&lt;/li&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;Intellij IDEA 13.1.1&lt;/li&gt;
&lt;/ol&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;strong&gt;Note:&lt;/strong&gt;&amp;nbsp;If you want to know what and how REST works, just search on Google, ton of available resources.&lt;/div&gt;
&lt;h2 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: large; max-width: 700px; padding-left: 0px;"&gt;
&lt;a href="https://www.blogger.com/null" name="1._Directory_Structure"&gt;&lt;/a&gt;1. Directory Structure&lt;/h2&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
This is the final web project structure of this tutorial.&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;img src="http://www.cuubez.com/downloads/examples/embedded_jetty/jetty-package.png" style="border: 0px; max-width: 100%;" /&gt;&lt;/div&gt;
&lt;h2 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: large; max-width: 700px; padding-left: 0px;"&gt;
&lt;a href="https://www.blogger.com/null" name="2._Standard_Java_Project"&gt;&lt;/a&gt;2. Standard Java Project&lt;/h2&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
Create a standard Maven java project structure&lt;/div&gt;
&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO2K8yzTwbFPv53NugpgvuW3v8wky3AfEVwqcekjRkEKRzxIs-9AkLP_-euhxjwwq11-6imfi7BqkM8LPJnYR7zLcCSnJ0ZQY9gTBpZ5nHvTT_VsRxU7m_FUdMRg2U2N8zyldGnMt0fg-p/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; mvn archetype:generate -DgroupId=com.cuubez -DartifactId=cuubez-jetty -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;strong&gt;Note:&lt;/strong&gt;&amp;nbsp;To support IntelliJ IDEA, use Maven command :&lt;/div&gt;
&lt;pre class="prettyprint" style="background-color: #eeeeee; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; font-size: 12px; max-width: 70em; overflow: auto; padding: 0.5em;"&gt;&lt;span class="pln"&gt;mvn idea&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;:&lt;/span&gt;&lt;span class="pln"&gt;idea&lt;/span&gt;&lt;/pre&gt;
&lt;h2 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: large; max-width: 700px; padding-left: 0px;"&gt;
&lt;a href="https://www.blogger.com/null" name="3._Project_Dependencies"&gt;&lt;/a&gt;3. Project Dependencies&lt;/h2&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
Following maven dependencies should add to the pom.xml file.&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;i&gt;File : pom.xml&lt;/i&gt;&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;
&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO2K8yzTwbFPv53NugpgvuW3v8wky3AfEVwqcekjRkEKRzxIs-9AkLP_-euhxjwwq11-6imfi7BqkM8LPJnYR7zLcCSnJ0ZQY9gTBpZ5nHvTT_VsRxU7m_FUdMRg2U2N8zyldGnMt0fg-p/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;dependency&amp;gt;  
  &amp;lt;groupId&amp;gt;com.cuubez&amp;lt;/groupId&amp;gt;  
  &amp;lt;artifactId&amp;gt;cuubez-core&amp;lt;/artifactId&amp;gt;  
  &amp;lt;version&amp;gt;1.1.1&amp;lt;/version&amp;gt;  
 &amp;lt;/dependency&amp;gt;  
 &amp;lt;dependency&amp;gt;  
  &amp;lt;groupId&amp;gt;org.eclipse.jetty&amp;lt;/groupId&amp;gt;  
  &amp;lt;artifactId&amp;gt;jetty-servlet&amp;lt;/artifactId&amp;gt;  
  &amp;lt;version&amp;gt;8.0.4.v20111024&amp;lt;/version&amp;gt;  
 &amp;lt;/dependency&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;h2 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: large; max-width: 700px; padding-left: 0px;"&gt;
4. REST Service&lt;/h2&gt;
&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO2K8yzTwbFPv53NugpgvuW3v8wky3AfEVwqcekjRkEKRzxIs-9AkLP_-euhxjwwq11-6imfi7BqkM8LPJnYR7zLcCSnJ0ZQY9gTBpZ5nHvTT_VsRxU7m_FUdMRg2U2N8zyldGnMt0fg-p/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; @Path("/users/{userId}")  
 @Produces(MediaType.APPLICATION_JSON)  
 public class UserResource {  
   private static Log log = LogFactory.getLog(UserResource.class);  
   @GET  
   @Produces(MediaType.APPLICATION_JSON)  
   public Response userGet(@PathParam(value = "userId") String id, @QueryParam(value = "name") String name, @QueryParam(value = "age") int age) {  
     User user = new User(id, age, name);  
     return Response.ok().entity(user).build();  
   }  
   @Consumes(MediaType.APPLICATION_JSON)  
   @POST  
   public void userPost(User user) {  
     log.info("POST = [" + user + "]");  
   }  
   @PUT  
   @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})  
   public void userPut(User user) {  
     log.info("PUT = [" + user + "]");  
   }  
 }  &lt;/code&gt;&lt;/pre&gt;
&lt;h2 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: large; max-width: 700px; padding-left: 0px;"&gt;
5. Embedded Jetty Implementation&lt;/h2&gt;
&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO2K8yzTwbFPv53NugpgvuW3v8wky3AfEVwqcekjRkEKRzxIs-9AkLP_-euhxjwwq11-6imfi7BqkM8LPJnYR7zLcCSnJ0ZQY9gTBpZ5nHvTT_VsRxU7m_FUdMRg2U2N8zyldGnMt0fg-p/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; public class JettyServer {  
   public static void main(String args[]) {  
     Server server = new Server(8080);  
     ServletContextHandler handler = new ServletContextHandler(ServletContextHandler.SESSIONS);       
     server.setHandler(handler);  
     handler.setContextPath("/");  
     handler.setResourceBase(".");  
     handler.addEventListener(new BootstrapContextListener()); //cuubez bootstrap context listner  
     handler.addServlet(HttpServletDispatcher.class, "/rest/*"); //servlet filter  
     try {  
       server.start();  
       server.join();  
     } catch (Exception e) {  
       e.printStackTrace();  
     }  
   }  
 }  &lt;/code&gt;&lt;/pre&gt;
&lt;h2 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: large; max-width: 700px; padding-left: 0px;"&gt;
6. Demo&lt;/h2&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
In this example, web request from projectURL/rest/users/id-1003 will match to UserResource, via @Path("/users/{userId}").&amp;nbsp;&lt;strong&gt;{userId}&lt;/strong&gt;&amp;nbsp;will match to parameter annotated with @PathParam&amp;nbsp;and&amp;nbsp;&lt;strong&gt;age&lt;/strong&gt;&amp;nbsp;and&amp;nbsp;&lt;strong&gt;name&lt;/strong&gt;&amp;nbsp;will match to parameters annotated with @QueryParam&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;strong&gt;URL :&amp;nbsp;&lt;a href="http://localhost:8080/rest/users/id-1003?name=jhone&amp;amp;age=30" rel="nofollow" style="color: #0000cc;"&gt;http://localhost:8080/rest/users/id-1003?name=jhone&amp;amp;age=30&lt;/a&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;img src="http://www.cuubez.com/downloads/examples/embedded_jetty/jetty-demo.png" style="border: 0px; max-width: 100%;" /&gt;&lt;/div&gt;
&lt;h3 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: medium; margin: 0px; max-width: 700px; padding: 0.5ex 0.5em 0.5ex 0px;"&gt;
&lt;a href="https://www.blogger.com/null" name="Download_this_example_-"&gt;&lt;/a&gt;Download this example -&amp;nbsp;&lt;a href="http://www.cuubez.com/downloads/examples/embedded_jetty/cuubez-jetty.zip" rel="nofollow" style="color: #0000cc;"&gt;cuubez-jetty.zip&lt;/a&gt;&lt;/h3&gt;
&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>Cuubez Rest framework sample application</title><link>http://prabu-lk.blogspot.com/2014/06/cuubez-rest-framework-sample-application.html</link><category>cuubez</category><category>download rest sample</category><category>java restful web service</category><category>jaxrs</category><category>rest</category><pubDate>Tue, 24 Jun 2014 15:00:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-4588694281372448082</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
In this tutorial, we show you how to develop a simple REST web application with&amp;nbsp;&lt;strong&gt;Cuubez&lt;/strong&gt;.&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
Technologies and Tools used in this article:&lt;/div&gt;
&lt;ol style="font-family: arial, sans-serif; font-size: 13px; max-width: 62em; padding-left: 25px;"&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;Cuubez 1.0.0&lt;/li&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;JDK 1.6&lt;/li&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;Tomcat 6.0&lt;/li&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;Maven 3.0.3&lt;/li&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;Intellij IDEA 13.1.1&lt;/li&gt;
&lt;/ol&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;strong&gt;Note&lt;/strong&gt;&amp;nbsp;If you want to know what and how REST works, just search on Google, ton of available resources.&lt;/div&gt;
&lt;h3 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: medium; margin: 0px; max-width: 700px; padding: 0.5ex 0.5em 0.5ex 0px;"&gt;
&lt;/h3&gt;
&lt;h3 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: medium; margin: 0px; max-width: 700px; padding: 0.5ex 0.5em 0.5ex 0px;"&gt;
&lt;a href="https://www.blogger.com/null" name="1._Directory_Structure"&gt;&lt;/a&gt;1. Directory Structure&lt;/h3&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
This is the final web project structure of this tutorial.&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;img src="http://cuubez.com/downloads/examples/employee_example/Screenshot1.png" style="border: 0px; max-width: 100%;" /&gt;&lt;/div&gt;
&lt;h3 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: medium; margin: 0px; max-width: 700px; padding: 0.5ex 0.5em 0.5ex 0px;"&gt;
&lt;/h3&gt;
&lt;h3 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: medium; margin: 0px; max-width: 700px; padding: 0.5ex 0.5em 0.5ex 0px;"&gt;
&lt;a href="https://www.blogger.com/null" name="2._Standard_Web_Project"&gt;&lt;/a&gt;2. Standard Web Project&lt;/h3&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
Create a standard Maven web project structure&lt;br /&gt;
.&lt;br /&gt;
&lt;div class="line number1 index0 alt2" style="background: none white !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; height: auto !important; left: auto !important; line-height: 14.300000190734863px; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;"&gt;
&lt;/div&gt;
&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO2K8yzTwbFPv53NugpgvuW3v8wky3AfEVwqcekjRkEKRzxIs-9AkLP_-euhxjwwq11-6imfi7BqkM8LPJnYR7zLcCSnJ0ZQY9gTBpZ5nHvTT_VsRxU7m_FUdMRg2U2N8zyldGnMt0fg-p/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; mvn archetype:generate -DgroupId=com.cuubez -DartifactId=Employee-example  
     -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false  &lt;/code&gt;&lt;/pre&gt;
&lt;strong style="line-height: 1.25em;"&gt;Note&lt;/strong&gt;&lt;span style="line-height: 1.25em;"&gt;&amp;nbsp;To support IDEA, use Maven command :&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 1.25em;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;b&gt;mvn idea:idea&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: medium; margin: 0px; max-width: 700px; padding: 0.5ex 0.5em 0.5ex 0px;"&gt;
&lt;a href="https://www.blogger.com/null" name="3._Project_Dependencies"&gt;&lt;/a&gt;3. Project Dependencies&lt;/h3&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
Cuubez is published in Maven repository. To develop cuubez REST application , just declares&amp;nbsp;&lt;strong&gt;cuubez-core&lt;/strong&gt;&amp;nbsp;in Maven&amp;nbsp;pom.xml.&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;i&gt;File : pom.xml&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="line number1 index0 alt2" style="background: none white !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; height: auto !important; left: auto !important; line-height: 14.300000190734863px; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;"&gt;
&lt;/div&gt;
&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO2K8yzTwbFPv53NugpgvuW3v8wky3AfEVwqcekjRkEKRzxIs-9AkLP_-euhxjwwq11-6imfi7BqkM8LPJnYR7zLcCSnJ0ZQY9gTBpZ5nHvTT_VsRxU7m_FUdMRg2U2N8zyldGnMt0fg-p/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;dependencies&amp;gt;  
   &amp;lt;dependency&amp;gt;  
    &amp;lt;groupId&amp;gt;com.cuubez&amp;lt;/groupId&amp;gt;  
    &amp;lt;artifactId&amp;gt;cuubez-core&amp;lt;/artifactId&amp;gt;  
    &amp;lt;version&amp;gt;1.0.0&amp;lt;/version&amp;gt;  
   &amp;lt;/dependency&amp;gt;  
 &amp;lt;/dependencies&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span class="tag" style="color: #000088;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h3 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: medium; margin: 0px; max-width: 700px; padding: 0.5ex 0.5em 0.5ex 0px;"&gt;
&lt;/h3&gt;
&lt;h3 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: medium; margin: 0px; max-width: 700px; padding: 0.5ex 0.5em 0.5ex 0px;"&gt;
&lt;a href="https://www.blogger.com/null" name="4._REST_Service"&gt;&lt;/a&gt;4. REST Service&lt;/h3&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
Simple REST service with Cuubez&lt;br /&gt;
&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO2K8yzTwbFPv53NugpgvuW3v8wky3AfEVwqcekjRkEKRzxIs-9AkLP_-euhxjwwq11-6imfi7BqkM8LPJnYR7zLcCSnJ0ZQY9gTBpZ5nHvTT_VsRxU7m_FUdMRg2U2N8zyldGnMt0fg-p/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; import javax.ws.rs.GET;  
 import javax.ws.rs.Path;  
 import javax.ws.rs.PathParam;  
 import com.cuubez.example.entity.Employee;  
 @Path("/employees")  
 public class EmployeeResource {  
   @Path("/{empId}")  
   @GET  
   public Employee getEmployee(@PathParam("empId") final String empId) {  
     Employee employee = new Employee(empId, "jhon powel", "marketing", "No 321, Colombo 4", "+94775993720");  
     return employee;  
   }  
 }  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: medium; margin: 0px; max-width: 700px; padding: 0.5ex 0.5em 0.5ex 0px;"&gt;
&lt;a href="https://www.blogger.com/null" name="5._web.xml"&gt;&lt;/a&gt;5. web.xml&lt;/h3&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
The&amp;nbsp;&lt;strong&gt;ContextLoaderListner&lt;a href="https://code.google.com/p/cuubez/w/edit/ContextLoaderListner" style="color: #0000cc;"&gt;?&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;context listener has to be deployed in order to create the registry for cuubez ,while the&amp;nbsp;&lt;strong&gt;ServiceInitiator&lt;a href="https://code.google.com/p/cuubez/w/edit/ServiceInitiator" style="color: #0000cc;"&gt;?&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;servlet is used so that incoming requests are correctly routed to the appropriate services. We have configured the specific servlet, named&amp;nbsp;&lt;strong&gt;cuubez&lt;/strong&gt;, to intercept requests under the&amp;nbsp;&lt;strong&gt;/rest/&lt;/strong&gt;&amp;nbsp;path.&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;i&gt;File : web.xml&lt;/i&gt;&lt;br /&gt;

&lt;div class="syntaxhighlighter  xml" id="highlighter_907978" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: inherit; font-size: 1em !important; font-style: inherit; font-weight: inherit; margin: 1em 0px !important; outline: 0px; overflow: auto !important; padding: 0px; position: relative !important; text-align: inherit; vertical-align: baseline; width: 960px;"&gt;
&lt;table border="0" cellpadding="0" cellspacing="0" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-collapse: collapse; border-spacing: 0px; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; max-width: 100%; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: 960px;"&gt;&lt;tbody style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;"&gt;
&lt;tr style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;"&gt;&lt;td class="code" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: 923px;"&gt;&lt;div class="container" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; max-width: 960px; min-height: inherit !important; min-width: 220px; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: relative !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;"&gt;
&lt;div class="line number1 index0 alt2" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;"&gt;

&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO2K8yzTwbFPv53NugpgvuW3v8wky3AfEVwqcekjRkEKRzxIs-9AkLP_-euhxjwwq11-6imfi7BqkM8LPJnYR7zLcCSnJ0ZQY9gTBpZ5nHvTT_VsRxU7m_FUdMRg2U2N8zyldGnMt0fg-p/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;web-app&amp;gt;  
  &amp;lt;display-name&amp;gt;Employee Example&amp;lt;/display-name&amp;gt;  
   &amp;lt;listener&amp;gt;  
     &amp;lt;listener-class&amp;gt;com.cuubez.core.servlet.BootstrapContextListener&amp;lt;/listener-class&amp;gt;  
   &amp;lt;/listener&amp;gt;  
   &amp;lt;servlet-mapping&amp;gt;  
    &amp;lt;servlet-name&amp;gt;init&amp;lt;/servlet-name&amp;gt;  
    &amp;lt;url-pattern&amp;gt;/rest/*&amp;lt;/url-pattern&amp;gt;  
   &amp;lt;/servlet-mapping&amp;gt;  
   &amp;lt;servlet&amp;gt;  
    &amp;lt;servlet-name&amp;gt;init&amp;lt;/servlet-name&amp;gt;  
    &amp;lt;servlet-class&amp;gt;com.cuubez.core.servlet.HttpServletDispatcher&amp;lt;/servlet-class&amp;gt;  
   &amp;lt;/servlet&amp;gt;  
 &amp;lt;/web-app&amp;gt;  &lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: medium; margin: 0px; max-width: 700px; padding: 0.5ex 0.5em 0.5ex 0px;"&gt;
&lt;a href="https://www.blogger.com/null" name="6._Demo"&gt;&lt;/a&gt;6. Demo&lt;/h3&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
In this example, web request from&amp;nbsp;&lt;strong&gt;projectURL/rest/employees&lt;/strong&gt;&amp;nbsp;will match to&amp;nbsp;&lt;strong&gt;EmployeeResource&lt;/strong&gt;, via&amp;nbsp;@Path("/employees"). And the&amp;nbsp;&lt;strong&gt;{empId}&amp;nbsp;&lt;/strong&gt;from&amp;nbsp;&lt;strong&gt;projectURL/rest/employees/{empId}&lt;/strong&gt;&amp;nbsp;will match to parameter annotated with&amp;nbsp;@PathParam&lt;u&gt;.&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;i&gt;URL :&amp;nbsp;&lt;a href="http://localhost:8080/employee-example-1.0.0/rest/employees/eId-0001_" rel="nofollow" style="color: #0000cc;"&gt;http://localhost:8080/employee-example-1.0.0/rest/employees/eId-0001&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;img src="http://cuubez.com/downloads/examples/employee_example/Screenshot2.png" style="border: 0px; max-width: 100%;" /&gt;&lt;/div&gt;
&lt;h3 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: medium; margin: 0px; max-width: 700px; padding: 0.5ex 0.5em 0.5ex 0px;"&gt;
&lt;/h3&gt;
&lt;h3 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; font-size: medium; margin: 0px; max-width: 700px; padding: 0.5ex 0.5em 0.5ex 0px;"&gt;
&lt;a href="https://www.blogger.com/null" name="Download_this_Cuubez_Employee_example_-"&gt;&lt;/a&gt;Download this Cuubez Employee example -&amp;nbsp;&lt;a href="http://cuubez.com/downloads/examples/employee_example/Employee-example.zip" rel="nofollow" style="color: #0000cc;"&gt;Employee-example.zip&lt;/a&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>Heartbleed </title><link>http://prabu-lk.blogspot.com/2014/05/heartbleed.html</link><pubDate>Thu, 29 May 2014 15:10:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-4612117274685330996</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: &amp;quot;Andalus&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;&lt;b&gt;Heartbleed &lt;/b&gt;is
the vulnerable which is identifying in very famous TSL level security library
call OpenSSL. It is widely used to implement TSL level security. &lt;b&gt;Heartbleed
&lt;/b&gt;is effecting if user using vulnerable OpenSSL instance for the client side or
server side. Note that only the number of OpenSSL version are reported as an
effected by vulnerability.&lt;/span&gt;&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="font-family: Andalus, serif;"&gt;OpenSSL 1.0.1 through 1.0.1f (inclusive) are vulnerable&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Andalus, serif;"&gt;OpenSSL 1.0.1g is NOT vulnerable&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Andalus, serif;"&gt;OpenSSL 1.0.0 branch is NOT vulnerable&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Andalus, serif;"&gt;OpenSSL 0.9.8 branch is NOT vulnerable&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Andalus, serif;"&gt;OpenSSL 0.9.7 branch is NOT vulnerable&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 0.0001pt 18.75pt; text-indent: -0.25in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="font-family: &amp;quot;Andalus&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial;"&gt;CVE-2014-0160 is the official name for this vulnerability. These vulnerability names are maintain by the CVE (http://cve.mitre.org/)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7-i33QEu61JiawTbHTYfWCLy_mYfr_MKI2_GHWPmaidsi9gYth9zqLYLqHJoo2pi-vFuBv2aOCAaVzd34GlrtkqNMTPUE3DZLJJvepm2-NT71YJyNaRVTtLjmaJvx_kilmhFXPFVLeV5_/s1600/heartbleed.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7-i33QEu61JiawTbHTYfWCLy_mYfr_MKI2_GHWPmaidsi9gYth9zqLYLqHJoo2pi-vFuBv2aOCAaVzd34GlrtkqNMTPUE3DZLJJvepm2-NT71YJyNaRVTtLjmaJvx_kilmhFXPFVLeV5_/s1600/heartbleed.png" height="200" width="165" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="font-family: &amp;quot;Andalus&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="font-family: Andalus, serif;"&gt;&lt;b&gt;What actually happened?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Andalus, serif;"&gt;When Heartbleed is exploited it leads to the leak of memory information from the server to the client and from client to the server side. RFC6520 is for the transport layer security (TLS) and datagram transport layer security (DTLS). RFC6520 heartbeat extension is providing link to send heartbeat message which consisting of payload between client and server. Sender send 16 bit message and receiver should reply with the same message. The affected version of OpenSSL allocate a memory buffer for the message to be returned base on the length field in the requesting message, without regard the actual size of the message payload. Because of this failure to do proper bound checking, the message returned consist of the payload, possible followed by whatever else happened to be the allocated memory buffer.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Andalus, serif;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;In that case Heartbleed can send heartbeat request with smaller payload with larger length field.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Andalus, serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Andalus, serif;"&gt;Following image show how it happen.&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span class="apple-converted-space"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; font-family: Andalus, serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHHrb2aS_bGJ8ul0sU_r6kIlIQzG5zIG2ednEi59RRFK4hjoMzBE7gZh14lutV7jWfszdsJ3IaGm5mpNp9YjfqwproOSe7zcj41a_KolFSF-ngEuFLFz6YvO0nBW9qLhAOpLvj1zfp47IN/s1600/Simplified_Heartbleed_explanation.svg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHHrb2aS_bGJ8ul0sU_r6kIlIQzG5zIG2ednEi59RRFK4hjoMzBE7gZh14lutV7jWfszdsJ3IaGm5mpNp9YjfqwproOSe7zcj41a_KolFSF-ngEuFLFz6YvO0nBW9qLhAOpLvj1zfp47IN/s1600/Simplified_Heartbleed_explanation.svg.png" height="320" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;b&gt;[Ref:-Wikipedia]&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span class="apple-converted-space"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; font-family: Andalus, serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7-i33QEu61JiawTbHTYfWCLy_mYfr_MKI2_GHWPmaidsi9gYth9zqLYLqHJoo2pi-vFuBv2aOCAaVzd34GlrtkqNMTPUE3DZLJJvepm2-NT71YJyNaRVTtLjmaJvx_kilmhFXPFVLeV5_/s72-c/heartbleed.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>Cuubez sample application</title><link>http://prabu-lk.blogspot.com/2014/05/cuubez-sample-application_27.html</link><pubDate>Tue, 27 May 2014 21:39:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-4256877035287763312</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;h2 style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: arial, sans-serif; max-width: 700px; padding-left: 0px;"&gt;
&lt;/h2&gt;
&lt;h1 style="background-image: none; border: 0px; font-size: x-large; margin-top: 0px; max-width: 700px; padding-left: 0px; text-align: -webkit-auto;"&gt;
&lt;span style="font-size: small;"&gt;Step 1: Download cuubez from the Repository&lt;/span&gt;&lt;/h1&gt;
&lt;div style="font-size: 13px; font-weight: normal; line-height: 1.25em; max-width: 64em; text-align: -webkit-auto;"&gt;
The first step is to download the latest cuubez stable release from:&amp;nbsp;&lt;a href="http://www.cuubez.com/index.php/2014-05-20-11-01-54" rel="nofollow" style="color: #0000cc;"&gt;http://www.cuubez.com/index.php/2014-05-20-11-01-54&lt;/a&gt;&lt;/div&gt;
&lt;div style="font-size: 13px; font-weight: normal; line-height: 1.25em; max-width: 64em; text-align: -webkit-auto;"&gt;
&lt;strong&gt;Maven repo&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;
&lt;br /&gt;
&lt;div class="line number1 index0 alt2" style="background: none white !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: #606060; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; height: auto !important; left: auto !important; line-height: 14.300000190734863px; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: black !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;lt;&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;dependencies&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: black !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="line number2 index1 alt1" style="background: none white !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: #606060; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; height: auto !important; left: auto !important; line-height: 14.300000190734863px; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;code class="xml spaces" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: black !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;lt;&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;dependency&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: black !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="line number3 index2 alt2" style="background: none white !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: #606060; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; height: auto !important; left: auto !important; line-height: 14.300000190734863px; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;code class="xml spaces" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: black !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;lt;&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;groupId&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: black !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;com.cuubez&amp;lt;/&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;groupId&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: black !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="line number4 index3 alt1" style="background: none white !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: #606060; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; height: auto !important; left: auto !important; line-height: 14.300000190734863px; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;code class="xml spaces" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: black !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;lt;&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;artifactId&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: black !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;cuubez-core&amp;lt;/&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;artifactId&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: black !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="line number5 index4 alt2" style="background: none white !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: #606060; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; height: auto !important; left: auto !important; line-height: 14.300000190734863px; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;code class="xml spaces" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: black !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;lt;&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;version&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: black !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;1.0.0&amp;lt;/&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;version&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: black !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="line number6 index5 alt1" style="background: none white !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: #606060; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; height: auto !important; left: auto !important; line-height: 14.300000190734863px; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;code class="xml spaces" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: black !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;lt;/&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;dependency&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: black !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="line number7 index6 alt2" style="background: none white !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: #606060; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; height: auto !important; left: auto !important; line-height: 14.300000190734863px; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: black !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;lt;/&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;dependencies&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: black !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 style="background-image: none; border: 0px; font-size: medium; margin: 0px; max-width: 700px; padding: 0.5ex 0.5em 0.5ex 0px; text-align: -webkit-auto;"&gt;
&lt;a href="https://www.blogger.com/blogger.g?blogID=6914296902264504048" name="6.1.2_Step_2:_Add_the_following_libraries_to_your_Web_applicatio"&gt;&lt;/a&gt;Step 2: Add the following libraries to your Web application&lt;/h3&gt;
&lt;pre class="prettyprint" style="background-color: #eeeeee; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; font-size: 12px; font-weight: normal; max-width: 70em; overflow: auto; padding: 0.5em; text-align: -webkit-auto;"&gt;&lt;span class="pln"&gt;&amp;nbsp; com&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;thoughtworks&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;xstream
&amp;nbsp; commons&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;-&lt;/span&gt;&lt;span class="pln"&gt;logging
&amp;nbsp; javax&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;servlet
&amp;nbsp; javassist
&amp;nbsp; javax&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;ws&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;rs
&amp;nbsp; com&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;google&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;code&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;gson&lt;/span&gt;&lt;/pre&gt;
&lt;h3 style="background-image: none; border: 0px; font-size: medium; margin: 0px; max-width: 700px; padding: 0.5ex 0.5em 0.5ex 0px; text-align: -webkit-auto;"&gt;
&lt;/h3&gt;
&lt;h3 style="background-image: none; border: 0px; font-size: medium; margin: 0px; max-width: 700px; padding: 0.5ex 0.5em 0.5ex 0px; text-align: -webkit-auto;"&gt;
&lt;a href="https://www.blogger.com/blogger.g?blogID=6914296902264504048" name="6.1.3_Step_3:_Define_listeners_and_bootstrap_classes"&gt;&lt;/a&gt;Step 3: Define listeners and bootstrap classes\&lt;/h3&gt;
&lt;div&gt;
&lt;div style="background: rgb(255, 255, 255); border: 0px; color: #606060; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 25px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"&gt;
&lt;div class="syntaxhighlighter  xml" id="highlighter_907978" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: inherit; font-size: 1em !important; font-style: inherit; font-weight: inherit; margin: 1em 0px !important; outline: 0px; overflow: auto !important; padding: 0px; position: relative !important; text-align: inherit; vertical-align: baseline; width: 960px;"&gt;
&lt;table border="0" cellpadding="0" cellspacing="0" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-collapse: collapse; border-spacing: 0px; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; max-width: 100%; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: 960px;"&gt;&lt;tbody style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;"&gt;
&lt;tr style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;"&gt;&lt;td class="code" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: 923px;"&gt;&lt;div class="container" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; max-width: 960px; min-height: inherit !important; min-width: 220px; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: relative !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;"&gt;
&lt;div class="line number1 index0 alt2" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;lt;&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;web-app&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="line number2 index1 alt1" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;code class="xml spaces" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;lt;&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;display-name&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;Employee Example&amp;lt;/&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;display-name&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="line number3 index2 alt2" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;/div&gt;
&lt;div class="line number4 index3 alt1" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;code class="xml spaces" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;lt;&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;listener&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="line number5 index4 alt2" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;code class="xml spaces" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;lt;&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;listener-class&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;com.cuubez.core.servlet.BootstrapContextListener&amp;lt;/&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;listener-class&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="line number6 index5 alt1" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;code class="xml spaces" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;lt;/&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;listener&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="line number7 index6 alt2" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;/div&gt;
&lt;div class="line number8 index7 alt1" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;code class="xml spaces" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;lt;&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;servlet-mapping&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="line number9 index8 alt2" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;code class="xml spaces" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;lt;&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;servlet-name&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;init&amp;lt;/&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;servlet-name&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="line number10 index9 alt1" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;code class="xml spaces" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;lt;&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;url-pattern&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;/rest/*&amp;lt;/&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;url-pattern&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="line number11 index10 alt2" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;code class="xml spaces" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;lt;/&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;servlet-mapping&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="line number12 index11 alt1" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;/div&gt;
&lt;div class="line number13 index12 alt2" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;code class="xml spaces" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;lt;&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;servlet&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="line number14 index13 alt1" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;code class="xml spaces" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;lt;&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;servlet-name&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;init&amp;lt;/&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;servlet-name&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="line number15 index14 alt2" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;code class="xml spaces" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;lt;&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;servlet-class&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;com.cuubez.core.servlet.HttpServletDispatcher&amp;lt;/&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;servlet-class&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="line number16 index15 alt1" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;code class="xml spaces" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;lt;/&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;servlet&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="line number17 index16 alt2" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;/div&gt;
&lt;div class="line number18 index17 alt1" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"&gt;
&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;lt;/&lt;/code&gt;&lt;code class="xml keyword" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;web-app&lt;/code&gt;&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;div&gt;
&lt;code class="xml plain" style="background: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; min-height: inherit !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: normal; width: auto !important;"&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 style="background-image: none; border: 0px; font-size: medium; margin: 0px; max-width: 700px; padding: 0.5ex 0.5em 0.5ex 0px; text-align: -webkit-auto;"&gt;
Step 4: Create your first RESTful service&lt;/h3&gt;
&lt;div style="font-size: 13px; font-weight: normal; line-height: 1.25em; max-width: 64em; text-align: -webkit-auto;"&gt;
In a REST based architecture everything is a resource. A resource is accessed via a common interface based on the HTTP standard methods (e.g., POST, GET, PUT or DELETE). Every resource should support the HTTP common operations. Resources are identified by global ID's (which are typically URIs). In the first example, we will recall a RESTful Web service which returns a&amp;nbsp;&lt;strong&gt;User&lt;/strong&gt;&amp;nbsp;object when a certain path is request with an HTTP GET:&lt;/div&gt;
&lt;div style="font-size: 13px; font-weight: normal; line-height: 1.25em; max-width: 64em; text-align: -webkit-auto;"&gt;
&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="font-size: 13px; font-weight: normal; line-height: 1.25em; max-width: 64em; text-align: -webkit-auto;"&gt;
&lt;strong&gt;User object :&lt;/strong&gt;&lt;/div&gt;
&lt;pre class="prettyprint" style="background-color: #eeeeee; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; font-size: 12px; font-weight: normal; max-width: 70em; overflow: auto; padding: 0.5em; text-align: -webkit-auto;"&gt;&lt;span class="kwd" style="color: #000088;"&gt;public&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;class&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ" style="color: #660066;"&gt;User&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;{&lt;/span&gt;&lt;span class="pln"&gt;
&amp;nbsp; &amp;nbsp; 
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;private&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ" style="color: #660066;"&gt;String&lt;/span&gt;&lt;span class="pln"&gt; id&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;;&lt;/span&gt;&lt;span class="pln"&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;private&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ" style="color: #660066;"&gt;String&lt;/span&gt;&lt;span class="pln"&gt; name&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;;&lt;/span&gt;&lt;span class="pln"&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;private&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;int&lt;/span&gt;&lt;span class="pln"&gt; age&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;;&lt;/span&gt;&lt;span class="pln"&gt;
&amp;nbsp; &amp;nbsp; 

&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;public&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ" style="color: #660066;"&gt;User&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;(&lt;/span&gt;&lt;span class="typ" style="color: #660066;"&gt;String&lt;/span&gt;&lt;span class="pln"&gt; id&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ" style="color: #660066;"&gt;String&lt;/span&gt;&lt;span class="pln"&gt; name&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;int&lt;/span&gt;&lt;span class="pln"&gt; age&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;)&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;{&lt;/span&gt;&lt;span class="pln"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;this&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;name &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; id&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;;&lt;/span&gt;&lt;span class="pln"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;this&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;age &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; age&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;;&lt;/span&gt;&lt;span class="pln"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;this&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;name &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; name&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;;&lt;/span&gt;&lt;span class="pln"&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;}&lt;/span&gt;&lt;span class="pln"&gt;

&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;public&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ" style="color: #660066;"&gt;String&lt;/span&gt;&lt;span class="pln"&gt; getId&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;()&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;{&lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;return&lt;/span&gt;&lt;span class="pln"&gt; id&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;;}&lt;/span&gt;&lt;span class="pln"&gt;

&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;public&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;int&lt;/span&gt;&lt;span class="pln"&gt; getAge&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;()&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;{&lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;return&lt;/span&gt;&lt;span class="pln"&gt; age&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;;}&lt;/span&gt;&lt;span class="pln"&gt;

&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;public&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ" style="color: #660066;"&gt;String&lt;/span&gt;&lt;span class="pln"&gt; getName&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;()&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;{&lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;return&lt;/span&gt;&lt;span class="pln"&gt; name&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;;}&lt;/span&gt;&lt;span class="pln"&gt;

&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;public&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;void&lt;/span&gt;&lt;span class="pln"&gt; setId&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;(&lt;/span&gt;&lt;span class="typ" style="color: #660066;"&gt;String&lt;/span&gt;&lt;span class="pln"&gt; id&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;)&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;{&lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;this&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;id &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; id&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;;}&lt;/span&gt;&lt;span class="pln"&gt;

&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;public&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;void&lt;/span&gt;&lt;span class="pln"&gt; setAge&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;(&lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;int&lt;/span&gt;&lt;span class="pln"&gt; age&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;)&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;{&lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;this&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;age &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; age&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;;}&lt;/span&gt;&lt;span class="pln"&gt;

&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;public&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;void&lt;/span&gt;&lt;span class="pln"&gt; setName&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;(&lt;/span&gt;&lt;span class="typ" style="color: #660066;"&gt;String&lt;/span&gt;&lt;span class="pln"&gt; name&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;)&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;{&lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;this&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;name &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; name&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;;}&lt;/span&gt;&lt;span class="pln"&gt;
&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;}&lt;/span&gt;&lt;/pre&gt;
&lt;div style="font-size: 13px; font-weight: normal; line-height: 1.25em; max-width: 64em; text-align: -webkit-auto;"&gt;
&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="font-size: 13px; font-weight: normal; line-height: 1.25em; max-width: 64em; text-align: -webkit-auto;"&gt;
&lt;strong&gt;REST service class :&lt;/strong&gt;&lt;/div&gt;
&lt;pre class="prettyprint" style="background-color: #eeeeee; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; font-size: 12px; font-weight: normal; max-width: 70em; overflow: auto; padding: 0.5em; text-align: -webkit-auto;"&gt;&lt;span class="lit" style="color: #006666;"&gt;@Path&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;(&lt;/span&gt;&lt;span class="str" style="color: #008800;"&gt;"/users"&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;)&lt;/span&gt;&lt;span class="pln"&gt;
&lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;public&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;class&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ" style="color: #660066;"&gt;UserDetail&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;{&lt;/span&gt;&lt;span class="pln"&gt;

&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="lit" style="color: #006666;"&gt;@GET&lt;/span&gt;&lt;span class="pln"&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="lit" style="color: #006666;"&gt;@Path&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;(&lt;/span&gt;&lt;span class="str" style="color: #008800;"&gt;"/{userId}"&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;)&lt;/span&gt;&lt;span class="pln"&gt; &amp;nbsp; 
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="lit" style="color: #006666;"&gt;@Produces&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;(&lt;/span&gt;&lt;span class="typ" style="color: #660066;"&gt;MediaType&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;APPLICATION_JSON&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;)&lt;/span&gt;&lt;span class="pln"&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;public&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ" style="color: #660066;"&gt;User&lt;/span&gt;&lt;span class="pln"&gt; getUser&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;(&lt;/span&gt;&lt;span class="lit" style="color: #006666;"&gt;@PathParam&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;(&lt;/span&gt;&lt;span class="pln"&gt;value &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="str" style="color: #008800;"&gt;"userId"&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;)&lt;/span&gt;&lt;span class="typ" style="color: #660066;"&gt;String&lt;/span&gt;&lt;span class="pln"&gt; userId&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;)&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;{&lt;/span&gt;&lt;span class="pln"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="typ" style="color: #660066;"&gt;User&lt;/span&gt;&lt;span class="pln"&gt; user &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;new&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ" style="color: #660066;"&gt;User&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;(&lt;/span&gt;&lt;span class="pln"&gt;userId&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="str" style="color: #008800;"&gt;"jhone"&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit" style="color: #006666;"&gt;35&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;);&lt;/span&gt;&lt;span class="pln"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="kwd" style="color: #000088;"&gt;return&lt;/span&gt;&lt;span class="pln"&gt; user&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;;&lt;/span&gt;&lt;span class="pln"&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;}&lt;/span&gt;&lt;span class="pln"&gt;
&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;}&lt;/span&gt;&lt;/pre&gt;
&lt;div style="font-size: 13px; font-weight: normal; line-height: 1.25em; max-width: 64em; text-align: -webkit-auto;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-size: 13px; font-weight: normal; line-height: 1.25em; max-width: 64em; text-align: -webkit-auto;"&gt;
The&amp;nbsp;&lt;strong&gt;@Path&lt;/strong&gt;&amp;nbsp;annotation at class level is used to specify the base URL of the Web service. Then you can assign a&amp;nbsp;&lt;strong&gt;@Path&lt;/strong&gt;&amp;nbsp;annotation at method level to specify the single action you want to invoke.&lt;/div&gt;
&lt;div style="font-size: 13px; font-weight: normal; line-height: 1.25em; max-width: 64em; text-align: -webkit-auto;"&gt;
In this example, if you need to invoke the userDetail service, you have to use the following URL: (we suppose that the web application is named cuubez.war)&lt;/div&gt;
&lt;div style="font-size: 13px; font-weight: normal; line-height: 1.25em; max-width: 64em; text-align: -webkit-auto;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class="prettyprint" style="background-color: #eeeeee; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; font-size: 12px; font-weight: normal; max-width: 70em; overflow: auto; padding: 0.5em; text-align: -webkit-auto;"&gt;&lt;span class="pln"&gt;http&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;:&lt;/span&gt;&lt;span class="com" style="color: #880000;"&gt;//localhost:8080/cuubez/rest/users/id11001&lt;/span&gt;&lt;/pre&gt;
&lt;div style="font-size: 13px; font-weight: normal; line-height: 1.25em; max-width: 64em; text-align: -webkit-auto;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-size: 13px; font-weight: normal; line-height: 1.25em; max-width: 64em; text-align: -webkit-auto;"&gt;
would return:&lt;/div&gt;
&lt;pre class="prettyprint" style="background-color: #eeeeee; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; font-size: 12px; font-weight: normal; max-width: 70em; overflow: auto; padding: 0.5em; text-align: -webkit-auto;"&gt;&lt;span class="pun" style="color: #666600;"&gt;{&lt;/span&gt;&lt;span class="pln"&gt;
&lt;/span&gt;&lt;span class="str" style="color: #008800;"&gt;"id"&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;:&lt;/span&gt;&lt;span class="str" style="color: #008800;"&gt;"id11001"&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;,&lt;/span&gt;&lt;span class="pln"&gt;
&amp;nbsp;&lt;/span&gt;&lt;span class="str" style="color: #008800;"&gt;"name"&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="str" style="color: #008800;"&gt;"jhone"&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;,&lt;/span&gt;&lt;span class="pln"&gt;
&amp;nbsp;&lt;/span&gt;&lt;span class="str" style="color: #008800;"&gt;"age"&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit" style="color: #006666;"&gt;35&lt;/span&gt;&lt;span class="pln"&gt;
&lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;}&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>Cuubez RESTful web service framework tutorial </title><link>http://prabu-lk.blogspot.com/2013/04/blog-post.html</link><pubDate>Mon, 22 Apr 2013 17:33:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-8066185029221758902</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;style type="text/css"&gt;
  .subList {
    counter-reset: foo;
  }
  .subList li {
    list-style-type: none;
  }
  .subList li::before {
    counter-increment: foo;
    content: "3." counter(foo) " ";
  }
  
  .tab {
   padding-right:10px;
  }

 .code {
   color:#4169e1;
  }

.note {
   color:#ff0000;
  }

&lt;/style&gt;

&lt;br /&gt;
&lt;h2 style="color: #dac11e;"&gt;
Cuubez|Rest 1.0 beta&lt;/h2&gt;
&lt;b&gt;Table of contents&lt;/b&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=6914296902264504048#restOverview"&gt;RESTful web service overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=6914296902264504048#cuubezOverview"&gt;Cuubez Rest framework overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=6914296902264504048#sample"&gt;Sample application&lt;/a&gt;&lt;/li&gt;
&lt;ol class="subList"&gt;
&lt;li&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=6914296902264504048#sampleOne"&gt;Expose Java method(with return object) as a RESTful web service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=6914296902264504048#sampleTwo"&gt;Expose Java method(with parameters) as a RESTful web service&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;h3 style="color: #dac11e;"&gt;
&lt;a href="http://www.blogger.com/blogger.g?blogID=6914296902264504048" id="restOverview"&gt;1 RESTful web service overview&lt;/a&gt; &lt;/h3&gt;
REST is an acronym for the Representational State Transfer architectural style for distributed hypermedia systems.This style was developed in parallel with HTTP/1.1 based on HTTP/1.0 design to work best on the web and it specifies uniform interface constraint. If that is applied to a web service, induces desirable properties, such as performance, scalability and modifiability which enables services to work best on the Web. In REST style, data and operations act as resources .These resources are accessed using uniform resource identifiers (URI). In order to work, REST assumes that resources are capable of being represented a pervasive standard grammar. 
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Basic REST principles&lt;/b&gt;

&lt;br /&gt;
&lt;ul type="square"&gt;
&lt;li&gt;Application state and functionality are categorized in to resources.&lt;/li&gt;
&lt;li&gt;Resources are addressable using standard URIs that can be used as hypermedia links.&lt;/li&gt;
&lt;span class="tab"&gt;All resources use four HTTP verbs. 
 &lt;span class="tab"&gt;1. GET
 &lt;span class="tab"&gt;2. POST
 &lt;span class="tab"&gt;3. DELETE
 &lt;span class="tab"&gt;4. PUT
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/ul&gt;
&lt;ul type="square"&gt;
&lt;li&gt;Resources provide information using the MIME type supported by HTTP.&lt;/li&gt;
&lt;li&gt;The protocol is stateless.&lt;/li&gt;
&lt;li&gt;The protocol is cacheable.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style="color: #dac11e;"&gt;
&lt;a href="http://www.blogger.com/blogger.g?blogID=6914296902264504048" id="cuubezOverview"&gt;2 Cuubez|Rest framework overview&lt;/a&gt;&lt;/h3&gt;
&lt;b&gt;Cuubez|Rest&lt;/b&gt; is a project that enables development and consumption of REST style web services. The core server runtime is based on the unique way to the Cuubez. The project also introduces a client runtime which can leverage certain components of the server-side runtime. &lt;b&gt;Cuubez|Rest&lt;/b&gt; will deliver component technology that can be easily integrated into a variety of environments. Simplicity is the major strength of the &lt;b&gt;Cuubez|Rest&lt;/b&gt;.

It can be divided in to three major sections 

&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Cuubez core&lt;/li&gt;
&lt;li&gt;Cuubez extensions&lt;/li&gt;
&lt;li&gt;Cuubez client&lt;/li&gt;
&lt;/ol&gt;
Cuubez core contains all server side RESTful web service core components. 
Cuubez extensions provide all cuubez framework related extension solutions. cuubez 1.0 beta release dose not have any extension right now but under the 1.0 stable release, spring framework extension scheduled to release. 
Cuubez client facilitate to execute cuubez exposed RESTful web service easily.

&lt;br /&gt;
&lt;h3 style="color: #dac11e;"&gt;
&lt;a href="http://www.blogger.com/blogger.g?blogID=6914296902264504048" id="sample"&gt;3 Sample application&lt;/a&gt;&lt;/h3&gt;
&lt;h3 style="color: #dac11e;"&gt;
&lt;a href="http://www.blogger.com/blogger.g?blogID=6914296902264504048" id="sampleOne"&gt;3.1 Expose Java method(with return object) as a RESTful web service&lt;/a&gt;&lt;/h3&gt;
&lt;h4&gt;
&lt;b&gt;3.1.1 Server side implementation&lt;/b&gt;&lt;/h4&gt;
&lt;br /&gt;
&lt;b&gt;3.1.1.1 Required libraries&lt;/b&gt;&lt;br /&gt;
&lt;div class="code"&gt;
cuubez-core&lt;br /&gt;
commons-logging&lt;br /&gt;
javassist&lt;br /&gt;
xstream&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;3.1.1.2 web.xml configuration&lt;/b&gt;
&lt;br /&gt;
Add contextLoaderListner to web.xml. (This is mandatory configuration) 
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="code"&gt;
&amp;lt;listener&amp;gt;&lt;br /&gt;
&lt;span class="tab"&gt;&lt;/span&gt;&amp;lt;listener-class&amp;gt;com.cuubez.initiator.ContextLoaderListner&amp;lt;/listener-class&amp;gt;&lt;br /&gt;
&amp;lt;/listener&amp;gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
Add Servlet mapping.
&lt;br /&gt;
This can be configured with any URL patterns.In this example It configured to redirect all request to Cuubeze RESTful web service framework. 
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="code"&gt;
&amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;
&lt;span class="tab"&gt;&lt;/span&gt;&amp;lt;servlet-name&amp;gt;init&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
&lt;span class="tab"&gt;&lt;/span&gt;&amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
&amp;lt;/servlet-mapping&amp;gt;&lt;/div&gt;
&lt;div class="code"&gt;
&amp;lt;servlet&amp;gt;&lt;br /&gt;
&lt;span class="tab"&gt;&lt;/span&gt;&amp;lt;servlet-name&amp;gt;init&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
&lt;span class="tab"&gt;&lt;/span&gt;&amp;lt;servlet-class&amp;gt;com.cuubez.initiator.ServiceInitiator&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;
&amp;lt;/servlet&amp;gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;b&gt;3.1.1.3 Expose Java method as a RESTful web service&lt;/b&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;@RestService&lt;/b&gt; annotation is used to expose Java method as a RESTful web service.
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Name&lt;/b&gt; property : Name of the RESTful web service (name should be unique for the application .Same service name cannot be used to different services).&lt;br /&gt;
&lt;b&gt;Path&lt;/b&gt; property : Path property specifying the specific location to the service.&lt;br /&gt;
&lt;b&gt;HttpMethod&lt;/b&gt; property : This property specify,which HTTP method is used to expose this RESTful web service.&lt;br /&gt;
&lt;b&gt;MediaType&lt;/b&gt; property : Which content type is used to communication. Cuubeze 1.0 beta 1 release only support XML as a mediaType.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="code"&gt;
@RestService(name="userDetails", path="/user", httpMethod=HttpMethod.GET, mediaType = MediaType.XML)&lt;br /&gt;
public List&amp;lt;User&amp;gt; getUserDetails() {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
&lt;b&gt;3.1.2 Client side implementation&lt;/b&gt;&lt;/h4&gt;
&lt;br /&gt;
&lt;b&gt;Required libraries&lt;/b&gt;&lt;br /&gt;
&lt;div class="code"&gt;
cuubez-client&lt;br /&gt;
commons-logging&lt;br /&gt;
javassist&lt;br /&gt;
xstream
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
First need to define service url and mediaType.Cuubez 1.0 beta 1 release only support XML media type. ServiceUrl contains server address + application name+rest service specifying location(In this example it is /user) + rest service name(It is specifying as a userDetails).
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="code"&gt;
String serviceUrl = "http://localhost:8080/Cuubez_web/user/userDetails";&lt;br /&gt;
ClientRequest request = new ClientRequest(serviceUrl, MediaType.XML);
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
RESTful web service is exposed via HTTP GET method hence client needs to communicate via HTTP GET method.Cuubez client library provides APIs to communicate via each of these HTTP methods. Each HTTP method has two different API methods, one for the service which has return object or primitive value and one for the services which hasn't return any object or primitives.
&lt;br /&gt;
get(Class) API method can be used for this example because of the userDetails service return List&lt;user&gt; as a return object.

&lt;/user&gt;&lt;br /&gt;
&lt;div class="code"&gt;
get(List.class)
&lt;/div&gt;
&lt;div class="code"&gt;
List&amp;lt;User&amp;gt; userDetails = request.get(List.class);
&lt;/div&gt;
&lt;div class="note"&gt;
&lt;b&gt;Note:-&lt;/b&gt; Client side User class and server side User class package should be the same.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style="color: #dac11e;"&gt;
&lt;a href="http://www.blogger.com/blogger.g?blogID=6914296902264504048" id="sampleTwo"&gt; 3.2 Expose Java method(with parameters) as a RESTful web service&lt;/a&gt;&lt;/h3&gt;
&lt;h4&gt;
&lt;b&gt;3.2.1 Server side implementation.&lt;/b&gt;&lt;/h4&gt;
&lt;b&gt;3.2.1.1 Required libraries&lt;/b&gt;&lt;br /&gt;
&lt;div class="code"&gt;
cuubez-core&lt;br /&gt;
commons-logging&lt;br /&gt;
javassist&lt;br /&gt;
xstream&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;3.2.1.2 web.xml configuration&lt;/b&gt;

Add contextLoaderListner (This is mandatory configuration)
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;listener&gt;&lt;br /&gt;
&lt;span class="tab"&gt;&lt;/span&gt;&amp;lt;listener-class&amp;gt;com.cuubez.initiator.ContextLoaderListner&amp;lt;/listener-class&amp;gt;&lt;br /&gt;
&amp;lt;/listener&amp;gt;&lt;br /&gt;
&lt;/listener&gt;&lt;/div&gt;
Add Servlet mapping.
This can configured any url patter.In this example it configures to hit all request to Cuubeze RESTful web service framework. 
&lt;br /&gt;
&lt;div class="code"&gt;
&amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;
&lt;span class="tab"&gt;&lt;/span&gt;&amp;lt;servlet-name&amp;gt;init&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
&lt;span class="tab"&gt;&lt;/span&gt;&amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
&amp;lt;/servlet-mapping&amp;gt;&lt;/div&gt;
&lt;div class="code"&gt;
&amp;lt;servlet&amp;gt;&lt;br /&gt;
&lt;span class="tab"&gt;&lt;/span&gt;&amp;lt;servlet-name&amp;gt;init&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
&lt;span class="tab"&gt;&lt;/span&gt;&amp;lt;servlet-class&amp;gt;com.cuubez.initiator.ServiceInitiator&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;
&amp;lt;/servlet&amp;gt;&lt;/div&gt;
&lt;b&gt;3.2.1.3 Expose Java method as a RESTful web service&lt;/b&gt;

&lt;b&gt;@RestService&lt;/b&gt; annotation is used to expose Java method as a RESTful web service.
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Name&lt;/b&gt; property : Name of the RESTful web service (name should be unique for the application .Same service name cannot be used to different services).&lt;br /&gt;
&lt;b&gt;Path&lt;/b&gt; property : Path property specifying the specific location to the service.&lt;br /&gt;
&lt;b&gt;HttpMethod&lt;/b&gt; property : This property specify,which HTTP method is used to expose this RESTful web service.&lt;br /&gt;
&lt;b&gt;MediaType&lt;/b&gt; property : Which content type is used to communication. Cuubez 1.0 beta 1 release only support XML as a mediaType.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="code"&gt;
@RestService(name="saveUserDetails", path="/user", httpMethod=HttpMethod.POST, mediaType = MediaType.XML)
public void saveUserDetails(long userId, User userDetails) {

}
&lt;/div&gt;
&lt;b&gt;3.2.2 Client side implementation&lt;/b&gt;


&lt;b&gt;Required libraries&lt;/b&gt;
&lt;br /&gt;
&lt;div class="code"&gt;
cuubez-client
commons-logging
javassist
xstream
&lt;/div&gt;
First need to define service url and mediaType.Cuubez 1.0 beta 1 release only support XML media type. ServiceUrl contains server address + application name+rest service specifying location(In this example it is /user) + rest service name(It is specifying as a saveUserDetails).
&lt;br /&gt;
&lt;div class="code"&gt;
String serviceUrl = "http://localhost:8080/Cuubez_web/user/saveUserDetails";
ClientRequest request = new ClientRequest(serviceUrl, MediaType.XML);
&lt;/div&gt;
saveUserDetails service need userId(long) and User object as a parameters.

&lt;br /&gt;
&lt;div class="note"&gt;
&lt;b&gt;Note:-&lt;/b&gt;All parameter objects package structure should be the same(Parameter User class package structure should same in the server side and the client side).
&lt;/div&gt;
&lt;div class="code"&gt;
Long userId = 1001;
User userDetails = new User(“David”, 28);
request.addParameters(userId, userDetails);
&lt;/div&gt;
addParameters API call is used to pass parameters. We need to strictly following the parameter sequence when parsing to the addParameters method and adding parameter value directly to the add parameter method is not allowed.
&lt;br /&gt;
&lt;div class="note"&gt;
&lt;b&gt;* Not allow&lt;/b&gt;&lt;/div&gt;
&lt;div class="code"&gt;
request.addParameters(1001, userDetails); &lt;/div&gt;
saveUserDetails service is exposed via HTTP POST method hence client need to communicate via HTTP POST method.Cuubez client library provide APIs to communicate via each of these HTTP methods. Each HTTP method has two different API methods, one for the service which has return object or primitive value and one for the services which hasn't return any object or primitives.

post() API method can use for this example because of the saveUserDetails service not return any object to the outside
   
&lt;br /&gt;
&lt;div class="code"&gt;
request.post();
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>JMS හි ප්‍රායෝගික යෙදීම්...</title><link>http://prabu-lk.blogspot.com/2010/06/jms.html</link><pubDate>Sat, 12 Jun 2010 22:49:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-5528399484593318250</guid><description>මේදවස්වල ටිකක් වැඩ වැඩි හන්දා අලුතෙන් දෙයක් ලියන්න උනේ නැතිවුන නිසා මම ලගදි කියවපු ලිපියක් අනුසාරයේන් පොඩි ලිපියක් ලියන්න හිතුනා.මේ ලිපිය ලියල තිබුනේ Java messaging Service එහෙමත් නැත්නම් JMS පිලිබදව. නමුත් මම මෙහි ලියන්න බලාපොරොත්තු වෙන්නේ JMS පිලිබදව පැහැදිලි කිරීමකට වඩා එහි යේදීමක් පිලිබදවයි.මෙ පිලිබදව විශේෂයෙන් ලියන්න හේතුවක් වුනේ මේ කියන්න යන කාරණය පිලිබදව බොහෝදෙනා යොමු නොකරණ කාරණයක් නිසා.බොහො විට සිද්දාන්තමය කරුනු පිලිබදව අවබෝදයක් තිබුනත් එහි යෙදීම් පිලිබදව ඇත්තේ අඩු අවබෝදයක්.මම පැහැදිලි කරන්න හදපු කාරණය ගැන කතාකලොත් සාමාන්‍යයෙන් යම්කිසි මෘදුකාංගයක් නිර්මාණයේදී අපි එය තුල සිදුවන සිදුවීම් සියල්ල Log එකක් තුල ලිවීම්ට සලස්වනවා.එහිදී method execution වල සිට Exception throwing දක්වා සියලුම සිදුවීම් එය තුල සටහන් කිරීම සිදුකරණු ලබනවා.සමහර විට මෙමගින් ඇතිවන වාසි පිලිබදව ඔබට ප්‍රශ්නයක් මතුවීමට පුලුවන්..ඇත්තටම මෙහිදී මෙය සිදුකරණු ලබන්නේ මෘදුකාංගය තුල සිදුවු දෙ පිලිබදව පසුව අවබෝදයක් ලබාගැනීමටයි.සමහර අවස්තාවලදී මෘදුකාංගයේ සිදුවන Error එකක් වුවද එය සිදුවුයේ කොතැනද කුමන වේලාවේදීද යන්න පිලිබදව ඉතාම පහසුවෙන් මෙම log සටහන් නිසා දැනගත හැකී.මෙය මෘදුකාංගය පවත්වා ගැනීමේදී ඉතාම ලොකු පහසුවක් වෙනවා.විශේෂයෙන් මෙම log සටහන් ක්‍රමය Web Application වලදී බහුල වශයේන් යොදාගනු ලබයි. දැන් අපි සටහනක් තමන්ගේ මෘදුකාංගයට යොදාගැනීමේ ක්‍රියාවලිය පිලිබදව ප්‍රායෝගික කොටස පිලිබදව උදාහරණයක් මගින් පැහැදිලි කරණවනම්  Struts Framework එක යොදාගන කරණු ලබන Web Application එකක් සලකා බැලුවහොත් එහිදී මෙම Log ලිවීම සදහා අපට Interceptor එකක් පහසුවෙන් යොදාගත හැක. එහිදී සිදුවන්නේ Struts Action න් execute වීමට ප්‍රතම(pre-processed) මෙම request, Interceptor එකක් හරහා යැවීමයි.පහත රූපයෙන් එය නිරූපණය වේ.&lt;br /&gt;&lt;img src="file:///tmp/moz-screenshot.png" alt="" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjloENC31Jp4SUtq5vGUbECksKLOPtgT_gU1HsMQLAMxp2_HQVPH8N-PEwSyHJOWICArukoRPRT0w_PCF9j2Yc74DjjAwu0xT_M49VDPt1M9w-GNr9BFzJG8tl1KvvLlwKsw-vQQIaa15e5/s1600/pic1.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 256px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjloENC31Jp4SUtq5vGUbECksKLOPtgT_gU1HsMQLAMxp2_HQVPH8N-PEwSyHJOWICArukoRPRT0w_PCF9j2Yc74DjjAwu0xT_M49VDPt1M9w-GNr9BFzJG8tl1KvvLlwKsw-vQQIaa15e5/s320/pic1.jpg" alt="" id="BLOGGER_PHOTO_ID_5481949656147458914" border="0" /&gt;&lt;/a&gt;මෙම Interceptor එක තුලදී එම Log එකට අදාල සියලුම තොරතුරු  database එකක් තුල හෝ  Log file එකක් තුල සටහන් කරගත හැකියි.මෙහිදී බහුලව භාවිතා වන්නේ Log file එකක් තුල සටහන් කර ගැනීමේ ක්‍රමයයි.මෙහිදී මෙම අවස්තාවට අදාල බොහෝ තොරතුරු log සටහනේ සටහන් කරනව.මෙම ක්‍රමයේදී ඇතිවන ප්‍රශ්නය තමයි  සියලුම Action execute වීමට ප්‍රතමව මෙසේ log සටහනක ලිවීම. මෙය සෘජුවම මෙම මෘදුකාංගවල කාර්යක්ෂම තාවය කෙරෙහි බලපෑමක් සිදුකරනවා ඊට හේතුව interceptor එක වෙතට පැමිනෙන request නැවතත් ඊට අදාල action එක වෙත යොමුවන්නේ ඊට අදාල තොරතුරු මෙම log සටහන ලිවීමෙන් අනතුරුවයි.මෙම කාර්යක්ෂම තාවය අඩුවීම බොහෝවිට Web Application සදහා විශේෂයෙන් බලපානවා.එහි දල ආකාරය පහත රූපසටහනේ නිරූපණය වේ.රූප සටහනේ දැක්වෙන්නේ එක ගමන් කරන ආකාරය පිලිබදව අවබෙදයක් ගැනීමට පමණක් බව සලකන්න.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhylu8Qja5b4wgwsfB362Z3BeQKxygPpfl-7ntiKpvPbWcP72G7VXQBcCW3tCCsR7o-z-kFToGGlSwNa7FRzmnIKflT65gN20EWONZvpMTNdapXYqvA_lyMelRqV4t7LOGyl_V0hq5SpaJH/s1600/pic2.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 257px; height: 301px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhylu8Qja5b4wgwsfB362Z3BeQKxygPpfl-7ntiKpvPbWcP72G7VXQBcCW3tCCsR7o-z-kFToGGlSwNa7FRzmnIKflT65gN20EWONZvpMTNdapXYqvA_lyMelRqV4t7LOGyl_V0hq5SpaJH/s320/pic2.jpg" alt="" id="BLOGGER_PHOTO_ID_5481950165505490354" border="0" /&gt;&lt;/a&gt;මෙහිදී මෙම කාර්යක්ෂම තාවය අඩුවීමට බලපාන හේතුව මගහැරවා ගැනීමට අපට JMS යොදාගැනීමට පුලුවන්.මෙහිදී ප්‍රශ්නයට හේතුව වන්නේ (interceptor එක වෙතට පැමිනෙන request නැවතත් ඊට අදාල action එක වෙත යොමුවන්නේ ඊට අදාල තොරතුරු මෙම log සටහන ලිවීමෙන් අනතුරුවයි).මෙහිදී මෙම තත්වයෙන් මිදීමට අපට Interceptor එක ඉවත්කිරීමට හැකියාවක් නැහැ.නමුත් මෙහිදී අපිට Interceptor එක මගින් log සටහන ලිවීමේ කාර්යය කරණ අවස්තාව සදහා කුමක් හෝ පිලියමක් යෙදිය හැකියි.මෙහිදී මෙම කාර්යය වෙන කෙනෙකුට පවරා request එක කෙලින්ම Action එක වෙත යොමු කල හැකිනම් මෙම කාර්යක්ෂමතාවය පිලිබදව ප්‍රස්නයට පිලිතුරක් ලබාගත හැකියි.මෙහිදී  මෙම පහත රූපයේ ආකාරයට  අපට මෙ සදහා ලෙහෙසියෙන්ම පිලිතුරක් සොයාගත හැකියි.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGfr5WPIBVvZUcFeZAeDg0MZY9NXTdHx9yygG_0NFOJc89jVGyZyoLzuSw3h8XjYz9I3eGvhzh7QDQZDVizJMeNSRqnLA5F3hp8wRjYNr5qOxrQFGhSpM8FAH1pGcVcDWhAg7u8P537y5r/s1600/pic3.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 260px; height: 282px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGfr5WPIBVvZUcFeZAeDg0MZY9NXTdHx9yygG_0NFOJc89jVGyZyoLzuSw3h8XjYz9I3eGvhzh7QDQZDVizJMeNSRqnLA5F3hp8wRjYNr5qOxrQFGhSpM8FAH1pGcVcDWhAg7u8P537y5r/s320/pic3.jpg" alt="" id="BLOGGER_PHOTO_ID_5481950506491351522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;මෙහිදී ඉහත රූපයේ ආකාරයට Interceptor එක තුල ඇති Message sender function එක යොදාගෙන අපට log එකෙහි සටහන් කිරීමට අවශ්‍ය තොරතුරු message එකක්(Interceptor එකෙහි ඇති message sender එක යොදාගෙන)  මගින් Message queue එක වෙතට යොමු කර  request එක පමාවකින් තොරව නියමිත Action එක තුලට යොමු කල හැක.මෙහිදී log එක write කරන තෙක් බලාසිටීමෙන් අපතේයන කාලය ඉතුරුකර ගැනීමට හැකිවෙනවා.මෙම queue එකට යොමුකල message පිලිවලින් message receiver තුලට යොමුකරනු ලැබේ.මෙම receiver එක තුල අපට log සටහන් ලිවීම සදහා අවශ්‍ය කේත සටහන් ලියාගත හැකියි.මෙම ක්‍රමය නිසා කලින් තිබු කාර්යක්ෂමතාවය පිලිබදව ගැටලුව මගහරවා ගතහැක.මීට අමතරව JMS යොදාගත හැකි අවස්තා විශාල ගණනක් දක්නට ලැබෙනවා.මම සරළ උදාහරණය මගින් ඔබට මෘදුකාංග නිර්මාණයේදී අපට මතුවන ගැටලු සදාහා අපි  ඉගෙන ගන්නා සිද්දාන්තමය කරුණු යොදාගන්නා ආකාරය පිලිබදව යම්තරමක හෝ අවබෝදයක් ලැබෙන්නට ඇතැයි සිතමි.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjloENC31Jp4SUtq5vGUbECksKLOPtgT_gU1HsMQLAMxp2_HQVPH8N-PEwSyHJOWICArukoRPRT0w_PCF9j2Yc74DjjAwu0xT_M49VDPt1M9w-GNr9BFzJG8tl1KvvLlwKsw-vQQIaa15e5/s72-c/pic1.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>JNode</title><link>http://prabu-lk.blogspot.com/2010/03/jnode.html</link><pubDate>Thu, 25 Mar 2010 19:45:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-7317183614167317582</guid><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jnode.org/"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 160px; height: 77px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGS1Hh7RVSsFAu901nMFtgGCGjmcEJ0I1PsYFqqtEZ9X4np4hvYziDX58SSGylU6L0ojz_3RnERqgZPELUs75PQW09b_274F4KbqgYYkmfmZOYDiLWM5kPb83Tg8uAJfWFjWxvJdQTzwG3/s400/jnodeLog.jpg" alt="" id="BLOGGER_PHOTO_ID_5452580932395587714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;මේක අලුත් නිවුස් එකක් නොවුනත් වැදගත් නිසා බොලොග් එකට ඇඩි කරන්න හිතුවා.මේක මෙහෙයුම් පද්ධති හදන්න පුලුවන් Assembly,C වලින් විතරද කියල හිතපු අයට හොද නිවුස් එකක් වෙයි. මොකද  හැමදාම කතාකරන්නේ එක්කො ලිනක්ස් නැත්නම් වින්ඩොස් හරි මැක් හරි ගැනනෙ,ඉතින් අද වෙනමම විදිහේ මෙහෙයුම්&lt;br /&gt;පද්දතියක් ගැන තමයි ඉතාම කෙටියෙන් හදුන්වල දෙන්න හදන්නේ.මෙම මෙහෙයුම් පද්දතියට කියන්නේ &lt;a href="http://www.jnode.org/"&gt;JNode&lt;/a&gt; කියල .සමහර විට අහලත් ඇති.මෙහි විශේෂත්වය තමයි මෙය පරිගණක Java භාෂාව යොදාගෙන පරීක්ෂණ මට්ටමෙන් කරගෙන යන දෙයක් වීම .පරීක්ෂණ මට්ටමෙන් කිවුවට හොද මට්ටමක තියෙනවා දැනටමත්.ඇත්තටම සම්පුර්ණයෙන්ම Java  පරිගණක භාෂාව යොදාගෙන තමයි මේක කරලා තියෙන්නේ නමුත් මේ සදහා Kernal එක විදිහට Assembly Micro Kernal එකක් භාවිතා කරලා තිබෙනවා.මෙහි අතුරු මුහුණත් පහත රූපවල පෙනෙන ආකාරයට Java UI Component  හි ඇති  ස්වරූපය ගන්නවා.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jnode.org/"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 329px; height: 263px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXnhtIMW2J-oVsa5AMS-_M8Qzp3cRb42sPNm6zzlabbWWwiWR0YoxfwygW4r9SwgqfSZBxyRqYJ0Ww5IkN5RveKXzy-W8I31fCIUGsobHBB5XYDnYqH4vcHt6omhIZ6h3sAuIOKR3mFCT0/s400/jn024_5.png" alt="" id="BLOGGER_PHOTO_ID_5452579516735165634" border="0" /&gt;&lt;/a&gt;මෙය විවෘත හා නිදහස් මෘදුකාංගයක් විදිහට තමයි මෙය සංවර්ධනය  කර තිබෙන්නේ ඔබටත් මෙය සමඟ සම්බන්ධ වීමේ අවස්ථා තිබෙනවා.මෙය අත් හදා බැලීමට අවශ්‍ය නම් පහසුම ක්‍රමය වන්නේ ඔවුන් දී තිබෙන &lt;a href="http://www.jnode.org/download_latest"&gt;ISO image&lt;/a&gt; එක Virtual machine එකක් මත Run කර බැලීමයි.&lt;br /&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGS1Hh7RVSsFAu901nMFtgGCGjmcEJ0I1PsYFqqtEZ9X4np4hvYziDX58SSGylU6L0ojz_3RnERqgZPELUs75PQW09b_274F4KbqgYYkmfmZOYDiLWM5kPb83Tg8uAJfWFjWxvJdQTzwG3/s72-c/jnodeLog.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item><item><title>Google Code Jam 2010</title><link>http://prabu-lk.blogspot.com/2010/03/google-code-jam-2010.html</link><pubDate>Tue, 2 Mar 2010 06:47:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6914296902264504048.post-8215154721129639911</guid><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn418rzi3tkq-N6EtCQX67IGmvYCxA1ZO_RFnGBsgp2BNwhKycXjEq3VTnNvhDs5uc3-q9ep1gKlx2KeozIxkA4k_vWorC3xgLFinUhd1QrRqWnKA4Xx2KSWw_4l5FC3b3VuYpDPRcN1UV/s1600-h/code-jam.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 200px; height: 200px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn418rzi3tkq-N6EtCQX67IGmvYCxA1ZO_RFnGBsgp2BNwhKycXjEq3VTnNvhDs5uc3-q9ep1gKlx2KeozIxkA4k_vWorC3xgLFinUhd1QrRqWnKA4Xx2KSWw_4l5FC3b3VuYpDPRcN1UV/s400/code-jam.jpg" alt="" id="BLOGGER_PHOTO_ID_5443841492303966418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;ගුගල් සමාගම විසින් අවුරුදු පතා සිදු කරණු ලබන අංගයක් වන ගුගල් codejam තරග  මාලාවේ 2010 අවුරුද්ද සදහා වන තරගය &lt;a href="http://code.google.com/codejam/schedule.html"&gt;මැයි&lt;/a&gt; මස ආරම්බ කිරීමට  නියමිතයි.මේ සදහා register කර ගැනීම අප්‍රේල් මස 7 වෙනිදයින් ආරම්බවේ.මෙහිදී ගුගල් විසින් සපයනු ලබන සන්කීර්ණ ගැටලු සදහා පිලිතුරු  පරිනණක භාෂාවකින් ලිවීමට ඔබට සිදුවනු ඇත.මෙගැන වැඩි විස්තර දැන ගැනීමට  කැමතිනම් ඒ සදහා &lt;a href="http://code.google.com/codejam"&gt;මෙතනින්  පිවිසෙන්න. &lt;/a&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn418rzi3tkq-N6EtCQX67IGmvYCxA1ZO_RFnGBsgp2BNwhKycXjEq3VTnNvhDs5uc3-q9ep1gKlx2KeozIxkA4k_vWorC3xgLFinUhd1QrRqWnKA4Xx2KSWw_4l5FC3b3VuYpDPRcN1UV/s72-c/code-jam.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>prabathmail@yahoo.com (prabath ariyarathna)</author></item></channel></rss>