<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2350691947805997328</id><updated>2012-01-10T20:56:41.407-08:00</updated><category term='use cases'/><category term='activity diargam'/><title type='text'>Anil Saha</title><subtitle type='html'>Welcome to my website. I’m sharing my knowledge and experience here. Any comments, suggestion will be appreciated.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.anilsaha.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2350691947805997328/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.anilsaha.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Anil Saha</name><uri>http://www.blogger.com/profile/12033940101603596577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2350691947805997328.post-6407231074643612599</id><published>2010-03-18T01:44:00.000-07:00</published><updated>2012-01-10T20:56:41.424-08:00</updated><title type='text'>The agile experience</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;There are hundreds and thousands of literature available on internet about agile methodology. So, I’ll not dive myself to explain what it is and what it is not. Rather, this blog entry is purely my own experience on agile methodology. Couple of years ago I joined Financial Market System Development team of Standard Chartered Bank in Singapore and I was introduced with agile process. After working with traditional waterfall model for last few years, agile was like a fresh air to breath. I was so excited that I named my blog as “agilej” and in my dream I was about open a fast food chain in India with a name of agile food (read fast food!!).&lt;/span&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;Jokes apart, it was quite interesting to work with a model which has some pragmatic ideas to overcome the drawbacks of waterfall model. But, as we know, nothing is perfect in this world. If there are something wrong in waterfall, then of course it has good credentials as well, otherwise the majority of IT industry would not have opted for it. At the same time, agile is not Mr. Perfect. It is very young approach and there are so many speculations about it. The choice of the approach completely depends on what kind project we are doing, how much funding we have and how many good and smart developers are with you. Those factors drive the decisions to go with waterfall way or agile way.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;Before I start, here are list of abbreviations I’m using in the rest of the article:-&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;IT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :- Information technology&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;BA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :- Business Analyst&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;RA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :- Requirement Analysis&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;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;BRD&amp;nbsp;&amp;nbsp; :- Business Requirement Document&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;FS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :- Functional Specification. It is enhance version of BRD, typically written by BA.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;DD&amp;nbsp;&amp;nbsp;&amp;nbsp; :- Design Document&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;HLD&amp;nbsp; :- High Level Design&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;LLD&amp;nbsp;&amp;nbsp; :- Low Level Design&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;CR&amp;nbsp;&amp;nbsp;&amp;nbsp; :- Change Request&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;UML&amp;nbsp; :- Unified Modeling Language&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;CI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :- Continuous Integration&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;TDD :-Test Driven Development&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;Age old waterfall model is mature enough and there are some visible pitfalls. I’ll address on by one.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;The complex team structure is the main bottleneck. It opens lot of loopholes which can be political instruments within the project teams. Normally, in technical side, we’ve team lead, module lead, technical analyst and many more jargons you can imagine. The developer is the poorest guy in the team, who is treated like code monkey and although they are doing one of the important job, they hardly get the due respect, either in terms of pay or appreciation.&amp;nbsp; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;The mode of communication is liner in waterfall model. BA is the middle man between Developers and Business. Developers hardly get the opportunity to interact with business people. That is a huge gap in the process. The job of BA is very critical, who translate the business requirement into something which the user want to do by click of the mouse. Unfortunately, the translation is done correctly in many cases.&amp;nbsp; I’m not saying that BA is incompetent, but the communication will be much more productive if you include developers in all the decision making process. Business people may need some functionality which may be technically challenging; the developers are better person to understand than the BA.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;What is the difference between project manager and project lead?&amp;nbsp; If you google it, you will get some theoretical answers. But practically are those roles are not identical? That is also one of the problems: too many managers. And here agile is very lean.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;There is no doubt that documentation is as important as the binaries. But, the waterfall model put so much stress on documentation, that we are drifted away from the real software product. Documents like BRD, FS, DD (some even go for HLD, LLD) can be done in smart and lean way. We do not need so much garbage. UML is the best tool to document all the necessary artifacts. That will reduce hundreds pages of FS into few sheets of use cases, activity diagrams, which are easier to understand.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;The initial phases of waterfall model viz. RA and design are treated like honeymoon period of the project. People just talk and talk and write something on the functional specification, which changes after one week. Fortunately some organizations do some static prototyping of the delivery, but most company depends on the abstractions of BRD or FS. It is assumed that other parties involved in the project will understand that collection of sheets. And honestly speaking that happens very rarely.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;Now, enough shit about waterfall model. Time to give some claps for the agile process:-&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;In a typical waterfall model, the business gets the taste of the software in UAT, where user will test whether the product is acceptable or not. I worked with a bank before with a huge retail banking project. It took almost a year for RA, six months of design and six months of development. So, a requirement which was quoted by user one year ago in the BRD, he can see it after twelve months. And hardly there are cases that they will be happy. In today’s financial word, one year is a huge time. So, if the user is not happy with UAT (which eventually happens!!), a lot of extra pain is gifted to the project team. Agile is more pragmatic in this regard. In agile practice, there no clear separation RA, design and development. Unlike waterfall, agile deliver a workable running piece of software in an iteration. Iteration could be of one or two weeks, depending on the complexity of the delivery. So, after user came up with a requirement, the BA and developer can deliver that in iteration. Business can test it and give their feedback. BA and Developers work together to implement that. So, this cycle will reduce the chances of getting surprised.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;CI is very powerful feature of agile. Unlike waterfall, where a separate team is created to look after build and deployment process, agile automate it by using CI products like atlassian bamboo and many other. As I told, agile deliver in iteration and believes in software as evolving process, we need to deliver very quickly. We can configure the frequency of build and deployment&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;Agile gives importance to people over process .Unlike waterfall, developers get the deserved respect. They are part of the important decision making process and can talk with the business people directly, if needed.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;Nice collaborating platforms like Mingle or JIRA are very powerful to show the current status of the project and who is supposed to do what. Every stakeholder of the project and login to system and can see what is on his plate.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;Agile community vividly speaks to replace heavyweight BRD/FS by UML diagrams and unit tests. Tools like Enterprise architect are very powerful which can be used by any stake holder of the project. Also, TDD approach is very practical where the unit tests encapsulate the little tiny functions. There are powerful tools available for code coverage, static code analysis to produce nice and healthy code.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;Some people in IT community see agile as a revolution in software development process, something like October revolution. Lots of people are coming up with some new ideas to shape agile process. Some says, we don’t need any testers, unit tests are enough; some says don’t do documentation at all. In&lt;a href="http://www.infoq.com/"&gt; http://www.infoq.com&lt;/a&gt;&amp;nbsp; you can see a lot of blogs, articles.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: xx-small;"&gt;The bottom line is waterfall will coexist with agile. May be new development projects will give a try to the agile methodology, but maintenance and enhancement projects will keep on using waterfall model. In my opinion use agile process if and only if all the stakeholders of the project understand what it is and what is expected out of it. Don’t just jump into agile, because your friend in other company is doing it. More and more organizations are going to adopt agile in future, but we can not erase waterfall model immediately. Big firms like financial institutes, which are globally distributed, have offshore onsite model, may find it difficult to switch to agile. Although there are agile models for distributed systems, but I know how much effective they are.&amp;nbsp; Let see how the agile process is shaping up.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2350691947805997328-6407231074643612599?l=www.anilsaha.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.anilsaha.com/feeds/6407231074643612599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2350691947805997328&amp;postID=6407231074643612599' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2350691947805997328/posts/default/6407231074643612599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2350691947805997328/posts/default/6407231074643612599'/><link rel='alternate' type='text/html' href='http://www.anilsaha.com/2010/03/agile-experience.html' title='The agile experience'/><author><name>Anil Saha</name><uri>http://www.blogger.com/profile/12033940101603596577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2350691947805997328.post-2460680786426514086</id><published>2009-11-12T18:41:00.000-08:00</published><updated>2010-03-08T19:48:14.312-08:00</updated><title type='text'>Apache HTTP Server Installation and Configuration on Red Hat Linux</title><content type='html'>&lt;div style="color: black; font-family: Verdana,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: x-small;"&gt;In the early days of my career I had the impression that apache http server is a part of apache tomcat server. But those are completely two different products.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;span style="font-size: x-small;"&gt;I’m very much familiar with tomcat, but never had any chance to install and configure apache http server from scratch. In my current project, we wanted to secure our application by switching to https from http. The application is running on Jboss. So, there are two choices: - either configure Jboss for https or use apache http server to do that job. If the apache http server is configured to https, it will redirect the requests to Jboss. So, we opted for the second option:- to use http server.It was not an easy task for me, but finally I managed to accomplish it with lot of googling and &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;trial and error methods. In this blog entry, I‘ll share my experience.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: large;"&gt;Apache HTTP Server Installation&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: x-small;"&gt;First we need to install apache http server. If you are installing on windows, it is very easy. Just few clicks and you are done. But, unfortunately the actual pain will start once you change the httpd.conf file for SSL configuration. The apache http service will not start with some stupid message and you are stuck. So, my advice is to download the apache http binaries for Linux or Solaris boxes. I did on Red Hat Linux box, so I’ll note down the steps:-&lt;/span&gt;&lt;/div&gt;&lt;ul style="color: black; font-family: Verdana,sans-serif; text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Download latest version of binaries (I used httpd-2.0.63.tar.gz) from apache http website.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Copy it in /tmp directory.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Extract  it using the command&amp;nbsp; tar -xvzf httpd-2.0.63.tar.gz&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;A directory httpd-2.0.63 will be created. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Go to the directory  /tmp/httpd-2.0.63 &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Execute the below commands step by step:- &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="color: black; font-family: Verdana,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1) make clean &lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2) ./configure --enable-rewrite --enable-ssl --with-ssl &lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3) make &lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4) make install &lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: x-small;"&gt;Note that you need root access to execute the above commands. The above process will create an Apache server in /usr/local/apache2 directory.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: x-small;"&gt;So, apache is ready with SSL and rewrite modules.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: large;"&gt;Private Key and Certificate Generation&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Now, we need the keys and certificates for the SSL.JDK ships with a utility called keytool which is used to create and manage encryption keys and certificates. We need to do the following:-&lt;/span&gt;&lt;/div&gt;&lt;ul style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Use the keytool utility to create a RSA key pair (public key and private key). Here are the sample command :-&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [root@box sctool]# cd /tmp/jks/&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [root@box jks]# /usr/java/jdk1.6.0_16/bin/&lt;i&gt;keytool -genkeypair -alias myapp.alias -dname&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "CN=myboxname.com, OU=Department, O=XYZ Bank, L=Singapore, ST=Singapore, C=SG" -keystore&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mykeystore.jks&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Enter keystore password:&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;Re-enter new password:&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;Enter key password for &lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;(RETURN if same as keystore password):&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;[root@box jks]# ls&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;mykeystore.jks&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;[root@box jks]# /usr/java/jdk1.6.0_16/bin/&lt;i&gt;keytool -list -keystore mykeystore.jks&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;Enter keystore password:&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;Keystore type: JKS&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;Keystore provider: SUN&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;Your keystore contains 1 entry&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;myapp.alias, Nov 3, 2009, PrivateKeyEntry,&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;Certificate fingerprint (MD5): AD:85:96:0F:33:BB:35:BF:5B:0D:C9:92:21:1F:A2:61&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;Please note the name myboxname.com . It must exactly match with the host name of the&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;box on which the&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;application will be running. In, my case, myboxname.com is the &lt;/span&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;hostname of the box on which JBoss server &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;is running. The application URL will &lt;/span&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;be something like https://myboxname.com/myappname. So, give extra&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;attention &lt;/span&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;while creating key pairs. &lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt; &lt;/myapp.alias&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt; We need to generate a csr file from the public key. &lt;/myapp.alias&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;[root@box jks]# /usr/java/jdk1.6.0_16/bin/&lt;i&gt;keytool -certreq -alias myapp.alias -file myapp.csr -keystore &lt;/i&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&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;/i&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&lt;i&gt;mykeystore.jks&lt;/i&gt;&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;Enter keystore password:&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;[root@box jks]# ls&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;myapp.csr  mykeystore.jks&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;[root@box jks]#&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;The myapp.csr looks similar to below &lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;[root@box jks]# more myapp.csr&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;-----BEGIN NEW CERTIFICATE REQUEST----- &lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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;MIICejCCAjgCAQAwdTELMAkGA1UEBhMCU0cxEjAQBgNVBAgTCVNpbmdhcG9yZTESMBAGA1UEBxMJ U2luZ2Fwb3JlMREwDwYDVQQKEwhYWVogQmFuazETMBEGA1UECxMKRGVwYXJ0bWVudDEWMBQGA1UEAxMNb&lt;br /&gt;XlhcHBuYW1lLmNvbTCCAbgwggEsBgcqhkjOOAQBMIIBHwKBgQD9f1OBHXUSKVLfSpwu7OTn&lt;br /&gt;9hG3UjzvRADDHj+AtlEmaUVdQCJR+1k9jVj6v8X1ujD2y5tVbNeBO4AdNG/yZmC3a5lQpaSfn+gE&lt;br /&gt;exAiwk+7qdf+t8Yb+DtX58aophUPBPuD9tPFHsMCNVQTWhaRMvZ1864rYdcq7/IiAxmd0UgBxwIV&lt;br /&gt;AJdgUI8VIwvMspK5gqLrhAvwWBz1AoGBAPfhoIXWmz3ey7yrXDa4V7l5lK+7+jrqgvlXTAs9B4Jn&lt;br /&gt;UVlXjrrUWU/mcQcQgYC0SRZxI+hMKBYTt88JMozIpuE8FnqLVHyNKOCjrh4rs6Z1kW6jfwv6ITVi&lt;br /&gt;8ftiegEkO8yk8b6oUZCJqIPf4VrlnwaSi2ZegHtVJWQBTDv+z0kqA4GFAAKBgQCtlvqZD0z9Jvjn&lt;br /&gt;ShxfqpnXooCmP0ncVEog/yGYJ3irytzI0EERTKxeYq6tUCwUWlr1xq1worOp94m/ETJFJYPkAUkA&lt;br /&gt;qaLorCStyhsD+tS+jmFa2nr1ywAErcZJ7qTDoYPWLXRB8jpo3fwzfSx66roSwPwarrWP1ZLP93+H&lt;br /&gt;w9LZq6AAMAsGByqGSM44BAMFAAMvADAsAhQ50JZ11KPJ0S0ZN4BAF08btQfGYAIUNVFJCuiomeR3&lt;br /&gt;99xnK/vS9tZ5/uE=&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt; &lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;-----END NEW CERTIFICATE REQUEST-----&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;[root@box jks]#&lt;br /&gt;&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;Submit the myapp.csr file to the certificate issuer. If it is an internet application, you&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;need to get certificate&amp;nbsp;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;from venders like VeriSign or any other venders. If it is&amp;nbsp;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;intranet application, there might that some security&amp;nbsp;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;department in your&amp;nbsp;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;organization who can issue a certificate for you. Or else you can create your own using&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;openssl.&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt; The private key is also needed in RSA format, not in PKCS#8 format.&lt;/myapp.alias&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;We need to extract the private key from mykeystore.jks file against the alias myapp.alias.&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;Please have a look into the below link on how to extract the private key &lt;a href="http://www.blogger.com/goog_1258080856649"&gt;http://conshell.net&lt;/a&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;a href="http://www.blogger.com/goog_1258080856649"&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;/wiki/index.php&lt;/myapp.alias&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&lt;a href="http://conshell.net/wiki/index.php/Keytool_to_OpenSSL_Conversion_tips"&gt;/Keytool_to_OpenSSL_Conversion_tips &lt;/a&gt; &lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;There is a free tool to extract the private key.&lt;a href="http://www.blogger.com/%20http://yellowcat1.free.fr/index_ktl.html"&gt; http://yellowcat1.free.fr/index_ktl.html&lt;/a&gt;. Use java Web start to&amp;nbsp; &lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;launch the application&lt;/myapp.alias&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; color: black; font-family: Verdana,sans-serif; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; color: black; font-family: Verdana,sans-serif; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://1.bp.blogspot.com/_Jt6Mc7AMI5U/SvvNqNi73aI/AAAAAAAABgQ/8qKZvryyZqo/s1600-h/11.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_Jt6Mc7AMI5U/SvvNqNi73aI/AAAAAAAABgQ/8qKZvryyZqo/s400/11.JPG" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&lt;br /&gt;&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt; &lt;/myapp.alias&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;nbsp; Screen shots to extract the private key&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; color: black; font-family: Verdana,sans-serif; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://3.bp.blogspot.com/_Jt6Mc7AMI5U/SvvOp8Ty0_I/AAAAAAAABgY/ieKhn6SkNgA/s1600-h/22.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_Jt6Mc7AMI5U/SvvOp8Ty0_I/AAAAAAAABgY/ieKhn6SkNgA/s640/22.JPG" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; color: black; font-family: Verdana,sans-serif; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://2.bp.blogspot.com/_Jt6Mc7AMI5U/SvvPFLnMsvI/AAAAAAAABgo/rpS0MpyHjsY/s1600-h/33.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_Jt6Mc7AMI5U/SvvPFLnMsvI/AAAAAAAABgo/rpS0MpyHjsY/s400/33.JPG" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;We need the private key in RSA format, because apache does not understand PKCS#8 PEM format. So, finally, we get three files out of the above exercise:- &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1. root.cer &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 2. myapp.cer &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3. myapp.key&amp;nbsp;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt; &lt;/myapp.alias&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;myapp.alias&gt;&lt;/myapp.alias&gt;Configuring /usr/local/apache2&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt; &lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;1. Create www directory under /usr/local/apache2 &lt;br /&gt;2. Create myapp directory under /usr/local/apache2/www.&lt;br /&gt;3. Create ssl.crt directory under /usr/local/apache2. &lt;br /&gt;4. Copy the 3 files in /usr/local/apache2/ssl.crt directory.&amp;nbsp;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&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; (1)root.cer&amp;nbsp;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&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; (2)myapp.cer &lt;br /&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; (3)myapp.key &lt;br /&gt;5. Copy mod_jk.so to /usr/local/apache2/modules.&lt;br /&gt;6. Copy workers.properties to /usr/local/apache2/conf. The content is &lt;br /&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; worker.list=jboss_ajp13&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;worker.jboss_ajp13.port=8009&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;worker.jboss_ajp13.host= myboxname.com&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;worker.jboss_ajp13.type=ajp13&lt;br /&gt;&lt;br /&gt;7. Append the below entries /usr/local/apache2/conf httpd.conf file&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;NameVirtualHost *:80&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;NameVirtualHost *:443&lt;br /&gt;&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;nbsp;&amp;nbsp; ServerName myboxname.com&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SSLEngine on&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SSLOptions +StdEnvVars +ExportCertData +StrictRequire&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SSLCertificateFile /usr/local/apache2/ssl.crt/ myapp.cer&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SSLCertificateKeyFile /usr/local/apache2/ssl.crt/myapp.key&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SSLCertificateChainFile /usr/local/apache2/ssl.crt/root.cer&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DocumentRoot /usr/local/apache2/www/myapp&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ErrorLog /usr/local/apache2/logs/myapp-error_log&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CustomLog /usr/local/apache2/logs/myapp-access_log common&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;IfModule mod_jk.c&amp;gt;&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JkMount /* jboss_ajp13&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/IfModule&amp;gt;&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;lt;VirtualHost *:80 &amp;gt;&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RewriteEngine On&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RewriteCond %{HTTPS} off&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}myappname&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DocumentRoot&amp;nbsp; /usr/local/apache2/www/myapp&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServerName&amp;nbsp; myboxname.com &lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ErrorLog /usr/local/apache2/logs/xyz-error_log&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CustomLog /usr/local/apache2/logs/xyz-access_log common&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&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; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;&lt;br /&gt;8.Restart apache2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /usr/local/apache2/bin/apachectl restart&lt;/myapp.alias&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;myapp.alias&gt; &lt;/myapp.alias&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&lt;span style="font-size: large;"&gt;Conclusion&amp;nbsp;&lt;/span&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&lt;span style="font-size: x-small;"&gt;So, now we are ready to go. Apache http server is running on port 80 and Jboss is running on 8080. So, all requests to apache will be forwarded to jboss application server.&lt;/span&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&lt;span style="font-size: x-small;"&gt; https://myboxname.com/myappname&lt;/span&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt; &lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;myapp.alias&gt;&lt;br /&gt;&lt;/myapp.alias&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2350691947805997328-2460680786426514086?l=www.anilsaha.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.anilsaha.com/feeds/2460680786426514086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2350691947805997328&amp;postID=2460680786426514086' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2350691947805997328/posts/default/2460680786426514086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2350691947805997328/posts/default/2460680786426514086'/><link rel='alternate' type='text/html' href='http://www.anilsaha.com/2009/11/apache-http-server-installation-and.html' title='Apache HTTP Server Installation and Configuration on Red Hat Linux'/><author><name>Anil Saha</name><uri>http://www.blogger.com/profile/12033940101603596577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Jt6Mc7AMI5U/SvvNqNi73aI/AAAAAAAABgQ/8qKZvryyZqo/s72-c/11.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2350691947805997328.post-3845528447721263002</id><published>2009-05-28T19:04:00.000-07:00</published><updated>2010-03-08T19:41:43.975-08:00</updated><title type='text'>Passing oracle.sql.ARRAY to a Stored Procedure</title><content type='html'>&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;The scope of this post is to share my experience to pass an oracle ARRAY to a stored procedure. It was a bit painful exercise and I will be happy if it can help my fellow developers.&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;Our objective was to do a bulk insert into Oracle table. We are using spring/hibernate configuration to persist in oracle. But there was a situation where we need to persist millions of records at one shot and hibernate was bit slow for that. So, our DBA wrote a stored procedure to do a bulk insert. &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;But we need to populate the oracle ARRAY with all records to be inserted using java code. I faced two issues &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;ol style="color: black;"&gt;&lt;li&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;Getting native oracle connection from a wrapped connection. In general, the application server (Jboss, Geronimo for example) or web server (like Tomcat) uses javax.sql.DataSource interface to wrap the native database connection. &lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;Constructing  two dimensional ARRAY  and STRUCT &lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="color: black;"&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;  &lt;/span&gt;&lt;span style="font-size: x-small; font-weight: bold;"&gt;&lt;span style="font-family: verdana;"&gt;Oracle Related stuff&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt; &lt;br /&gt;&lt;br /&gt;Suppose, we have a database table called TABLE_TEST &lt;br /&gt;&lt;br /&gt;CREATE TABLE "Schema"."TABLE_TEST" &lt;br /&gt;( "ID" NUMBER(10,0) NOT NULL, &lt;br /&gt;"NAME" VARCHAR2 NOT NUL, &lt;br /&gt;"ATTRIBUTE1" VARCHAR2, &lt;br /&gt;"ATTRIBUTE2" VARCHAR2, &lt;br /&gt;CONSTRAINT "PK_ TABLE_TEST" PRIMARY KEY ("ID") &lt;br /&gt;) &lt;br /&gt;&lt;br /&gt;Create a type &lt;br /&gt;&lt;br /&gt;create or replace type T_TYPE is object ( &lt;br /&gt;NAME                            VARCHAR2(100), &lt;br /&gt;ATTRIBUTE1                      VARCHAR2(100), &lt;br /&gt;ATTRIBUTE2                      VARCHAR2(100) &lt;br /&gt;) &lt;br /&gt;&lt;br /&gt;Create a type TB_T_TYPE  of type T_TYPE &lt;br /&gt;create or replace type  TB_T_TYPE is table of  T_TYPE; &lt;br /&gt;&lt;br /&gt;Stored procedure &lt;br /&gt;It generate the Id from the sequence &lt;br /&gt;&lt;br /&gt;create or replace procedure  POPULATE_ TABLE_TEST (example TB_T_TYPE) as &lt;br /&gt;type t_tb_seq is table of number; &lt;br /&gt;l_t_seq t_tb_seq := t_tb_seq(); &lt;br /&gt;begin &lt;br /&gt;for i in 1.. example.count loop &lt;br /&gt;l_t_seq.extend; &lt;br /&gt;select s_ TABLE_TEST.nextval into l_t_seq(i) from dual; &lt;br /&gt;end loop; &lt;br /&gt;forall i in 1.. example.count &lt;br /&gt;insert into TABLE_TEST(id,name,attribute1,attribute2) &lt;br /&gt;values (l_t_seq(i), &lt;br /&gt;treat(example(i) as T_TYPE).NAME, &lt;br /&gt;treat(example(i) as T_TYPE).ATTRIBUTE1, &lt;br /&gt;treat(example(i) as T_TYPE).ATTRIBUTE2 &lt;br /&gt;); &lt;br /&gt;end; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: x-small; font-weight: bold;"&gt;&lt;span style="font-family: verdana;"&gt;Java code&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt; &lt;br /&gt;&lt;br /&gt;applicationContext &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;bean class="org.springframework.jdbc.core.JdbcTemplate" id="jdbcTemplate"&gt;&lt;/bean&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;&amp;nbsp;&lt;bean class="&amp;lt;property name=" id="jdbctemplate" ref="appDatasourceName"&gt;&lt;/bean&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;&lt;bean class="&amp;lt;property name=" id="jdbctemplate" ref="appDatasourceName"&gt;org.springframework.jdbc.core.JdbcTemplate"&amp;gt;&lt;/bean&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;bean class="org.springframework.jdbc.core.JdbcTemplate" id="jdbcTemplate"&gt;&lt;/bean&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;bean class="org.springframework.jdbc.core.JdbcTemplate" id="jdbcTemplate"&gt;&lt;/bean&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;OracleStoredProcedure &lt;br /&gt;&lt;br /&gt;import oracle.sql.ARRAY; &lt;br /&gt;import oracle.sql.ArrayDescriptor; &lt;br /&gt;import oracle.sql.STRUCT; &lt;br /&gt;import oracle.sql.StructDescriptor; &lt;br /&gt;&lt;br /&gt;public class OracleStoredProcedure { &lt;br /&gt;private JdbcTemplate jdbcTemplate; &lt;br /&gt;private final String ORACLE_STRUCT = "T_TYPE "; &lt;br /&gt;private final String ORACLE_ARRAY = "TB_T_TYPE"; &lt;br /&gt;private static Log log = LogFactory.getLog(OracleStoredProcedure.class); &lt;br /&gt;&lt;br /&gt;public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { &lt;br /&gt;this.jdbcTemplate = jdbcTemplate; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public void insertAll(List&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;tabletest&gt;&lt;span style="font-family: verdana;"&gt; records) throws DaoException { &lt;br /&gt;Connection conn=null; &lt;br /&gt;StructDescriptor structDescriptor=null; &lt;br /&gt;ArrayDescriptor arrayDescriptor=null; &lt;br /&gt;int iSize = records.size(); &lt;br /&gt;Object[] arrObj =null; &lt;br /&gt;Object[][] recObj =null; &lt;br /&gt;try { &lt;br /&gt;//For Tomcat/JBoss &lt;br /&gt;conn=jdbcTemplate.getDataSource().getConnection(); &lt;br /&gt;log.debug("got connection from jdbcTemplate "); &lt;br /&gt;structDescriptor = StructDescriptor.createDescriptor(ORACLE_STRUCT, conn.getMetaData().getConnection()); &lt;br /&gt;arrayDescriptor = ArrayDescriptor.createDescriptor(ORACLE_ARRAY, conn.getMetaData().getConnection()); &lt;br /&gt;&lt;br /&gt;arrObj = new Object[iSize]; &lt;br /&gt;recObj = new Object[iSize][5]; &lt;br /&gt;&lt;/span&gt;&lt;/tabletest&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;//Structuring obj and arrays&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;&lt;b&gt;&lt;span style="font-family: 'Courier New';"&gt;for&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: 'Courier New';"&gt; (&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: 'Courier New';"&gt;int&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: 'Courier New';"&gt; j = 0; j &amp;lt;&lt;span style="font-family: verdana;"&gt;&amp;nbsp;iSize ;j++){&lt;/span&gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;TableTest ob= records.get(j);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;recObj[j][0]=ob.getName();&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;recObj[j][1]=ob.getAttribute1();&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;recObj[j][2]=ob.getAttribute2();&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;arrObj[j] = new STRUCT(structDescriptor, conn.getMetaData().getConnection(), recObj[j]);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ARRAY arr = new ARRAY(arrayDescriptor, conn.getMetaData().getConnection(), recObj); &amp;nbsp; &lt;/span&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PreparedStatement preparedStatement=conn.prepareStatement("{call POPULATE_ TABLE_TEST (?)}");&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;preparedStatement.setArray(1, arr);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;preparedStatement.execute();&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;log.debug("Stored procedure POPULATE_ TABLE_TEST is executed");&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;}catch (Exception e) {&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;throw new DaoException("Error while doing bulk insert using POPULATE_ TABLE_TEST Stored procedure", e);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;} finally{&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;try {&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (conn != null){&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;conn.close();&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;log.debug("connection from jdbcTemplate is closed");&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;} catch (SQLException e2) {&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;log.debug("problem while closing connection");&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;}&lt;/span&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: x-small;"&gt;}&lt;/span&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small; white-space: pre;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2350691947805997328-3845528447721263002?l=www.anilsaha.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.anilsaha.com/feeds/3845528447721263002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2350691947805997328&amp;postID=3845528447721263002' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2350691947805997328/posts/default/3845528447721263002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2350691947805997328/posts/default/3845528447721263002'/><link rel='alternate' type='text/html' href='http://www.anilsaha.com/2009/05/passing-oraclesqlarray-to-stored.html' title='Passing oracle.sql.ARRAY to a Stored Procedure'/><author><name>Anil Saha</name><uri>http://www.blogger.com/profile/12033940101603596577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2350691947805997328.post-3518308032108081909</id><published>2009-01-07T03:35:00.000-08:00</published><updated>2010-03-08T19:46:38.299-08:00</updated><title type='text'>My presentation on EJB3.0</title><content type='html'>&lt;span style="color: #6633ff; font-size: x-small;"&gt;&lt;span style="color: black; font-family: verdana;"&gt;Long long days ago(more than 2 years!!) I did a presentation on EJB3.0 for Singapore Java user group. Chirstopher hosted the slides on the web. While browsing, I found it Here is the link.&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.jroller.com/meetupsingapore/entry/summary_of_meetup_28th_september" style="font-family: verdana;"&gt; EJB3.0 &lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2350691947805997328-3518308032108081909?l=www.anilsaha.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.anilsaha.com/feeds/3518308032108081909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2350691947805997328&amp;postID=3518308032108081909' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2350691947805997328/posts/default/3518308032108081909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2350691947805997328/posts/default/3518308032108081909'/><link rel='alternate' type='text/html' href='http://www.anilsaha.com/2009/01/my-presentation-on-ejb30.html' title='My presentation on EJB3.0'/><author><name>Anil Saha</name><uri>http://www.blogger.com/profile/12033940101603596577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2350691947805997328.post-811832180785038535</id><published>2008-12-27T18:43:00.000-08:00</published><updated>2010-03-08T19:45:03.328-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='activity diargam'/><category scheme='http://www.blogger.com/atom/ns#' term='use cases'/><title type='text'>Software Architecture Documentation.Part-I</title><content type='html'>&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;&lt;a name='more'&gt;&lt;/a&gt;In my current project I’ve been assigned the task to make a nice-and-easy-to-understand software architecture document. The system which we are developing is brand new one and it connects 95% of the products available in our bank. As a follower of agile methodology, we need to be very precise with our document. Unlike waterfall model, we did not want to over blot by High Level Design (HLD), Low Level design (LLD) documents. Business Requirement Documents (BRD) by the Business Analyst (BA) is the source of our document. So, the scope of the document was to replace 100 pages of FS by some concise but meaningful document. As a matter of fact, UML is the language of choice for our document, because its n-dimensional&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;graphical representation explains the scope of the proposed system with details workflow and business processes. Also, all parties involved in the project, viz. Business, BA, Developer, Architect, Manager can participate to make it robust and powerful. From the development team I get the chance to work with Use cases and activity diagrams and it is very interesting job with a bit of pain. But as they say “No pain, No gain”, I welcome this pain to have a wonderful experience.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;As we know architecture is the blue print of a proposed system, either for software or construction or any other industry. So, documenting the architecture is a very crucial task. Multiple parties involved in the project have different expectations from the document. Business people don’t care about the jargons of UML. They just want to click on the screen and get the business logic to be executed in the expected manner as agreed in BRD.BA wants to make sure that the activity diagrams rightly explain the workflow, so on and so forth. Based on his previous experience my boss advised me to focus on the below UML diagrams:-&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style="margin-top: 0cm;" type="disc"&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;Context of the Project&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;. It specifies      what the proposed system is supposed to do. How is going make the      difference with the existing process&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;Domain Model&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;. It is the repository of      all vocabularies used in the project. If any new jargon is discovered,      this model needs to be updated as well.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;Data Model&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;. It is basically the various      database tables and/or external downloads from other system.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;Business Process&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;. An array      of activities which is system driven and user don’t participate with it      explicitly. For example, we need to load all the trades and bonds before      the user start clicking on the system. An loading the trades and bonds      consists of several steps which we call business process&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;Use cases&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;. It is explicitly user driven      activity. For example, users added a new product in the system or send a      e-mail to some customer, that is an use case. I’ll explain it more details      in the later part of this post&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;So on and so forth&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="apple-style-span"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;What is a use case? After asking google, I got millions of records within a fraction of second. But more I dig into the links, the more I get diverted from my objective. It’s seems to be like modern art, which can be explained from different angles. For some people, it may be just a few lines of scratches on a paper, but could be an interesting fact. Anyway, wikipedia [&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Use_case"&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;http://en.wikipedia.org/wiki/Use_case&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;] defined it with proper attributes and let me share what I understood.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;A use case is a collection of activities which will be performed on the proposed application. It must be explained with goals, summary, pre-conditions, post-conditions, exception handlings, notes, issues (if anything is note clear from BA/ Business side), so on and so forth. It should be assisted with activity diagram(s) to explain how the use case will be initiated and the state of the system will be modified after the use case is performed. For example currency code maintenance can be thought as a use case which will do a typical CRUD (Create, Read, Update and Delete) operation. ISO currency code is basic entity in bank, so maintenance of it is very common. Initially I made four different use cases for each CRUD operations. But that was not a practical and reasonable approach. A use case can be compared as a Java class which contains variables, object references, methods, constructors etc. If you just think of variable, it is just an attribute which is useless unless it is associated with a class or interface. Same is true for a use case. It is not just an UML diagram which explains the click event by the user on the screen, but an entire process to describe how the system will behave after an action is taken by the user and we need to capture the behaviour of the system from all possible angles. That makes a use case. So, if we describe the CRUD operation on currency code with all possible attributes, I think we can create a use case. But, there might be some room for more improvement and only experience and teach us how to do it.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2350691947805997328-811832180785038535?l=www.anilsaha.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.anilsaha.com/feeds/811832180785038535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2350691947805997328&amp;postID=811832180785038535' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2350691947805997328/posts/default/811832180785038535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2350691947805997328/posts/default/811832180785038535'/><link rel='alternate' type='text/html' href='http://www.anilsaha.com/2008/12/software-architecture-documentationpart.html' title='Software Architecture Documentation.Part-I'/><author><name>Anil Saha</name><uri>http://www.blogger.com/profile/12033940101603596577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2350691947805997328.post-7926920965281049961</id><published>2008-12-25T21:11:00.000-08:00</published><updated>2008-12-27T18:50:34.403-08:00</updated><title type='text'>My Singnature in Agilemanifesto</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;http://agilemanifesto.org/sign/display.cgi?ms=000000135&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2350691947805997328-7926920965281049961?l=www.anilsaha.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.anilsaha.com/feeds/7926920965281049961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2350691947805997328&amp;postID=7926920965281049961' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2350691947805997328/posts/default/7926920965281049961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2350691947805997328/posts/default/7926920965281049961'/><link rel='alternate' type='text/html' href='http://www.anilsaha.com/2008/12/my-singnature-in-agilemanifesto.html' title='My Singnature in Agilemanifesto'/><author><name>Anil Saha</name><uri>http://www.blogger.com/profile/12033940101603596577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2350691947805997328.post-6177260330044567015</id><published>2008-11-21T21:32:00.000-08:00</published><updated>2010-03-08T19:47:07.585-08:00</updated><title type='text'>shall vs will</title><content type='html'>&lt;div style="color: black; text-align: justify;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" face="verdana" style="color: black; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span"&gt;There is a funny difference between the age old words ‘shall’ and ‘will’! No, I’m not talking about grammar. &lt;a name='more'&gt;&lt;/a&gt;I was involved with an internet banking project for a local Singapore bank and got a chance to work with a Functional Requirement Specification (FRS) document for a while. Then I came to know the subtle difference between shall and will. According to &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Shall"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span"&gt;Wikipedia&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span"&gt;  ”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span"&gt;Most requirement specifications use the word shall&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span"&gt; to denote something that is required, while reserving the &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span"&gt;will&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span"&gt; for a statement of fact … requirements with ‘shall’ are the mandatory requirements, meaning, ‘must’, or ‘have to’.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span"&gt;” &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" face="verdana" style="color: black; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span"&gt;So, if the project is supposed to be delivered by some software firm, the business analyst guys have to pay extra attention to shall and will!!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" face="verdana" style="color: black; text-align: justify;"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" face="verdana" style="color: black; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span"&gt;It is quite interesting fact and also a crap at the same time. May be that is one of the reason, agile methodologies talk vividly to replace heavy-weight FRS documents by some understandable UML diagrams. It will save both time and cost and developers&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span"&gt;can focus on the delivery rather than playing politics with the weapon of shall and will.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2350691947805997328-6177260330044567015?l=www.anilsaha.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.anilsaha.com/feeds/6177260330044567015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2350691947805997328&amp;postID=6177260330044567015' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2350691947805997328/posts/default/6177260330044567015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2350691947805997328/posts/default/6177260330044567015'/><link rel='alternate' type='text/html' href='http://www.anilsaha.com/2008/11/shall-vs-will.html' title='shall vs will'/><author><name>Anil Saha</name><uri>http://www.blogger.com/profile/12033940101603596577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2350691947805997328.post-7206186120582940743</id><published>2008-11-21T19:10:00.000-08:00</published><updated>2008-12-27T18:51:59.726-08:00</updated><title type='text'>kick off...</title><content type='html'>&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 11"&gt;&lt;meta name="Originator" content="Microsoft Word 11"&gt;&lt;link rel="File-List" href="file:///C:%5CUsers%5CANIL_S%7E1%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0cm; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:"Times New Roman";} @page Section1 	{size:595.3pt 841.9pt; 	margin:72.0pt 90.0pt 72.0pt 90.0pt; 	mso-header-margin:35.4pt; 	mso-footer-margin:35.4pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman"; 	mso-ansi-language:#0400; 	mso-fareast-language:#0400; 	mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p face="verdana" style="text-align: justify; " class="MsoNormal"&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;Finally, I kick off my blog! It is quite amazing to see how the blogging community is growing and contributing a lot to the human knowledge base. I personally benefited from a lot of excellent blogs to understand some complex concept or to crack a problem. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;Also, sometimes it provides links which you will get after a lot of googling. It’s has been quite a long in IT industry and I’m quite fortunate to work some of the excellent projects on which I contributed a lot. So, I thought why not to start a blog and let share with others about my experiences?So, here it is.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p  style=" color: rgb(102, 51, 255); text-align: justify;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2350691947805997328-7206186120582940743?l=www.anilsaha.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.anilsaha.com/feeds/7206186120582940743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2350691947805997328&amp;postID=7206186120582940743' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2350691947805997328/posts/default/7206186120582940743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2350691947805997328/posts/default/7206186120582940743'/><link rel='alternate' type='text/html' href='http://www.anilsaha.com/2008/11/kick-off.html' title='kick off...'/><author><name>Anil Saha</name><uri>http://www.blogger.com/profile/12033940101603596577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
