<?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-9175922468413083208</id><updated>2012-01-26T08:14:08.616-08:00</updated><category term='Architect'/><category term='PM'/><category term='Mobile'/><category term='JVM'/><category term='Performance'/><category term='Java EE'/><category term='Designer'/><category term='REST'/><category term='Java Web'/><category term='Java SE'/><category term='Tools'/><category term='Tech'/><category term='Consulting'/><category term='Project'/><category term='Spring'/><category term='Management'/><category term='Java New'/><category term='Domain'/><category term='SOA'/><category term='Web Service'/><category term='Cloud'/><title type='text'>Sikipedia</title><subtitle type='html'>Technical and Management Skills, Learning and Insights</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default?start-index=101&amp;max-results=100'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>156</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-3031788498573734302</id><published>2011-11-22T07:35:00.000-08:00</published><updated>2011-12-06T08:51:10.540-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Consulting'/><title type='text'>Go To Market Strategy</title><content type='html'>Most simplest definition of Go-To-Market (GTM) is abou&lt;u&gt;t co-selling your offerings to/with your partners. &lt;/u&gt;It is a marketing function for each Strategic Business unit.&amp;nbsp; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Offering - Portfolio Management Process to build new Offerings for Demand. &lt;/li&gt;&lt;li&gt;Selling - Dedicated Innovation Process to align Offerings with Demand. &lt;/li&gt;&lt;li&gt;Partners - Partner Management Process to extend geographical coverage and complement Portfolio.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-JOpwZFIfmXk/TsvDYGf11YI/AAAAAAAAFW8/Xyj3kKti2tQ/s1600/GTM-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="183" src="http://4.bp.blogspot.com/-JOpwZFIfmXk/TsvDYGf11YI/AAAAAAAAFW8/Xyj3kKti2tQ/s320/GTM-1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;GTM in Organization:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-r1J-85lJvhA/TsvLdn_6nHI/AAAAAAAAFXM/tK58L-0OfPY/s1600/GTM-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="226" src="http://1.bp.blogspot.com/-r1J-85lJvhA/TsvLdn_6nHI/AAAAAAAAFXM/tK58L-0OfPY/s400/GTM-3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-5iUp45GT3SA/TsvLAzgazmI/AAAAAAAAFXE/-_saOJ2RGac/s1600/GTM-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;GTM Strategy Model:&lt;/b&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Objective:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Sales enablement for customers &lt;/li&gt;&lt;li&gt;Advisory positioning &lt;/li&gt;&lt;li&gt;External branding / Internal Communication &lt;/li&gt;&lt;li&gt;Partner and Alliances in the market&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Inputs:&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;An opportunity we would like to progress through to customer engagement&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Activities:&amp;nbsp;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Define Market Value proposition&amp;nbsp;&lt;/li&gt;&lt;li&gt;Identify primary target market &lt;/li&gt;&lt;li&gt;Review existing market channels&amp;nbsp;&lt;/li&gt;&lt;li&gt;Create detailed channel approach &lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Outputs &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Identified market channel(s) and the cost of utilising those channels&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Channels: &lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Alliance: &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Joint Venture &lt;/li&gt;&lt;li&gt;Collaborator &lt;/li&gt;&lt;li&gt;Distributor &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Partners: &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Channel Partners &lt;/li&gt;&lt;li&gt;Technology Partners &lt;/li&gt;&lt;li&gt;Product Partners &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Medium: &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Website &lt;/li&gt;&lt;li&gt;Mobile &lt;/li&gt;&lt;li&gt;Affiliates&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;GTM Strategy&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Definition&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Channels a company will use to connect with its customers/business and &lt;/li&gt;&lt;li&gt;The organizational processes it develops to guide customer interactions from initial contact through fulfillment.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Marketing Strategy&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;WHO the firm will go after&amp;nbsp;&lt;/li&gt;&lt;li&gt;WHAT it will offer them&lt;/li&gt;&lt;li&gt;HOW the firm will make it happen&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Target:&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Not mass market&lt;/li&gt;&lt;li&gt;The direct consumer or the one in authority who makes the buying decision&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Area of Operations: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Market Demand&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;what is driving or inhibiting market demand for technology solutions?&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Customers&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;what are customer needs, especially unmet needs, and what are their key buying factors?&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Competition&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;what competitive set best represents competition and how are they competing? &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Differentiation&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;what differentiators are sustainable &amp;amp; difficult to replicate by competitors?&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Solutions&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;what solutions best meet market demand and customer needs?&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Channels&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;what channel structure &amp;amp; programs enable reaching desired customer segments cost-effectively? &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;References:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;http://www.slideshare.net/mtarrant/developing-a-goto-market-strategy&lt;/li&gt;&lt;li&gt;Transforming Your Go-to-Market Strategy: The Three Disciplines of Channel Management (Hardcover) by &lt;a href="http://hbr.org/search/V.+Kasturi+Rangan"&gt;V. Kasturi Rangan&lt;/a&gt;, &lt;a href="http://hbr.org/search/Marie+Bell"&gt;Marie Bell&lt;/a&gt; Source: Harvard Business Press Books&amp;nbsp;&lt;/li&gt;&lt;li&gt;http://atos.net/NR/rdonlyres/762AA016-16B0-435B-A940-7169E5E05462/0/goto_marketstrategy.pdf &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-3031788498573734302?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/3031788498573734302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/11/go-to-market-strategy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3031788498573734302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3031788498573734302'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/11/go-to-market-strategy.html' title='Go To Market Strategy'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-JOpwZFIfmXk/TsvDYGf11YI/AAAAAAAAFW8/Xyj3kKti2tQ/s72-c/GTM-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-2644401580133627881</id><published>2011-11-04T20:50:00.000-07:00</published><updated>2011-11-04T20:53:05.487-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><title type='text'>Automated Development/Test Environment in Cloud</title><content type='html'>&lt;a href="http://www.slideshare.net/AnnaRose1/7-steps-to-success-with-your-automated-developmenttest-cloud"&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Development Process - Build-Test-Deploy&lt;/b&gt;&lt;ul&gt;&lt;li&gt;Automated Development Process&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Map/Model Software Process&lt;/li&gt;&lt;li&gt;Enable Automation of Software Delivery Process&lt;/li&gt;&lt;li&gt;Report and Analyze Process Execution and Workflow&lt;/li&gt;&lt;/ol&gt;&lt;/ul&gt;&lt;b&gt;IT Process - IT Resources&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Scalable, Agile and Shared infra&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Define valuable infra services&lt;/li&gt;&lt;li&gt;Plan and Standardize the Cloud Platform&lt;/li&gt;&lt;li&gt;Plan and Architect Deployment&lt;/li&gt;&lt;/ol&gt;&lt;/ul&gt;&lt;b&gt;Integrate Both &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Integrate Development Process with IT Process.&lt;/li&gt;&lt;/ul&gt;References:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.slideshare.net/AnnaRose1/7-steps-to-success-with-your-automated-developmenttest-cloud"&gt;7 Steps to Success with Your Automated Development/Test Cloud&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-2644401580133627881?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/2644401580133627881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/11/7-steps-to-success-with-your-automated.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/2644401580133627881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/2644401580133627881'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/11/7-steps-to-success-with-your-automated.html' title='Automated Development/Test Environment in Cloud'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-8051091828722041919</id><published>2011-11-04T07:42:00.000-07:00</published><updated>2011-11-04T08:36:02.088-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><title type='text'>Cloud Migration - Stages and States</title><content type='html'>&lt;b&gt;Cloud Enablement - Stages &lt;/b&gt;&lt;br /&gt;An application passes through three stages to get to cloud. &lt;br /&gt;&lt;ol&gt;&lt;li&gt;Not in cloud/On premise - Private&lt;/li&gt;&lt;li&gt;Cloud Leveraged - Hybrid in cloud&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Cloud Centric - Fully in cloud&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;Application Readiness - Assessed States&amp;nbsp;&lt;/b&gt;&lt;br /&gt;An Application can be found to be one of following state of Cloud Readiness.&amp;nbsp; &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Cant be migrated (Transformation/Texing) &lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Many times legacy applications are complex and tied to a specific solution that migration is almost impossible. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;&lt;u&gt;Solution:&amp;nbsp;&lt;/u&gt;&lt;/i&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Maintain them as it is as and build a wrapper service around it to be access by rest of system.&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Needs re-engineering (Incremental/LifeOff) &lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Application written in recent technology and software methodologies has higher chance of easy migration into cloud.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;&lt;u&gt;Solution:&lt;/u&gt;&lt;/i&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Bottom up approach will assess the application integration and decoupling points and make different component as service. &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Already cloud ready (Ready/Airborn)&amp;nbsp; &lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Many organization has written application already in this fation that they already comply with cloud platform architecture. It is also called Fork Lift apps.&amp;nbsp; &lt;/li&gt;&lt;li&gt;&lt;i&gt;&lt;u&gt;Solution:&amp;nbsp;&lt;/u&gt;&lt;/i&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Just port them as it is.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Roles In Cloud Business:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;Cloud Migration throws challenges for two roles:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Infrastructure Provider&lt;/b&gt; Provides computing, storage and backup management. Their major focus is on: &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Data Security&amp;nbsp;&lt;/li&gt;&lt;li&gt;Latency&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Cloud Implementer &lt;/b&gt;Provides design capability and platform to access cloud system infrastructure platform and applications as a service. Their major focus is on: &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Application Availability&amp;nbsp;&lt;/li&gt;&lt;li&gt;Integration &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ol&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-8051091828722041919?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/8051091828722041919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/11/cloud-migration-stages-and-states.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8051091828722041919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8051091828722041919'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/11/cloud-migration-stages-and-states.html' title='Cloud Migration - Stages and States'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-8380908049280338439</id><published>2011-11-04T07:39:00.001-07:00</published><updated>2011-11-04T07:39:36.236-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><title type='text'>Life-cycle for A Cloud Migration Project</title><content type='html'>&lt;b&gt;Life-cycle for A Cloud Migration Project &lt;/b&gt;&lt;i&gt;&lt;u&gt;&amp;nbsp;&lt;/u&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;u&gt;Inception&lt;/u&gt;&lt;/i&gt;:&lt;br /&gt;Getting on to boardroom for strategizing the cloud enablement. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Key business requirement assessment&amp;nbsp;&lt;/li&gt;&lt;li&gt;Application portfolio classification&amp;nbsp;&lt;/li&gt;&lt;li&gt;Risk Assessment and Mitigation plan &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Financial Analysis &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;&lt;u&gt;Elaboration&lt;/u&gt;&lt;/i&gt;:&lt;br /&gt;Plan and design the system for cloud considerations and constraints. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Cloud Migration Plan and analysis&amp;nbsp;&lt;/li&gt;&lt;li&gt;SLA design&amp;nbsp; and management&amp;nbsp;&lt;/li&gt;&lt;li&gt;Re-engineering approach assessment &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;&lt;u&gt;Construction:&amp;nbsp;&lt;/u&gt;&lt;/i&gt;&lt;br /&gt;Initiate the application transition into cloud application. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Enterprise Arch Blueprint&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;App development/Testing/Data migration &lt;/li&gt;&lt;/ul&gt;&lt;i&gt;&lt;u&gt;Transition&lt;/u&gt;&lt;/i&gt;:&lt;br /&gt;Deploying application into cloud and making it operational in new environment. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Application deployment&amp;nbsp;&lt;/li&gt;&lt;li&gt;IT Governance &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Stabilization of system&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;&lt;u&gt;Improvement &lt;/u&gt;&lt;/i&gt;&lt;br /&gt;Go back to drawing board.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-8380908049280338439?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/8380908049280338439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/11/life-cycle-for-cloud-migration-project.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8380908049280338439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8380908049280338439'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/11/life-cycle-for-cloud-migration-project.html' title='Life-cycle for A Cloud Migration Project'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-788998513868707900</id><published>2011-11-04T07:15:00.000-07:00</published><updated>2011-11-04T21:01:52.211-07:00</updated><title type='text'>A Periodic Table of Visualization Methods</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-uLqmbuWGUvk/TrS1J_kcjxI/AAAAAAAAFQ8/6MSs4L2IVuM/s1600/PeriodicTable.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="144" src="http://2.bp.blogspot.com/-uLqmbuWGUvk/TrS1J_kcjxI/AAAAAAAAFQ8/6MSs4L2IVuM/s320/PeriodicTable.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://www.visual-literacy.org/periodic_table/periodic_table.html"&gt;A Periodic Table of Visualization Methods&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-788998513868707900?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/788998513868707900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/11/periodic-table-of-visualization-methods.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/788998513868707900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/788998513868707900'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/11/periodic-table-of-visualization-methods.html' title='A Periodic Table of Visualization Methods'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-uLqmbuWGUvk/TrS1J_kcjxI/AAAAAAAAFQ8/6MSs4L2IVuM/s72-c/PeriodicTable.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-2073780867892749337</id><published>2011-11-04T07:09:00.001-07:00</published><updated>2011-11-04T07:09:46.314-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><title type='text'>Cloud Grid Computing</title><content type='html'>&lt;b&gt;What is Grid/Cloud Computing?&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Grid Computing = Compute Grids + Data Grids&lt;/li&gt;&lt;ul&gt;&lt;li&gt; Compute Grids: parallelize execution&lt;/li&gt;&lt;li&gt; Data Grids: parallelize data storage&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Cloud Computing = Grid Computing + Data Center Automation&lt;/li&gt;&lt;li&gt;Clouds are the new way to deploy and run grid applications&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Issues: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Relational Database vs Map Database - Choose One&lt;/li&gt;&lt;li&gt;Load Testing - Allow to create, pay for usage &lt;/li&gt;&lt;li&gt;Batch Processing - Node/Image for large processing&lt;/li&gt;&lt;li&gt;Data Processing - mapReduce &lt;/li&gt;&lt;li&gt;Great Paradigm for new startup to save server cost &lt;/li&gt;&lt;li&gt;RIA &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Client app/Ajax based UI/Browser Plugin &lt;/li&gt;&lt;li&gt;Course Grained Server Communication &lt;/li&gt;&lt;li&gt;Can work in offline mode. &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;JMX - Does not provide out-of-box, but can be modified to give cloud specific aggregated view&lt;/li&gt;&lt;li&gt;Java EE can serve both human and nonhuman sensor through specific JCA implementation.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;References:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://java.sun.com/developer/technicalArticles/Interviews/community/bien_qa_2009.html"&gt;http://java.sun.com/developer/technicalArticles/Interviews/community/bien_qa_2009.html&amp;nbsp;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Todo:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://java.sun.com/developer/technicalArticles/Interviews/community/williamson_pt1_qa.html"&gt;http://java.sun.com/developer/technicalArticles/Interviews/community/williamson_pt1_qa.html&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-2073780867892749337?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/2073780867892749337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/11/cloud-grid-computing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/2073780867892749337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/2073780867892749337'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/11/cloud-grid-computing.html' title='Cloud Grid Computing'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-4360953808605154506</id><published>2011-11-04T07:09:00.000-07:00</published><updated>2011-11-04T07:09:29.950-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><title type='text'>Amazon AWS - Database Options</title><content type='html'>AWS provide all its service through its web service interfaces. What it means that all the &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Database Option:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;AWS has three mechanism for getting a DB for your application.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A customer-provided database service running within an &lt;a href="http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/concepts-amis-and-instances.html"&gt;  Amazon Machine Image&lt;/a&gt; (AMI)&lt;/li&gt;&lt;li&gt;Amazon Web Services own &lt;a href="http://aws.amazon.com/simpledb"&gt;SimpleDB service&lt;/a&gt;&lt;/li&gt;&lt;li&gt;AWS RDS (Rational Data Source) &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Amazon Machine Image based DB&amp;nbsp; &lt;/b&gt;&lt;br /&gt;In this scheme, customer installs along with other application supporting softwares like app server, etc and manages database server on their own. His responsible remains same as of on premise setup from managing the database application from configuration, to performance tuning, capacity management, version updates, patching, and data backup.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;SimpleDB:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;SimpleDB is a simple data storage providing scalable key-value storage. This is very good for large volume of database storage and retrieval, but lack capability of RDBMS style of Data modeling. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;RDS Service:&lt;/b&gt;&lt;br /&gt;Provides MySQL installed and managed by Amazon with &lt;i&gt;Instance Class&lt;/i&gt; of 5 levels. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;&lt;b&gt;Small DB Instance&lt;/b&gt;&lt;/i&gt; - 1 virtual CPU core and 1.7 Gigabytes of memory&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Quadruple Extra Large DB Instance&lt;/i&gt;&lt;/b&gt; -&amp;nbsp; 68GB of memory and 8 virtual CPU cores &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-4360953808605154506?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/4360953808605154506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/11/amazon-aws-database-options.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4360953808605154506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4360953808605154506'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/11/amazon-aws-database-options.html' title='Amazon AWS - Database Options'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-7871775508850280018</id><published>2011-11-04T07:08:00.001-07:00</published><updated>2011-12-06T03:37:50.886-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><title type='text'>Cloud Migration Strategy:</title><content type='html'>&lt;b&gt;&lt;u&gt;Cloud Migration Strategy:&amp;nbsp;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Rehost - Deploy App without Change to target IaaS. &lt;/li&gt;&lt;li&gt;Refactor - Modify App with Backward Compatibility to target PaaS. &lt;/li&gt;&lt;li&gt;Revise - Extend App with exiting code base to target IaaS/PaaS&lt;/li&gt;&lt;li&gt;Rebuild - Develop App with fresh codebase to target PaaS&amp;nbsp;&lt;/li&gt;&lt;li&gt;Replace  - Subtitute App with similar/better functionality to target SaaS. &lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Ref: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.gartner.com/it/content/1448700/1448713/november_17_5_options_cloud_migration_rwatson.pdf"&gt;http://www.gartner.com/it/content/1448700/1448713/november_17_5_options_cloud_migration_rwatson.pdf&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cioupdate.com/trends/article.php/3934061/5-Ways-to-Migrate-Applications-to-the-Cloud.htm"&gt;http://www.cioupdate.com/trends/article.php/3934061/5-Ways-to-Migrate-Applications-to-the-Cloud.htm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://daviding.amplify.com/2011/05/25/migrate-to-cloud-rehost-refactor-revise-rebuild-or-replace/"&gt;http://daviding.amplify.com/2011/05/25/migrate-to-cloud-rehost-refactor-revise-rebuild-or-replace/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-7871775508850280018?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/7871775508850280018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/11/cloud-migration-strategy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/7871775508850280018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/7871775508850280018'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/11/cloud-migration-strategy.html' title='Cloud Migration Strategy:'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-6185823435282269357</id><published>2011-10-18T20:12:00.001-07:00</published><updated>2011-10-18T20:13:26.170-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><title type='text'>Cloud Availability Measures:</title><content type='html'>&lt;b&gt;&lt;u&gt;Cloud Availability Measures: &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Type of Failures: &lt;br /&gt;&lt;ol&gt;&lt;li&gt;Cloud Platform: Planned Downtime/Maintenance&lt;/li&gt;&lt;li&gt;Cloud Platform: Unplanned Downtime/Outtage&lt;/li&gt;&lt;li&gt;Cloud Infrastructure: Server/Instance Failure&lt;/li&gt;&lt;li&gt;Cloud Infrastructure: Availability Zone Failure &lt;/li&gt;&lt;li&gt;Cloud Infrastructure: Geographic Region Failure &lt;/li&gt;&lt;li&gt;Cloud Infrastructure: Total Service Failure -- All Zones and All Regions&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Measure to Prevent Failures: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Multi-Availability-Zone&lt;/li&gt;&lt;li&gt;Self Hosted backup environment&lt;/li&gt;&lt;li&gt;Multiple Deployment to different cloud and sync up &lt;/li&gt;&lt;li&gt;Redundancy Of Critical Component (Fail-Safe) &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Amazon Solution: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;AWS  issues can cause issues for people with multi-availabilty-zone as well  if everyone who are failing will start to come to other zone and shrink  performance on those server. &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;References: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://support.rightscale.com/06-FAQs/FAQ_0134_-_What_happens_when_Amazon_or_RightScale_have_outtages%3F"&gt;http://support.rightscale.com/06-FAQs/FAQ_0134_-_What_happens_when_Amazon_or_RightScale_have_outtages%3F&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-6185823435282269357?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/6185823435282269357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/10/cloud-availability-measures.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/6185823435282269357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/6185823435282269357'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/10/cloud-availability-measures.html' title='Cloud Availability Measures:'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-9085945788787472717</id><published>2011-10-04T19:39:00.000-07:00</published><updated>2011-11-22T19:40:08.888-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Consulting'/><title type='text'>Solution showcasing:</title><content type='html'>&lt;b&gt;&lt;u&gt;Presentation approach for Solution showcasing:&amp;nbsp; &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Objective &lt;/li&gt;&lt;ul&gt;&lt;li&gt;To state objective solution &amp;amp; framework to help customer &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Service &lt;/li&gt;&lt;ul&gt;&lt;li&gt;To showcase service offerings Framework - End to End Solution &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Offering&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Business with a set of Framework threaded together &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Service Product &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Framework around Open Source &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Benefits: &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Cost / Time to Market / Operational Efficiency &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Methodology &lt;/li&gt;&lt;ul&gt;&lt;li&gt;To showcase methods to implement &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Engagement Model &lt;/li&gt;&lt;ul&gt;&lt;li&gt;To showcase protocol and process to engage customer &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Accelerator &lt;/li&gt;&lt;ul&gt;&lt;li&gt;To help customer in Cost/Time/HR using a Tool &lt;/li&gt;&lt;li&gt;A set of smaller tool for operational / Functional aspects &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Best Practices&lt;/li&gt;&lt;ul&gt;&lt;li&gt;To showcase expertise and depth of knowledge &lt;/li&gt;&lt;li&gt;Based on scenario - Best way to move forward&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Case Study&lt;/li&gt;&lt;ul&gt;&lt;li&gt;To influence their decision by reference and experience &lt;/li&gt;&lt;li&gt;To give them practical confidence of applicability success &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-9085945788787472717?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/9085945788787472717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/11/solution-showcasing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/9085945788787472717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/9085945788787472717'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/11/solution-showcasing.html' title='Solution showcasing:'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-5745746322299404392</id><published>2011-07-21T02:57:00.001-07:00</published><updated>2011-11-04T07:17:21.962-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Consulting'/><title type='text'>Is Consulting for You?</title><content type='html'>The Skills in Demand &lt;br /&gt;&lt;br /&gt; Consulting firm interviews typically involve a combination of general background questions, a case question and questions about your past behavior (the much dreaded behavioral interview approach). There are, of course, many different approaches to interviewing and, for that matter, to being interviewed. But the bottom line is that firms are screening for skills that match their needs. It is vitally important that you make every effort to understand what these skills are before you step into the interview room. &lt;br /&gt;&lt;br /&gt;Common skills on interviewer check lists include...&lt;br /&gt;&lt;br /&gt;Skill #1: A Passion for Ideas.  &lt;br /&gt;&lt;br /&gt;You can't eat what a consulting firm makes. You can't drive it. You can't smell it. The product is an idea, an insight, a suggestion, a way of thinking. Ultimately, consulting firms are nothing more than repositories of pure intellectual capital. This means that their most important asset has to be the ability to use past intellectual capital and to generate new intellectual capital through rigorous thinking and careful research. Hence the frenzy to hire the best and the brightest of America's business schools. This intellectual focus of consulting is clearly important in deciding whether you would do well in the field. A good consultant has to be a great thinker with a passion for ideas. You need to be the type that does well in school and likes it. You need to enjoy problem-diagnosis, problem-framing and problem-solving. &lt;br /&gt;&lt;br /&gt;If you find yourself struggling with the academic-side of business school, getting stuck on cases, disliking writing, but excelling along other dimensions (e.g. human interaction or entrepreneurialism) you probably should not be a consultant. You may very well get a job offer anyway. Firms may hire you opportunistically, knowing that they you can generate more value for them than you are being paid. But advancing and leading may be a different matter altogether. &lt;br /&gt;&lt;br /&gt;Incidentally, some firms aren't nearly as pedigree-sensitive as some seem to think. Leaders of some of the most prominent firms in the consulting profession have made it with degrees from institutions far below the top-ranked schools. Pedigree can neither guarantee one success nor condemn one to failure. For that matter, the MBA degree itself need not be necessary. A number of firms are hiring persons with other degree backgrounds (e.g. law, engineering, public administration, medicine). McKinsey, in particular, has recently been aggressive in its pursuit of attorneys, PhD's and the like. Sheepskin is sheepskin... And, of course, many undergraduate students enter consulting, often in two or three year programs that are expected to be followed by a stint at business school. &lt;br /&gt;&lt;br /&gt;Skill #2: A Passion for Client Service. &lt;br /&gt;&lt;br /&gt;With all of the money being thrown around by the consulting firms these days, it can be easy to get into the profession for the wrong reason. After all is said and done, consulting is a service profession and most firms screen carefully for commitment to others and ability to excel in meeting client needs. As a consultant you will always be working to help others. Your ability to serve clients will determine your success and the prospects of your employer. While intangible, a personal commitment to excel in meeting the needs of your clients is vital to enjoying the profession. In a recent letter published by a seasoned ex-McKinsey consultant put it this way: "It is only through personal excellence that this profession becomes truly enjoyable. Those who demonstrate superior skills gain personal control early in their careers. These individuals are in such demand that, at any point in time, they have numerous options to choose from. They typically become engagement managers sooner, and tend to set the pace for their teams. Through their intellectual leadership they gain respect from the clients, the partners and their teammates. In a business world where institutional loyalty is rare, the individual needs to excel and generate his or her own marketability. The result is that the institution needs the individual, not the reverse. Over the years, I have observed that unfriendly clients become attentive when listening to people of excellence because their contribution is unique. Those who achieve excellence feel great about themselves and are more likely to find the consulting experience a path to fulfillment. The financial rewards become window dressing and the high of the experience becomes the drug of first choice."&lt;br /&gt; &lt;br /&gt;Skill #3: A Passion for People. &lt;br /&gt;&lt;br /&gt;Consultants will often note that some of their most fulfilling relationships are with clients because he had built life-long, lasting partnerships with a number of clients through repeated contact and hard work. These relationships are what can make the long hours, stressful travel and corporate frustrations encountered by consultants worthwhile. Consultants who enjoy talking to people do well. It's a field where the gregarious do well with their teammates and their clients. This isn't to say that you must be the ultimate extrovert, but you do have to connect. However you accomplish this, whether it be by charm, humor, listening or hard-work, it's vital that you enjoy, understand and communicate with clients. Consulting firm interviewers are looking for people that they'd like to work with themselves. It's only human. &lt;br /&gt;&lt;br /&gt;So, it's an odd admixture in demand at the consulting firms. Smart, likable people who are good at helping others. Not necessarily a natural combination of abilities you might say. The screening process, of course, can vary widely and many firms are looking for a unique traits. Other characteristics in demand including understanding of specific business issues, a tolerance for ambiguity, tolerance for absolutely abusive hours, superb IT skills, personal appearance, the ability to work quickly in spreadsheets, logical thinking skills, writing skills, willingness to travel and facility with languages.&lt;b&gt;&lt;span style="font-family: Calibri,Verdana,Arial,Helvetica; font-size: small;"&gt;Reference:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.careers-in-business.com/consulting/mcyou.htm"&gt;Is Consulting for You?&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-5745746322299404392?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/5745746322299404392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/07/is-consulting-for-you.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/5745746322299404392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/5745746322299404392'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/07/is-consulting-for-you.html' title='Is Consulting for You?'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-795670947726093831</id><published>2011-07-17T23:18:00.000-07:00</published><updated>2011-07-17T23:18:16.304-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><title type='text'>Cloud Computing - Industry</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-hit2JB9YdOo/TiPP7-VbKjI/AAAAAAAAFNg/EHtlxz5mdk8/s1600/saasmap_lairddickson_may08.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="292" src="http://2.bp.blogspot.com/-hit2JB9YdOo/TiPP7-VbKjI/AAAAAAAAFNg/EHtlxz5mdk8/s400/saasmap_lairddickson_may08.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-795670947726093831?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/795670947726093831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/07/cloud-computing-industry.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/795670947726093831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/795670947726093831'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/07/cloud-computing-industry.html' title='Cloud Computing - Industry'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-hit2JB9YdOo/TiPP7-VbKjI/AAAAAAAAFNg/EHtlxz5mdk8/s72-c/saasmap_lairddickson_may08.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-5055116625087708186</id><published>2011-07-14T07:37:00.000-07:00</published><updated>2011-07-14T09:55:36.926-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Consulting'/><title type='text'>Consulting - A 101 Guide</title><content type='html'>&lt;b&gt;Definition: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Solving a Business Problem using Technology Infrastructure with Focus on Client &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;5C of Consulting: &lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Client &lt;/li&gt;&lt;li&gt;Create Value &lt;/li&gt;&lt;li&gt;Communicate &lt;/li&gt;&lt;li&gt;Change &lt;/li&gt;&lt;li&gt;Closure &lt;/li&gt;&lt;/ol&gt;&lt;u&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Customer:&lt;/b&gt;&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;&lt;b&gt;Requirement Analysis&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Owner/Stakeholder/Decision Maker/Powerful Guys/Authority &lt;/li&gt;&lt;li&gt;Problem vs Symptoms &lt;/li&gt;&lt;li&gt;Reality vs Perception &lt;/li&gt;&lt;li&gt;Projections vs Wish List &lt;/li&gt;&lt;li&gt;Priority vs Constant &lt;/li&gt;&lt;li&gt;Long Term vs Short Term objectives &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Process: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Connect &amp;gt; Involve &amp;gt; Integrate &lt;/li&gt;&lt;li&gt;Know &amp;gt; Like&amp;nbsp; &amp;gt; Value Add&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;&lt;u&gt;&lt;b&gt;Create Value: &lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;Key Parameters: &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Higher Service Quality, Revenue and Profits &lt;/li&gt;&lt;li&gt;Higher Customer Satisfaction &lt;/li&gt;&lt;li&gt;Lowering Cost (Down) &lt;/li&gt;&lt;/ul&gt;Factors for Value Creation for Organization &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Cycle Time Reduction &lt;/li&gt;&lt;li&gt;Productivity Improvement &lt;/li&gt;&lt;li&gt;Fast Time to Market &lt;/li&gt;&lt;li&gt;Enable Customer to Reduce Operation Cost &lt;/li&gt;&lt;li&gt;Provide Innovative Solution to compete &lt;/li&gt;&lt;/ul&gt;Calculation for Individual Value Creation &lt;br /&gt;&lt;ul&gt;&lt;li&gt;+ Value of Organization Benefit &lt;/li&gt;&lt;li&gt;- Direct Cost of Employment &lt;/li&gt;&lt;li&gt;- Opportunity Cost to Org (Resources and Infrastructure) &lt;/li&gt;&lt;/ul&gt;Basically it is also about understanding patterns of repeatability and reducing them by automation/tempatization/Toolization. &lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;u&gt;Communication: &lt;/u&gt;&lt;/span&gt;&lt;br /&gt;Key Concepts: &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Art of questioning  &lt;/li&gt;&lt;li&gt; Passive vs Assertive vs Aggressive Communication&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Proactive Reactive Approach  &lt;/li&gt;&lt;/ul&gt;&lt;li&gt; Sell vs Tell Approach  &lt;/li&gt;&lt;li&gt; 3 C Of Communication - Complete, Concise and Comprehensive  &lt;/li&gt;&lt;ul&gt;&lt;li&gt; Challenge - Dealing Assumption and Interpretation  &lt;/li&gt;&lt;/ul&gt;&lt;li&gt; Onsite Coordinator Role - Collect, Clarify, Confirm and Consolidate and Communicate to Offshore  &lt;/li&gt;&lt;li&gt; Confidentiality vs Openness  &lt;/li&gt;&lt;li&gt; Consistency and Uniformity  &lt;/li&gt;&lt;li&gt; Be a listener First  &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Communication for Different Levels: &lt;/b&gt;&lt;br /&gt;&lt;table border="0" cellspacing="0"&gt;&lt;colgroup&gt;&lt;col width="143"&gt;&lt;/col&gt;&lt;col width="102"&gt;&lt;/col&gt;&lt;col width="86"&gt;&lt;/col&gt;&lt;/colgroup&gt;  &lt;tbody&gt;&lt;tr&gt;    &lt;td align="left" height="17" width="143"&gt;&lt;b&gt;Aspects&lt;/b&gt;&lt;/td&gt;    &lt;td align="left" width="102"&gt;&lt;b&gt;Engineers&lt;/b&gt;&lt;/td&gt;    &lt;td align="left" width="86"&gt;&lt;b&gt;Managers&lt;/b&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="left" height="17"&gt;Scope &lt;/td&gt;    &lt;td align="left"&gt;Well Defined &lt;/td&gt;    &lt;td align="left"&gt;Very Wide&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="left" height="17"&gt;Level of Aggregation &lt;/td&gt;    &lt;td align="left"&gt;Detailed&lt;/td&gt;    &lt;td align="left"&gt;Aggregated &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="left" height="17"&gt;Time Horizon &lt;/td&gt;    &lt;td align="left"&gt;Historic &lt;/td&gt;    &lt;td align="left"&gt;Futuristic &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="left" height="17"&gt;Requested Accuracy &lt;/td&gt;    &lt;td align="left"&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td align="left"&gt;Low&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="left" height="17"&gt;Frequency of Use&lt;/td&gt;    &lt;td align="left"&gt;Very Frequent &lt;/td&gt;    &lt;td align="left"&gt;Infrequent &lt;/td&gt;   &lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;u&gt;&lt;b&gt; Change:&amp;nbsp;&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;sdf&lt;span style="font-size: large;"&gt;&lt;u&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;&lt;span style="font-size: large;"&gt;Closure: &lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-5055116625087708186?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/5055116625087708186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/07/consulting-101-guide.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/5055116625087708186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/5055116625087708186'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/07/consulting-101-guide.html' title='Consulting - A 101 Guide'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-8319416693920141327</id><published>2011-05-10T07:38:00.000-07:00</published><updated>2011-05-10T07:38:27.820-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><title type='text'>Clouds and the Role of SOA</title><content type='html'>&lt;b&gt;Cloud Computing Definition:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;It is model for enabling convenient, on-Demand network access to a shared pool of configurable computing resources (network, servers, storage, applications and services) that can be rapidly provisined and released with minimal management effort or service provider interaction. &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-2e3cRhn-xXs/TclNRhZqJbI/AAAAAAAAFJA/wDne_mgqm84/s1600/CloudLifeCycle.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="203" src="http://3.bp.blogspot.com/-2e3cRhn-xXs/TclNRhZqJbI/AAAAAAAAFJA/wDne_mgqm84/s320/CloudLifeCycle.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;5 Essential Characteristics:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;On-demand Self Service&amp;nbsp;&lt;/li&gt;&lt;li&gt;Resource Pooling&amp;nbsp;&lt;/li&gt;&lt;li&gt;Rapid Elasticity&amp;nbsp;&lt;/li&gt;&lt;li&gt;Measurable Service&amp;nbsp;&lt;/li&gt;&lt;li&gt;Broad Network Access&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;3 Service Models:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;IaaS - Using and Measuring in Realtime (Facebook) &lt;/li&gt;&lt;li&gt;PaaS - Building Application on it (Google App Engine) &lt;/li&gt;&lt;li&gt;SaaS - Integration of Services(Amazon) &lt;/li&gt;&lt;/ol&gt;&lt;b&gt;4 Deployment Models:&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Public - SMBs &lt;/li&gt;&lt;li&gt;Private - Bank, Insurance (Data Insecurity, Self Servicing, Internal Service) &lt;/li&gt;&lt;li&gt;Hybrid - Large enterprise (Data and Process Security in Private)&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-v_WjMlzAVYM/TclNZd5SHtI/AAAAAAAAFJE/UHfIq7IikT4/s1600/Cloud+Evolution.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="194" src="http://4.bp.blogspot.com/-v_WjMlzAVYM/TclNZd5SHtI/AAAAAAAAFJE/UHfIq7IikT4/s320/Cloud+Evolution.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&lt;b&gt;What Customer Wants:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Speed of Deployment&amp;nbsp;&lt;/li&gt;&lt;li&gt;Cost &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Challenge for Cloud: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Security&amp;nbsp;&lt;/li&gt;&lt;li&gt;QoS&amp;nbsp;&lt;/li&gt;&lt;li&gt;Fit (Integration) SOA &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Type of Integration &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Data Integration&amp;nbsp;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Point to Point Integration and Data Cleaning&amp;nbsp;&lt;/li&gt;&lt;li&gt;Real time Data Integration &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;In cloud, application will be integration of multiple systems across different SaaS  providers and challenge is to find a common data model to store all info centrally which can be applied contextually. &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Meta Model for across Cloud Service Providers &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Common Object Model&amp;nbsp; (Designer Tool) &lt;/li&gt;&lt;li&gt;Object Repository and Data Dictionary &lt;/li&gt;&lt;li&gt;Model Designer&amp;nbsp;&lt;/li&gt;&lt;li&gt;Model Matcher &lt;/li&gt;&lt;/ul&gt;&lt;u&gt;Process Integration&amp;nbsp;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It will be service based integration. &lt;/li&gt;&lt;li&gt;SOA and BPM Technology&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;u&gt;Rules and Task Integration&amp;nbsp;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Rules Engine&amp;nbsp;&lt;/li&gt;&lt;li&gt;Task Management&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Others: &lt;/b&gt;&lt;br /&gt;Governance and Security &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Process Dashboard&amp;nbsp;&lt;/li&gt;&lt;li&gt;Federated Security and Fraud Detection&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;Business Apps Store&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Business Integration&amp;nbsp;&lt;/li&gt;&lt;li&gt;Business Objects and Services&lt;/li&gt;&lt;li&gt;Validated Integration / API &lt;/li&gt;&lt;li&gt;Each Cloud Service different rules&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/presentations/Swarm-Computing"&gt;InfoQ: Swarm Computing - Next Generation Clouds and the Role of SOA&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-8319416693920141327?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/8319416693920141327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/05/clouds-and-role-of-soa.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8319416693920141327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8319416693920141327'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/05/clouds-and-role-of-soa.html' title='Clouds and the Role of SOA'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-2e3cRhn-xXs/TclNRhZqJbI/AAAAAAAAFJA/wDne_mgqm84/s72-c/CloudLifeCycle.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-4109408685666292575</id><published>2011-04-26T03:50:00.001-07:00</published><updated>2011-05-09T04:55:56.865-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><title type='text'>Architecting for the Cloud: Best Practices</title><content type='html'>&lt;div id="__ss_3862774" style="width: 425px;"&gt;&lt;b style="display: block; margin: 12px 0 4px;"&gt;&lt;a href="http://www.slideshare.net/AmazonWebServices/aws-architectingdesantislondon" title="Architecting for the Cloud: Best Practices"&gt;Architecting for the Cloud: Best Practices&lt;/a&gt;&lt;/b&gt;&lt;object height="355" id="__sse3862774" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=aws-architecting-desantis-london-100426165620-phpapp02&amp;stripped_title=aws-architectingdesantislondon&amp;userName=AmazonWebServices" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse3862774" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=aws-architecting-desantis-london-100426165620-phpapp02&amp;stripped_title=aws-architectingdesantislondon&amp;userName=AmazonWebServices" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;div style="padding: 5px 0 12px;"&gt;View more presentations from &lt;a href="http://www.slideshare.net/AmazonWebServices"&gt;Amazon Web Services&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-4109408685666292575?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/4109408685666292575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/04/architecting-for-cloud-best-practices.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4109408685666292575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4109408685666292575'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/04/architecting-for-cloud-best-practices.html' title='Architecting for the Cloud: Best Practices'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-8078427650759410613</id><published>2011-04-21T23:14:00.000-07:00</published><updated>2011-04-21T23:14:30.166-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Management'/><title type='text'>Manager - Team Development by Playing Roles</title><content type='html'>&lt;table border="1" cellspacing="0" cols="3" frame="VOID" rules="NONE"&gt;&lt;colgroup&gt;&lt;col width="101"&gt;&lt;/col&gt;&lt;col width="263"&gt;&lt;/col&gt;&lt;col width="86"&gt;&lt;/col&gt;&lt;/colgroup&gt;  &lt;tbody&gt;&lt;tr&gt;    &lt;td align="LEFT" height="17" width="101"&gt;&lt;b&gt;Issues &lt;/b&gt;&lt;/td&gt;    &lt;td align="LEFT" width="263"&gt;&lt;b&gt;Details &lt;/b&gt;&lt;/td&gt;    &lt;td align="LEFT" width="86"&gt;&lt;b&gt;Roles &lt;/b&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="LEFT" height="17"&gt;Environmental &lt;/td&gt;    &lt;td align="LEFT"&gt;Not enough opportunity to enhance skills &lt;/td&gt;    &lt;td align="LEFT"&gt;Guide &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="LEFT" height="17"&gt;Behaviour &lt;/td&gt;    &lt;td align="LEFT"&gt;Physical behavour is not proper &lt;/td&gt;    &lt;td align="LEFT"&gt;Couch &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="LEFT" height="17"&gt;Capability &lt;/td&gt;    &lt;td align="LEFT"&gt;Does not have knowledge and experience &lt;/td&gt;    &lt;td align="LEFT"&gt;Teacher &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="LEFT" height="17"&gt;Belief &lt;/td&gt;    &lt;td align="LEFT"&gt;Think it is not his cup of tea. &lt;/td&gt;    &lt;td align="LEFT"&gt;Mentor &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="LEFT" height="17"&gt;Identity &lt;/td&gt;    &lt;td align="LEFT"&gt;No duddy could do it, I cant do it. &lt;/td&gt;    &lt;td align="LEFT"&gt;Sponser &lt;/td&gt;   &lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-KYI7wkfrv_Y/TbETn_XDACI/AAAAAAAAFHI/ZRNHsjmD7Ls/s1600/Develop+Team.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-KYI7wkfrv_Y/TbETn_XDACI/AAAAAAAAFHI/ZRNHsjmD7Ls/s1600/Develop+Team.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.bnet.com/videos/five-ways-to-develop-your-team-at-the-whiteboard/487278"&gt;http://www.bnet.com/videos/five-ways-to-develop-your-team-at-the-whiteboard/487278&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-8078427650759410613?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/8078427650759410613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/04/manager-team-development-by-playing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8078427650759410613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8078427650759410613'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/04/manager-team-development-by-playing.html' title='Manager - Team Development by Playing Roles'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-KYI7wkfrv_Y/TbETn_XDACI/AAAAAAAAFHI/ZRNHsjmD7Ls/s72-c/Develop+Team.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-8722213034858455352</id><published>2011-04-21T22:32:00.000-07:00</published><updated>2011-05-10T07:59:22.932-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Management'/><title type='text'>Manager - Tactical Skills</title><content type='html'>&lt;b&gt;New Appointment to Project &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Confirm expectation and roles from Supervisors&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;(Role, Matrix, Project, Priority, Meeting)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Decide what kind of Manager you wish to be?&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Books &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Emotional Intelligent Quick Book &lt;/li&gt;&lt;li&gt;First Break All Rules&lt;/li&gt;&lt;li&gt;Leadership Challenge &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Now Discover Your Strength&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;Find Ideal/Successful personality for that level and ask questions like &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Why is he successful and unsuccessful? &lt;br /&gt;&lt;/li&gt;&lt;li&gt;How can I imitate his success by his personality? &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;New Appointment, does not mean inexperienced &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Don't short sell yourself to other.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;(Don't know much about this domain? I am new to this PM, pardon me?)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;It is okay to share this feeling with only confidants and trusted mentor but not everyone else. &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Ask for Feedback &lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;"How to improve from what I am doing to satisfy your expectations?"&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Mentoring People&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;High - Give them more opportunities of leadership &lt;/li&gt;&lt;li&gt;Medium - Encourage to push for next level &lt;/li&gt;&lt;li&gt;Low - Close daily monitoring and feedback on progress &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;References:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.bnet.com/videos/youre-a-newly-promoted-manager-now-what-leilas-house-of-corrections/484221"&gt;http://www.bnet.com/videos/youre-a-newly-promoted-manager-now-what-leilas-house-of-corrections/484221&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-8722213034858455352?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/8722213034858455352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/04/manager-tactical-skills.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8722213034858455352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8722213034858455352'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/04/manager-tactical-skills.html' title='Manager - Tactical Skills'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-5844783616686226275</id><published>2011-04-15T01:20:00.000-07:00</published><updated>2011-05-09T03:46:39.270-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PM'/><title type='text'>Contracts View to Agile Methdology</title><content type='html'>&lt;b&gt;Parameters for Agile Project Management:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Scope Control&amp;nbsp; (Fixed or Variable) &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Cost (Fixed or Variable)&amp;nbsp; &lt;/li&gt;&lt;li&gt;Time (Fixed or Variable) &lt;/li&gt;&lt;li&gt;Project Ownership (With Supplier, Customer or Shared) &lt;/li&gt;&lt;li&gt;Change Request (Free, Accommodate or Costly) &lt;/li&gt;&lt;li&gt;Customer Relationship (Competitive, Cooperative, Indifferent or Dependent) &lt;/li&gt;&lt;li&gt;Risk (Shared or Customer or Supplier)&amp;nbsp;&lt;/li&gt;&lt;li&gt;Profit (Shared, Fixed, Bonus &amp;amp; Penalty, )&lt;/li&gt;&lt;li&gt;Project Model (Joint Venture, Phased T&amp;amp;M, Based on ROI)&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;Following articles describes these in details.&lt;br /&gt;&lt;br /&gt;As a customer or supplier of software services at the beginning of a  Software Development Project, you know that there is too much at stake  to work with just a verbal agreement. A contract is really just a set of  written playing rules. The right rules increase the chance of success  for both parties. The wrong rules make cooperation difficult and hinder  progress. What are the available playing rules and what is the best  approach for a agile project?&lt;br /&gt;Last week, we looked at the &lt;a href="http://agilesoftwaredevelopment.com/blog/peterstev/contracting-agile-software-projects"&gt;purpose and contents of a contract&lt;/a&gt; and identified &lt;a href="http://agilesoftwaredevelopment.com/blog/peterstev/contracting-agile-software-projects"&gt;criteria for evaluating contracts for Scrum and agile projects&lt;/a&gt;. I suggested 4 points for comparing contract forms: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;How is the contract structured? &lt;/li&gt;&lt;li&gt;How does it handle changes in scope (requirements)? &lt;/li&gt;&lt;li&gt;How does it apportion Risk and Reward between customer and supplier? &lt;/li&gt;&lt;li&gt;What model of customer relationship does it foster: competitive  (my win is your loss), cooperative (win-win), indifferent (I don’t  care-you lose) or dependent (heads-I-win-tails-you lose)? &lt;/li&gt;&lt;/ul&gt;This week, let’s look at a number of possible contracts, and see how they work with agile and Scrum development projects: &lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://agilesoftwaredevelopment.com/blog/peterstev/10-agile-contracts#Sprint"&gt;"Sprint Contract"&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://agilesoftwaredevelopment.com/blog/peterstev/10-agile-contracts#FPFS"&gt;Fixed Price / Fixed Scope&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://agilesoftwaredevelopment.com/blog/peterstev/10-agile-contracts#TAM"&gt;Time and Materials&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://agilesoftwaredevelopment.com/blog/peterstev/10-agile-contracts#TAM-fscc"&gt;Time and Materials with Fixed Scope and a Cost Ceiling&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://agilesoftwaredevelopment.com/blog/peterstev/10-agile-contracts#TAM-vscc"&gt;Time and Materials with Variable Scope and Cost Ceiling&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://agilesoftwaredevelopment.com/blog/peterstev/10-agile-contracts#Phased"&gt;Phased Development&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://agilesoftwaredevelopment.com/blog/peterstev/10-agile-contracts#FPFS-bpc"&gt;Bonus / Penalty Clauses&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://agilesoftwaredevelopment.com/blog/peterstev/10-agile-contracts#FP"&gt;Fixed Profit&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://agilesoftwaredevelopment.com/blog/peterstev/10-agile-contracts#MFN-cff"&gt;“Money for Nothing, Changes for Free”&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://agilesoftwaredevelopment.com/blog/peterstev/10-agile-contracts#Joint"&gt;Joint Ventures&lt;/a&gt; &lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=9175922468413083208&amp;amp;postID=5844783616686226275" name="Sprint"&gt;&lt;/a&gt;Sprint Contract &lt;/h3&gt;&lt;img src="http://agilesoftwaredevelopment.com/files/SprintContract_0.png" style="display: block; float: none; margin-left: auto; margin-right: auto;" /&gt;  Working with Scrum, I have found the metaphor of a “Sprint Contract” to  be helpful in understanding (and sometimes enforcing!) the relationship  between product owner and implementation team. &lt;br /&gt;&lt;b&gt;Structure&lt;/b&gt;: This is not really a commercial contract, but simply the agreement between the Product Owner and the Team for one sprint. &lt;br /&gt;&lt;b&gt;Scope&lt;/b&gt;: The implementation team agrees to do its best to  deliver an agreed on set of features (scope) to a defined quality  standard by the end of the sprint. (Ideally they deliver what they  promised, or even a bit more.) The Product Owner agrees not to change  his instructions before the end of the Sprint. &lt;br /&gt;&lt;b&gt;Risk&lt;/b&gt;: a Scrum project can be considered is a series of mini  projects with fixed parameters: Time (Sprint Length), Scope (Sprint  Backlog), Quality (Definition of Done) and Cost (Team Size*Sprint  Length). Only the scope can vary and this is measured every sprint. &lt;br /&gt;&lt;b&gt;Tip&lt;/b&gt;: Confirming Sprint Contract in via E-Mail or posting it on  the project Wiki at the beginning of every Sprint is usually good idea.  It builds trust, regardless of the underlying contractual form. &lt;br /&gt;&lt;b&gt;Tip&lt;/b&gt;: The Sprint contract can be referenced in the commercial  contract. I have found that after a couple of releases, the commercial  contract can wither down to a one page time &amp;amp; materials agreement,  maybe with a cost ceiling for the quarter or next major release. &lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=9175922468413083208&amp;amp;postID=5844783616686226275" name="FPFS"&gt;&lt;/a&gt;  &lt;br /&gt;&lt;h3&gt;Fixed Price / Fixed Scope &lt;/h3&gt;&lt;b&gt;&lt;img src="http://agilesoftwaredevelopment.com/files/FPFS.png" style="display: block; float: none; margin-left: auto; margin-right: auto;" /&gt; Structure&lt;/b&gt;:  Agree on the deliverables, deliver it. Send a bill. Customers like  fixed price projects because it gives them security (or at least they  think so). &lt;br /&gt;&lt;b&gt;Scope changes&lt;/b&gt;: The name says it all, doesn't it? The change  request game (correction: change request process) is intended to limit  scope changes. This process is costly, and the changes are usually not  preventable. Since the customer almost by definition wants more scope,  ending the project can be difficult. The supplier wants the customer to  be happy, so the supplier usually yields. The words ‘et cetera’ are very  dangerous in the specification of a fixed price requirement.&lt;br /&gt;&lt;b&gt;Risk&lt;/b&gt;: Obvious risk is on the side of the supplier. If the  estimates are wrong, the project will lose money. Less obvious risks are  the change request game, through which the supplier negotiates  additional revenue through scope changes. If the supplier had badly  underestimated the effort or risk, or quoted an unrealistically low  price, the losses can even threaten the existence of the supplier, which  also presents a problem to the customer. &lt;br /&gt;&lt;b&gt;Relationship&lt;/b&gt;: Competitive to indifferent. Customer generally  wants to have more and the supplier wants to do less. The supplier wants  the customer to be happy, so usually the supplier yields. &lt;br /&gt;&lt;b&gt;Tip&lt;/b&gt;: Specify the functional requirement with user stories.  I’ll discuss strategies for hitting the target on a fixed price project  in a future article. &lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=9175922468413083208&amp;amp;postID=5844783616686226275" name="TAM"&gt;&lt;/a&gt;  &lt;br /&gt;&lt;h3&gt;Time and Materials &lt;/h3&gt;&lt;b&gt;&lt;img src="http://agilesoftwaredevelopment.com/files/TAM_0.png" style="display: block; float: none; margin-left: auto; margin-right: auto;" /&gt; Structure&lt;/b&gt;:  Work for a month, then send the customer an invoice. Suppliers like it,  because the customer carries the risk of changing his mind. &lt;br /&gt;&lt;b&gt;Scope&lt;/b&gt;: Not a priori fixed. Sooner or later, the customer doesn't want to pay any more, so the project comes to an end. &lt;br /&gt;&lt;b&gt;Risks&lt;/b&gt;: carried 100% by the client. Supplier has little  incentive to keep costs down. Effort to ensure that only legitimate  effort and expenses are invoiced can be substantial. &lt;br /&gt;&lt;b&gt;Relationship&lt;/b&gt;: Indifferent. The supplier is happy when more work comes because more work means more money. &lt;br /&gt;&lt;b&gt;Tip&lt;/b&gt;: recommended for projects where the customer can better  manage the risk than the supplier. This is often combined with a cost  ceiling. How well it works can depend on how the scope is handled. &lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=9175922468413083208&amp;amp;postID=5844783616686226275" name="TAM-fscc"&gt;&lt;/a&gt;  &lt;br /&gt;&lt;h3&gt;Time and Materials with Fixed Scope and a Cost Ceiling &lt;/h3&gt;&lt;b&gt;&lt;img src="http://agilesoftwaredevelopment.com/files/TAM-fscc_0.png" style="display: block; float: none; margin-left: auto; margin-right: auto;" /&gt; Structure&lt;/b&gt;:  Same as fixed price, fixed scope, except if the vendor gets finished  early, the project costs less, because only actual effort is invoiced. &lt;br /&gt;&lt;b&gt;Scope&lt;/b&gt;: Same as fixed price, fixed scope. &lt;br /&gt;&lt;b&gt;Risks&lt;/b&gt;: This appears to represent the ‘best of both worlds’  from the customer’s point of view. If it requires less effort than  expected, it costs less. But the once the cost ceiling has been  achieved, it behaves like a fixed price project. &lt;br /&gt;&lt;b&gt;Relationship&lt;/b&gt;: Dependent. From the supplier’s point of view,  the goal is to hit the cost ceiling exactly. There is no incentive for  the supplier to deliver below the maximum budgeted cost. The customer  has probably treated the project internally as a fixed price project,  and so has no incentive little renounce scope to save money. &lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=9175922468413083208&amp;amp;postID=5844783616686226275" name="TAM-vscc"&gt;&lt;/a&gt;  &lt;br /&gt;&lt;h3&gt;Time and Materials with Variable Scope and Cost Ceiling &lt;/h3&gt;&lt;b&gt;&lt;img src="http://agilesoftwaredevelopment.com/files/TAM-vscc_0.png" style="display: block; float: none; margin-left: auto; margin-right: auto;" /&gt; Structure&lt;/b&gt;: Same as time and materials except a cost ceiling limits the financial risk of the customer. &lt;br /&gt;&lt;b&gt;Scope&lt;/b&gt;: Same as a fixed price, fixed scope project. &lt;br /&gt;&lt;b&gt;Risks&lt;/b&gt;: the budget will expire without achieving the necessary  business value for the customer. Customer won’t get everything he asks  for. &lt;br /&gt;&lt;b&gt;Relationship&lt;/b&gt;: Cooperative. The combination of limited budget  and variable scope focuses both customer and vendor on achieving the  desired business value within the available budge. &lt;br /&gt;&lt;b&gt;Tip&lt;/b&gt;: From experience, I would say this contract form mixes  well with Scrum. The customer has control over each individual sprint. A  constructive relationship means that even if problems develop on the  way, the emotions are right to come to a mutually agreeable solution. &lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=9175922468413083208&amp;amp;postID=5844783616686226275" name="Phased"&gt;&lt;/a&gt;  &lt;br /&gt;&lt;h3&gt;Phased Development &lt;/h3&gt;&lt;b&gt;&lt;img src="http://agilesoftwaredevelopment.com/files/Phased_0.png" style="display: block; float: none; margin-left: auto; margin-right: auto;" /&gt; Structure&lt;/b&gt;: Fund quarterly releases and approve additional funds after each successful release. &lt;br /&gt;&lt;b&gt;Scope Changes&lt;/b&gt;: Not explicitly defined by the model. Releases  are in effect time boxed. The knowledge that there will be another  release next quarter makes it easier to accept postponing a feature to  achieve the time box. &lt;br /&gt;&lt;b&gt;Risk&lt;/b&gt;: Customer’s risk is limited to one quarter’s worth of development costs. &lt;br /&gt;&lt;b&gt;Relationship&lt;/b&gt;: Cooperative. Both the customer and the supplier  have an incentive that each release be successful, so that additional  funding will be approved. &lt;br /&gt;&lt;b&gt;Tips&lt;/b&gt;: Venture capitalists often work on this basis. This mixes  well with Time and Materials with Variable Scope and a Cost Ceiling. I  have worked quite happily under this model. We simply specified the  Release goal, hourly rate and cost ceiling in the commercial contract.  The customer provided the product owner. Everything else was determined  in the sprint contracts. &lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=9175922468413083208&amp;amp;postID=5844783616686226275" name="FPFS-bpc"&gt;&lt;/a&gt;  &lt;br /&gt;&lt;h3&gt;Bonus / Penalty Clauses &lt;/h3&gt;&lt;b&gt;&lt;img src="http://agilesoftwaredevelopment.com/files/FP-bpc.png" style="display: block; float: none; margin-left: auto; margin-right: auto;" /&gt; Structure&lt;/b&gt;:  Supplier receives a bonus if the project completes early and pays a  penalty if it arrives late. The amount of bonus or penalty is a function  of the delay &lt;br /&gt;&lt;b&gt;Scope Changes&lt;/b&gt;: difficult to accept because changes potentially impact the delivery date, which is surely not allowed. &lt;br /&gt;&lt;b&gt;Risk&lt;/b&gt;: Does the customer have an incentive for early  completion? The ROI arguments must be compelling and transparent.  Otherwise the customer gets a cheaper solution the longer it takes. &lt;br /&gt;&lt;b&gt;Relationship&lt;/b&gt;: could be cooperative, but might degenerate into  indifferent if the customer does not truly need the software by the date  agreed. &lt;br /&gt;&lt;b&gt;Tip&lt;/b&gt;: Often applied for construction projects, e.g. roads,  tunnels and runways, for which it works well. Scope changes are not  issue and genuine economic costs drive the customer to achieve the  deadline as well. &lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=9175922468413083208&amp;amp;postID=5844783616686226275" name="FP"&gt;&lt;/a&gt;  &lt;br /&gt;&lt;h3&gt;Fixed Profit &lt;/h3&gt;&lt;b&gt;&lt;img height="311" src="http://agilesoftwaredevelopment.com/files/FP.png" style="display: block; float: none; margin: 0px auto;" width="486" /&gt;Structure&lt;/b&gt;:  any project budget consists of effective costs and profit. The parties  agree on the profit in advance, e.g. $100,000. Regardless of when the  project is completed, the contractor receives the incurred costs plus  the agreed profit. &lt;br /&gt;&lt;b&gt;Scope&lt;/b&gt; is fixed- &lt;br /&gt;&lt;b&gt;Risk&lt;/b&gt; is shared. If project finishes early, the customer pays  less, but the supplier still has his profit. If the project exceeds  budget, the customer pays more, but the supplier does not earn  additional profit. After the target delivery date, the supplier may not  invoice any more profit, just cover his costs. &lt;br /&gt;&lt;b&gt;Relationship&lt;/b&gt;: Cooperative - both have a clear incentive to  finish early. The customer saves money and the supplier has a higher  profit margin. &lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=9175922468413083208&amp;amp;postID=5844783616686226275" name="MFN-cff"&gt;&lt;/a&gt;  &lt;br /&gt;&lt;h3&gt;“Money for Nothing, Changes for Free” &lt;/h3&gt;&lt;b&gt;&lt;img src="http://agilesoftwaredevelopment.com/files/MFN-cff_0.png" style="display: block; float: none; margin-left: auto; margin-right: auto;" /&gt; Structure&lt;/b&gt;:  This works with agile software projects because there is little or no  work in progress. After each sprint, functionality is either complete or  not started. Work is basically on a Time and Materials basis with a  cost target, often with the intention that the project should not use up  the entire project budget. After a certain amount of functionality has  been delivered, the customer should realize that enough business value  has been realized that further development is not necessary and can  therefore cancel the project. A cancellation fee equal to the remaining  profit is due. &lt;br /&gt;&lt;b&gt;Scope&lt;/b&gt;: can be changed. Planned but unimplemented features can  be replaced with other stories of the same size. Additional features  cost extra. &lt;br /&gt;&lt;b&gt;Risk&lt;/b&gt;: Shared. Both parties have an interest in completing the  project early. Customer has lower costs, supplier has a higher margin. &lt;br /&gt;&lt;b&gt;Tip&lt;/b&gt;: If the budget is exceeded, the rules of the fixed profit  or cost ceiling contracts can be applied. The fixed profit approach is  more consistent with the goal of a fostering a cooperative relationship.  &lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=9175922468413083208&amp;amp;postID=5844783616686226275" name="Joint"&gt;&lt;/a&gt;  &lt;br /&gt;&lt;h3&gt;Joint Ventures &lt;/h3&gt;&lt;div style="display: block; float: none; margin-left: auto; margin-right: auto;"&gt;&lt;img src="http://agilesoftwaredevelopment.com/files/Joint.jpg" /&gt; &lt;br /&gt;&lt;div style="font-size: xx-small; text-align: center;"&gt; &lt;/div&gt;&lt;/div&gt;&lt;b&gt;Structure&lt;/b&gt;: Two partners invest in a product of joint interest.  Money is unlikely to flow directly between the partners in the  development phase, but each party must have an ROI, which may come from  revenue sharing or just benefits from using the software. &lt;br /&gt;&lt;b&gt;Scope&lt;/b&gt;: Defined to suit the needs of the partnership. &lt;br /&gt;&lt;b&gt;Risks&lt;/b&gt;: Two of everything. Decision chains can get long.  Rivalries can develop between the teams. Different models for extracting  value from the product can lead to different priorities differing  willingness to invest. &lt;br /&gt;&lt;b&gt;Tips&lt;/b&gt;: Treat the project as a separate company: One team,  co-located, with development and product marketing/product owner role.  Think realistically about friendly and not so friendly separation  scenarios. &lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://agilesoftwaredevelopment.com/blog/peterstev/10-agile-contracts"&gt;http://agilesoftwaredevelopment.com/blog/peterstev/10-agile-contracts&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-5844783616686226275?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/5844783616686226275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/04/contracts-view-to-agile-methdology.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/5844783616686226275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/5844783616686226275'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/04/contracts-view-to-agile-methdology.html' title='Contracts View to Agile Methdology'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-3397711989181628651</id><published>2011-04-15T01:14:00.000-07:00</published><updated>2011-04-15T01:14:36.406-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Management'/><title type='text'>Approaches to Conflict Resolution</title><content type='html'>&lt;b&gt;Five modes of solving conflicts&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Confronting&lt;/b&gt; is also described as problem solving, integrating, collaborating or win-win style. It involves the conflicting parties meeting face-to-face and collaborating to reach an agreement that satifies the concerns of both parties.  This style involves open and direct communication which should lead the way to solving the problem.  Confronting should be used when:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Both parties need to win. &lt;/li&gt;&lt;li&gt;You want to decrease cost. &lt;/li&gt;&lt;li&gt;You want create a common power base. &lt;/li&gt;&lt;li&gt;Skills are complementary. &lt;/li&gt;&lt;li&gt;Time is sufficent. &lt;/li&gt;&lt;li&gt;Trust is present. &lt;/li&gt;&lt;li&gt;Learning is the ultimate goal.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Compromising &lt;/b&gt;is also described as a "give and take" style.  Conflicting parties bargain to reach a mutually acceptable solution.  Both parties give up something in order to reach a decision and leave with some degree of satisfaction.  Compromising should be used when:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Both parties need to win. &lt;/li&gt;&lt;li&gt;You are in a deadlock. &lt;/li&gt;&lt;li&gt;Time is not sufficient. &lt;/li&gt;&lt;li&gt;You want to maintain the relationship among the involved parties. &lt;/li&gt;&lt;li&gt;You will get nothing if you do not compromise. &lt;/li&gt;&lt;li&gt;Stakes are moderate. &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Smoothing &lt;/b&gt;is also referred to as accommodating or obliging style.  In this approach, the areas of agreement are emphasized and the areas of disagreement are downplayed.  Conflicts are not always resolved in the smoothing mode.  A party may sacrifice it's own concerns or goals in order to satisfy the concerns  or goals of the other party.  Smoothing should be used when:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Goal to be reached is overarching. &lt;/li&gt;&lt;li&gt;You want to create obligation for a trade-off at a later time. &lt;/li&gt;&lt;li&gt;Stakes are low. &lt;/li&gt;&lt;li&gt;Liability is limited. &lt;/li&gt;&lt;li&gt;Any solution is adequate. &lt;/li&gt;&lt;li&gt;You want to be harmonious and create good will. &lt;/li&gt;&lt;li&gt;You would lose anyway. &lt;/li&gt;&lt;li&gt;You want to gain time. &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Forcing &lt;/b&gt;is also known as competing, controlling, or dominating style.  Forcing occurs when one party goes all out to win it's position while ignoring the needs and concerns of the other party.  As the intesity of a conflict increases, the tendency for a forced conflict is more likely.  This results in a win-lose situation where one party wins at the expense of the other party.  Forcing should be used when:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A "do or die" situation is present. &lt;/li&gt;&lt;li&gt;Stakes are high. &lt;/li&gt;&lt;li&gt;Important principles are at stake. &lt;/li&gt;&lt;li&gt;Relationship among parties is not important. &lt;/li&gt;&lt;li&gt;A quick decision must be made. &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Avoiding &lt;/b&gt;is also described as withdrawal style.  This approach is viewed as postponing an issue for later or withdrawing from the situation altogether.  It is regarded as a temporary solution because the problem and conflict continue to reoccur over and over again.  Avoiding should be used when:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You can not win. &lt;/li&gt;&lt;li&gt;Stakes are low. &lt;/li&gt;&lt;li&gt;Stakes are high, but you are not prepared. &lt;/li&gt;&lt;li&gt;You want to gain time. &lt;/li&gt;&lt;li&gt;You want to maintain neutrality or reputation. &lt;/li&gt;&lt;li&gt;You think problem will go away. &lt;/li&gt;&lt;li&gt;You win by delaying. &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;How Does it looking in Binary? &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellpadding="0" cellspacing="0" height="133" style="border-collapse: collapse; width: 260px;" x:str=""&gt;&lt;colgroup&gt;&lt;col style="width: 71pt;" width="95"&gt;&lt;/col&gt;  &lt;col span="2" style="width: 48pt;" width="64"&gt;&lt;/col&gt;  &lt;/colgroup&gt;&lt;tbody&gt;&lt;tr height="17" style="height: 12.75pt;"&gt;   &lt;td height="17" style="height: 12.75pt; width: 71pt;" width="95"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/td&gt;   &lt;td style="width: 48pt;" width="64"&gt;&lt;b&gt;Party A&lt;/b&gt;&lt;/td&gt;   &lt;td style="width: 48pt;" width="64"&gt;&lt;b&gt;Party B&lt;/b&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="17" style="height: 12.75pt;"&gt;   &lt;td height="17" style="height: 12.75pt;" x:str="Confronting "&gt;&lt;b&gt;Confronting&amp;nbsp;&lt;/b&gt;&lt;/td&gt;   &lt;td align="right" x:num=""&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;   &lt;td align="right" x:num=""&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="17" style="height: 12.75pt;"&gt;   &lt;td height="17" style="height: 12.75pt;" x:str="Compromising "&gt;&lt;b&gt;Compromising&amp;nbsp;&lt;/b&gt;&lt;/td&gt;   &lt;td align="right" x:num=""&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;   &lt;td align="right" x:num=""&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="17" style="height: 12.75pt;"&gt;   &lt;td height="17" style="height: 12.75pt;" x:str="Smoothing "&gt;&lt;b&gt;Smoothing&amp;nbsp;&lt;/b&gt;&lt;/td&gt;   &lt;td align="right" x:num=""&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;   &lt;td align="right" x:num=""&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="17" style="height: 12.75pt;"&gt;   &lt;td height="17" style="height: 12.75pt;" x:str="Forcing "&gt;&lt;b&gt;Forcing&amp;nbsp;&lt;/b&gt;&lt;/td&gt;   &lt;td align="right" x:num=""&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;   &lt;td align="right" x:num=""&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="17" style="height: 12.75pt;"&gt;   &lt;td height="17" style="height: 12.75pt;" x:str="Avoiding "&gt;&lt;b&gt;Avoiding&amp;nbsp;&lt;/b&gt;&lt;/td&gt;   &lt;td&gt;&lt;b&gt;NA&lt;/b&gt;&lt;/td&gt;   &lt;td&gt;&lt;b&gt;NA&lt;/b&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Chanakya Neeti:&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Sam&lt;/li&gt;&lt;li&gt;Dam&lt;/li&gt;&lt;li&gt;Dand&lt;/li&gt;&lt;li&gt;Bhed &lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.umsl.edu/%7Esauterv/analysis/488_f01_papers/Ohlendorf.htm"&gt;http://www.umsl.edu/~sauterv/analysis/488_f01_papers/Ohlendorf.htm&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-3397711989181628651?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/3397711989181628651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/04/approaches-to-conflict-resolution.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3397711989181628651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3397711989181628651'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/04/approaches-to-conflict-resolution.html' title='Approaches to Conflict Resolution'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-7586156092596216030</id><published>2011-04-14T21:44:00.001-07:00</published><updated>2011-04-15T01:13:21.242-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Management'/><title type='text'>Ways of addressing conflict</title><content type='html'>&lt;h2&gt;&lt;/h2&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-mLSrerQrHnc/Taf7JQ6y2WI/AAAAAAAAFGg/hyZx8Sp2MUM/s1600/Handling_Conflict.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="279" src="http://1.bp.blogspot.com/-mLSrerQrHnc/Taf7JQ6y2WI/AAAAAAAAFGg/hyZx8Sp2MUM/s320/Handling_Conflict.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Five basic ways of addressing conflict were identified &lt;sup class="reference" id="cite_ref-9"&gt;&lt;a href="http://en.wikipedia.org/wiki/Conflict_resolution#cite_note-9"&gt;&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Communication_Accommodation_Theory" title="Communication Accommodation Theory"&gt;Accommodation&lt;/a&gt; – surrender one's own needs and wishes to accommodate the other party.&lt;/li&gt;&lt;li&gt;&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Avoidance_%28conflict%29" title="Avoidance (conflict)"&gt;Avoidance&lt;/a&gt;  – avoid or postpone conflict by ignoring it, changing the subject, etc.  Avoidance can be useful as a temporary measure to buy time or as an  expedient means of dealing with very minor, non-recurring conflicts. In  more severe cases, conflict avoidance can involve severing a  relationship or leaving a group.&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Collaboration"&gt;Collaboration&lt;/a&gt;  – work together to find a mutually beneficial solution. While the  Thomas Kilman grid views collaboration as the only win-win solution to  conflict, collaboration can also be time-intensive and inappropriate  when there is not enough trust, respect or communication among  participants for collaboration to occur.&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Compromise"&gt;Compromise&lt;/a&gt; –  bring the problem into the open and have the third person present. The  aim of conflict resolution is to reach agreement and most often this  will mean compromise.&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Competition"&gt;Competition&lt;/a&gt; –  assert one's viewpoint at the potential expense of another. It can be  useful when achieving one's objectives outweighs one's concern for the  relationship.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;References:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://managementhelp.org/intrpsnl/basics.htm"&gt;http://managementhelp.org/intrpsnl/basics.htm&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-7586156092596216030?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/7586156092596216030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/04/ways-of-addressing-conflict.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/7586156092596216030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/7586156092596216030'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/04/ways-of-addressing-conflict.html' title='Ways of addressing conflict'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-mLSrerQrHnc/Taf7JQ6y2WI/AAAAAAAAFGg/hyZx8Sp2MUM/s72-c/Handling_Conflict.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-215416056784727702</id><published>2011-03-29T23:17:00.001-07:00</published><updated>2011-11-22T19:31:40.499-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>Broker</title><content type='html'>Centralize Arch vs Tibco's Distributed Arch/Bus Arch&lt;br /&gt;wM - Broker act as hub and all other elements are spook/client. Like IS, Workflow comp&lt;br /&gt;&lt;br /&gt;Document - Address/Connect &lt;br /&gt;Publishable Doc Type: Schema for Document &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; XML, DTD, Broker Schema, XML Schema &lt;br /&gt;Trigger - Look for any publication for a doc type to notify subscriber and can take action in term of service. &lt;br /&gt;Adopter Trigger: Trigger for Adopter for a doc type &lt;br /&gt;Canonical Doc - A standard format understood by taget and source. &lt;br /&gt;It can be defined for multiple src/dest and can be made standard enterprise wide. &lt;br /&gt;20mins. &lt;br /&gt;&lt;br /&gt;Publishing: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; All Subscriber to Doc will get its copy. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; From address, not necessary to be specified. &lt;br /&gt;Subscribing: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Broker maintains one queue for each subscriber. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; At doc reciept, broker engine places a subscriber Pinter to all sub;;s queue for them to fetch Doc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-215416056784727702?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/215416056784727702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/03/broker.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/215416056784727702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/215416056784727702'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/03/broker.html' title='Broker'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-6455870604743683045</id><published>2011-03-29T10:07:00.000-07:00</published><updated>2011-11-22T19:32:03.616-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>Tibco RV - Concepts</title><content type='html'>Tibco RV is a low latency messaging product for real time data distribution applications. Tibco RV works within Tibco ESB to provide complete EAI solution for data distribution solution. &lt;br /&gt;&lt;br /&gt;&lt;img alt="Diagram - TIBCO Enterprise Message Service" height="270" src="http://www.tibco.com/multimedia/diagram-ems.gif" style="height: 270px; width: 500px;" title="Diagram - TIBCO Enterprise Message Service" width="500" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;RV Features:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Publish/subscribe, request/reply, and point-to-point messaging.&lt;/li&gt;&lt;li&gt;Reliable and Certified messaging&amp;nbsp;&lt;/li&gt;&lt;li&gt; Peer-to-peer multicast-based messaging&lt;/li&gt;&lt;li&gt;APIs that enable developers to build fault tolerance and load balancing into applications.&lt;/li&gt;&lt;li&gt;Centralized management of daemons, subjects, and multicast groups, with remote monitoring and&amp;nbsp;&lt;/li&gt;&lt;li&gt;TIBCO Adapter SDK for creating custom adapters.management via a browser interface or Java API.&lt;/li&gt;&lt;li&gt;TIBCO Rendezvous APIs are available in Java, C, C++, C#, Perl, and COM. &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Architecture:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Communication between RVDs in same env is on UDDP.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Communication between RVDs across WLAN is on TCP/SSL.&lt;/li&gt;&lt;li&gt;RV Demon manager manages all daemons of a network from a centralized location&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Process of Message Broker&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; &lt;a href="http://www.java2s.com/Open-Source/Java-Document/Testing/MActor/org/mactor/brokers/tibrv/TibcoRvMessageBroker.java.htm"&gt;Code TibRV Listener &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-6455870604743683045?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/6455870604743683045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/03/tibco-rv-concepts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/6455870604743683045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/6455870604743683045'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/03/tibco-rv-concepts.html' title='Tibco RV - Concepts'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-2058776468213312423</id><published>2011-03-28T01:36:00.000-07:00</published><updated>2011-11-22T19:31:40.477-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>EAI Basic Patterns</title><content type='html'>&lt;table border="0" cellpadding="4" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="tocheading" colspan="3"&gt;Introduction&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/Preface.html"&gt;Preface&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/Introduction.html"&gt;Introduction&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/Chapter1.html"&gt;Solving Integration Problems using Patterns&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocheading" colspan="3"&gt;Integration Styles&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/IntegrationStylesIntro.html"&gt;Introduction to Integration Styles&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/FileTransferIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/FileTransferIntegration.html"&gt;File Transfer&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can I integrate multiple applications so that they work together and can exchange information?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/SharedDatabaseIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/SharedDataBaseIntegration.html"&gt;Shared Database&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can I integrate multiple applications so that they work together and can exchange information?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/EncapsulatedSynchronousIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/EncapsulatedSynchronousIntegration.html"&gt;Remote Procedure Invocation&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can I integrate multiple applications so that they work together and can exchange information?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/MessagingIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/Messaging.html"&gt;Messaging&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can I integrate multiple applications so that they work together and can exchange information?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocheading" colspan="3"&gt;Messaging Systems&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessagingComponentsIntro.html"&gt;Introduction to Messaging Systems&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/ChannelIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessageChannel.html"&gt;Message Channel&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How does one application communicate with another using messaging?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/MessageIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/Message.html"&gt;Message&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can two applications connected by a message channel exchange a piece of information?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/PipesAndFiltersIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/PipesAndFilters.html"&gt;Pipes and Filters&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can we perform complex processing on a message while maintaining independence and flexibility? &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/ContentBasedRouterIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessageRouter.html"&gt;Message Router&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How  can you decouple individual processing steps so that messages can be  passed to different filters depending on a set of conditions?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/MessageTranslatorIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessageTranslator.html"&gt;Message Translator&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can systems using different data formats communicate with each other using messaging?  &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/MessageEndpointIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessageEndpoint.html"&gt;Message Endpoint&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How does an application connect to a messaging channel to send and receive messages?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocheading" colspan="3"&gt;Messaging Channels&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessagingChannelsIntro.html"&gt;Introduction to Messaging Channels&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/PointToPointIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/PointToPointChannel.html"&gt;Point-to-Point Channel&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can the caller be sure that exactly one receiver will receive the document or perform the call?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/PublishSubscribeIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/PublishSubscribeChannel.html"&gt;Publish-Subscribe Channel&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can the sender broadcast an event to all interested receivers?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/DatatypeChannelIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/DatatypeChannel.html"&gt;Datatype Channel&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can the application send a data item such that the receiver will know how to process it?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/InvalidMessageChannelIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/InvalidMessageChannel.html"&gt;Invalid Message Channel&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can a messaging receiver gracefully handle receiving a message that makes no sense?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/DeadLetterChannelIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/DeadLetterChannel.html"&gt;Dead Letter Channel&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;What will the messaging system do with a message it cannot deliver?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/GuaranteedMessagingIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/GuaranteedMessaging.html"&gt;Guaranteed Delivery&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can the sender make sure that a message will be delivered, even if the messaging system fails?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/ChannelAdapterIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/ChannelAdapter.html"&gt;Channel Adapter&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can you connect an application to the messaging system so that it can send and receive messages?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/MessagingBridgeIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessagingBridge.html"&gt;Messaging Bridge&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can multiple messaging systems be connected so that messages available on one are also available on the others?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/MessageBusIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessageBus.html"&gt;Message Bus&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;What is an architecture that enables separate applications to work  together, but in a decoupled fashion such that applications can be  easily added or removed without affecting the others?  &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocheading" colspan="3"&gt;Message Construction&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessageConstructionIntro.html"&gt;Introduction to Message Construction&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/CommandMessageIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/CommandMessage.html"&gt;Command Message&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can messaging be used to invoke a procedure in another application?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/DocumentMessageIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/DocumentMessage.html"&gt;Document Message&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can messaging be used to transfer data between applications?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/EventMessageIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/EventMessage.html"&gt;Event Message&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can messaging be used to transmit events from one application to another?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/RequestReplyIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/RequestReply.html"&gt;Request-Reply&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;When an application sends a message, how can it get a response from the receiver?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/ReturnAddressIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/ReturnAddress.html"&gt;Return Address&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How does a replier know where to send the reply?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/CorrelationIdentifierIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/CorrelationIdentifier.html"&gt;Correlation Identifier&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How does a requestor that has received a reply know which request this is the reply for?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/MessageSequenceIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessageSequence.html"&gt;Message Sequence&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can messaging transmit an arbitrarily large amount of data?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/MessageExpirationIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessageExpiration.html"&gt;Message Expiration&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can a sender indicate when a message should be considered stale and thus shouldn’t be processed?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/FormatIndicator.html"&gt;Format Indicator&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can a message’s data format be designed to allow for possible future changes?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocheading" colspan="3"&gt;Interlude: Simple Messaging&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/SimpleMessagingIntro.html"&gt;Introduction to Simple Messaging Examples&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/RequestReplyJmsExample.html"&gt;JMS Request/Reply Example&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/RequestReplyNetExample.html"&gt;.NET Request/Reply Example&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/ObserverJmsExample.html"&gt;JMS Publish/Subscribe Example&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocheading" colspan="3"&gt;Message Routing&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessageRoutingIntro.html"&gt;Introduction to Message Routing&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/ContentBasedRouterIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/ContentBasedRouter.html"&gt;Content-Based Router&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How do we handle a situation where the implementation of a single  logical function (e.g., inventory check) is spread across multiple  physical systems?   &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/MessageFilterIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/Filter.html"&gt;Message Filter&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can a component avoid receiving uninteresting messages?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/DynamicRouterIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/DynamicRouter.html"&gt;Dynamic Router&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can you avoid the dependency of the router on all possible destinations while maintaining its efficiency?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/RecipientListIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/RecipientList.html"&gt;Recipient List&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How do we route a message to a list of dynamically specified recipients?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/SplitterIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/Sequencer.html"&gt;Splitter&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can we process a message if it contains multiple elements, each of which may have to be processed in a different way?  &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/AggregatorIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/Aggregator.html"&gt;Aggregator&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How do we combine the results of individual, but related messages so that they can be processed as a whole?     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/ResequencerIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/Resequencer.html"&gt;Resequencer&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can we get a stream of related but out-of-sequence messages back into the correct order?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/DistributionAggregateIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/DistributionAggregate.html"&gt;Composed Message Processor&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can you maintain the overall message flow when processing a  message consisting of multiple elements, each of which may require  different processing?     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/BroadcastAggregate.html"&gt;Scatter-Gather&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How do you maintain the overall message flow when a message  needs to be sent to multiple recipients, each of which may send a reply?       &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/RoutingTableIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/RoutingTable.html"&gt;Routing Slip&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How do we route a message consecutively through a series of processing  steps when the sequence of steps is not known at design-time and may  vary for each message? &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/ProcessManagerIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/ProcessManager.html"&gt;Process Manager&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How  do we route a message through multiple processing steps when the  required steps may not be known at design-time and may not be  sequential?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/MessageBrokerIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessageBroker.html"&gt;Message Broker&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can you decouple the destination of a message from the sender and maintain central control over the flow of messages?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocheading" colspan="3"&gt;Message Transformation&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessageTransformationIntro.html"&gt;Introduction to Message Transformation&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/EnvelopeWrapperIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/EnvelopeWrapper.html"&gt;Envelope Wrapper&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can existing systems participate in a messaging exchange that  places specific requirements on the message format, such as message  header fields or encryption?  &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/DataEnricherIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/DataEnricher.html"&gt;Content Enricher&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How do we communicate with another system if the message originator does not have all the required data items available?   &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/ContentFilterIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/ContentFilter.html"&gt;Content Filter&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How do you simplify dealing with a large message, when you are interested only in a few data items?  &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/StoreInLibraryIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/StoreInLibrary.html"&gt;Claim Check&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can we reduce the data volume of message sent across the system without sacrificing information content? &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/NormalizerIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/Normalizer.html"&gt;Normalizer&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How do you process messages that are semantically equivalent, but arrive in a different format?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/CanonicalDataModel.html"&gt;Canonical Data Model&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can you minimize dependencies when integrating applications that use different data formats?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocheading" colspan="3"&gt;Interlude: Composed Messaging&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/ComposedMessagingExample.html"&gt;Introduction to Composed Messaging Examples&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/ComposedMessagingWS.html"&gt;Synchronous Implementation using Web Services&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/ComposedMessagingMSMQ.html"&gt;Asynchronous Implementation with MSMQ&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/ComposedMessagingTIBCO.html"&gt;Asynchronous Implementation with TIBCO ActiveEnterprise&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocheading" colspan="3"&gt;Messaging Endpoints&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessagingEndpointsIntro.html"&gt;Introduction to Messaging Endpoints&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/MessagingGatewayIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessagingGateway.html"&gt;Messaging Gateway&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How do you encapsulate access to the messaging system from the rest of the application?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessagingMapper.html"&gt;Messaging Mapper&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How do you move data between domain objects and the messaging infrastructure while keeping the two independent of each other?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/TransactionalClientIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/TransactionalClient.html"&gt;Transactional Client&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can a client control its transactions with the messaging system?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/PollingConsumerIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/PollingConsumer.html"&gt;Polling Consumer&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can an application consume a message when the application is ready?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/EventDrivenConsumerIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/EventDrivenConsumer.html"&gt;Event-Driven Consumer&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can an application automatically consume messages as they become available?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/CompetingConsumersIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/CompetingConsumers.html"&gt;Competing Consumers&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can a messaging client process multiple messages concurrently?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/MessageDispatcherIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessageDispatcher.html"&gt;Message Dispatcher&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can multiple consumers on a single channel coordinate their message processing?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/MessageSelectorIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessageSelector.html"&gt;Selective Consumer&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can a message consumer select which messages it wishes to receive?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/DurableSubscriptionIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/DurableSubscription.html"&gt;Durable Subscriber&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can a subscriber avoid missing messages while it’s not listening for them?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/IdempotentReceiver.html"&gt;Idempotent Receiver&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can a message receiver deal with duplicate messages?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/MessagingAdapterIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessagingAdapter.html"&gt;Service Activator&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can an application design a service to be invoked both via various messaging technologies and via non-messaging techniques?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocheading" colspan="3"&gt;System Management&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/SystemManagementIntro.html"&gt;Introduction to System Management&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/ControlBusIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/ControlBus.html"&gt;Control Bus&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can we effectively administer a messaging system that is  distributed across multiple platforms and a wide geographic area?    &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/DetourIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/Detour.html"&gt;Detour&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can you route a message through intermediate steps to perform validation, testing or debugging functions?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/WireTapIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/WireTap.html"&gt;Wire Tap&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How do you inspect messages that travel on a point-to-point channel?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessageHistory.html"&gt;Message History&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can we effectively analyze and debug the flow of messages in a loosely coupled system?  &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/MessageStoreIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/MessageStore.html"&gt;Message Store&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can we report against message information without disturbing the  loosely coupled and transient nature of a messaging system?     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/SmartProxyIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/SmartProxy.html"&gt;Smart Proxy&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can you track messages on a service that publishes reply messages to the Return Address specified by the requestor?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/TestMessageIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/TestMessage.html"&gt;Test Message&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;What happens, though, if a component is actively processing messages, but garbles outgoing messages due to an internal fault? &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;img src="http://www.eaipatterns.com/img/ChannelPurgerIcon.gif" /&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/ChannelPurger.html"&gt;Channel Purger&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;How can you keep 'left-over' messages on a channel from disturbing tests or running systems?&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocheading" colspan="3"&gt;Interlude: Systems Management Example&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/SystemManagementExample.html"&gt;Loan Broker System Management&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocheading" colspan="3"&gt;Integration Patterns in Practice&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/BondTradingCaseStudy.html"&gt;Case Study: Bond Trading System&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocheading" colspan="3"&gt;Concluding Remarks&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/Future.html"&gt;Emerging Standards and Futures in Enterprise Integration&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocheading" colspan="3"&gt;Appendices&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="tocentry" width="120"&gt;&lt;/td&gt;&lt;td class="tocentry" width="150"&gt;&lt;a href="http://www.eaipatterns.com/bib.html"&gt;Bibliography&lt;/a&gt;&lt;/td&gt;&lt;td class="tocentry"&gt;Annotated list of references and recommended reading. &lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Reference: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;http://www.eaipatterns.com/toc.html&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-2058776468213312423?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/2058776468213312423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/03/eai-basic-patterns.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/2058776468213312423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/2058776468213312423'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/03/eai-basic-patterns.html' title='EAI Basic Patterns'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-1108350323877899805</id><published>2011-03-16T21:23:00.000-07:00</published><updated>2011-03-16T21:23:01.776-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>Project Oriented SOA</title><content type='html'>&lt;b&gt;SOA&amp;nbsp; Activity &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Service Ownership Problem : Central Team to manage all services - Architecture to impl&lt;/li&gt;&lt;li&gt;Identification / Lifestyle Mgmt / Pipeline Activities&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;SOA Essentials:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Max Reuse services &lt;/li&gt;&lt;li&gt;Mini change Impact&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Managing the change: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Change is Inevitable. &lt;/li&gt;&lt;li&gt;Facade Pattern &lt;/li&gt;&lt;li&gt;Canonical Model &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Domain Model &lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Consistent View of Data &lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Reconciles diff between Entity&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;SOA Gov: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Carrot &amp;amp; Stick Approach &lt;/li&gt;&lt;li&gt;Critical - Max Reuse and encourage Right behavior &lt;/li&gt;&lt;li&gt;Success Factor - &lt;/li&gt;&lt;li&gt;Process - Checkpoints&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;SOA Matrices: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;# of Service created &lt;/li&gt;&lt;li&gt;Amount services reuse &lt;/li&gt;&lt;li&gt;Cost Avoid/Dacing &lt;/li&gt;&lt;li&gt;Project using services &lt;/li&gt;&lt;li&gt;ROI&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Focus on Expertise : &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Oracle SOA Suite&amp;nbsp;&lt;/li&gt;&lt;li&gt;TIBCO AMX Suite&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-1108350323877899805?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/1108350323877899805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/03/project-oriented-soa.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/1108350323877899805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/1108350323877899805'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/03/project-oriented-soa.html' title='Project Oriented SOA'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-6366830256650646310</id><published>2011-03-08T20:56:00.000-08:00</published><updated>2011-11-22T19:31:30.493-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>Database - Concept</title><content type='html'>&lt;b&gt;&lt;span style="font-size: large;"&gt;Normalization:&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;There are 5 normal forms. It is necessary for any database to be in the third normal form to maintain referential integrity and non-redundancy.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;First Normal Form: &lt;/b&gt;Every field of a table (row,col) must contain an atomic value&lt;/li&gt;&lt;li&gt;&lt;b&gt;Second Normal Form: &lt;/b&gt;All columns of a table must depend entirely on the primary key column.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Third Normal Form: &lt;/b&gt;All columns of a table must depend on all columns of a composite primary key.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Fourth Normal Form: &lt;/b&gt;A table must not contain two or more independent multi-valued facts. This normal form is often avoided for maintenance reasons.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Fifth Normal Form: &lt;/b&gt;is about symmetric dependencies.&lt;/li&gt;&lt;/ol&gt;Each normal form assumes that the table is already in the earlier normal form.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-6366830256650646310?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/6366830256650646310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/03/database-concept.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/6366830256650646310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/6366830256650646310'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/03/database-concept.html' title='Database - Concept'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-3569648504285928180</id><published>2011-01-22T22:20:00.000-08:00</published><updated>2011-04-15T01:13:30.219-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Management'/><title type='text'>Factors for Motivation and Performance</title><content type='html'>Motivational Strategies for leader &lt;br /&gt;&lt;ul&gt;&lt;li&gt; challenges &lt;/li&gt;&lt;li&gt; curiosity &lt;/li&gt;&lt;li&gt; control &lt;/li&gt;&lt;li&gt; fantasy &lt;/li&gt;&lt;li&gt; competition &lt;/li&gt;&lt;li&gt; cooperation &lt;/li&gt;&lt;li&gt; recognition&lt;/li&gt;&lt;/ul&gt;Key factor for performance &lt;br /&gt;&lt;ul&gt;&lt;li&gt; purpose &lt;/li&gt;&lt;li&gt; resources &lt;/li&gt;&lt;li&gt; incentive &lt;/li&gt;&lt;li&gt; visibility &lt;/li&gt;&lt;li&gt; encouragement &lt;/li&gt;&lt;li&gt; capability &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-3569648504285928180?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/3569648504285928180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/01/factors-for-motivation-and-performance.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3569648504285928180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3569648504285928180'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/01/factors-for-motivation-and-performance.html' title='Factors for Motivation and Performance'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-3979664917553259095</id><published>2010-11-07T00:12:00.000-07:00</published><updated>2011-11-22T19:31:40.508-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>TIBCO Active Matrix - Intro</title><content type='html'>&lt;b&gt;TIBCO Product Suite For SOA:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;Follows Model Driven SOA Patterns.&amp;nbsp; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mediation Pattern using AM Service Bus &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Location/Implementation Transparency &lt;/li&gt;&lt;li&gt;Transport Transparency &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Orchestration Pattern - AM BW &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Help process talk to each other &lt;/li&gt;&lt;li&gt;One Level Interaction Based / Response &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Composite Patterns using AM Grid &lt;/li&gt;&lt;ul&gt;&lt;li&gt;SCA (Service Composite Architect) &lt;/li&gt;&lt;li&gt;Multiple Level of Interaction between Services&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Features:&amp;nbsp;SOA Offerings &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Service Virtualization &lt;/li&gt;&lt;li&gt;Mediation &lt;/li&gt;&lt;li&gt;Normalized Messaging &lt;/li&gt;&lt;li&gt;Net and Java applications integration &lt;/li&gt;&lt;li&gt;Communication&amp;nbsp;&lt;/li&gt;&lt;li&gt;Virtualization &lt;/li&gt;&lt;li&gt;Transaction &lt;/li&gt;&lt;li&gt;Deployment &lt;/li&gt;&lt;li&gt;Policy/Service Management &lt;/li&gt;&lt;li&gt;Monitoring &lt;/li&gt;&lt;li&gt;Debugging&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;All in One Editor:&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;One Console and Single Application &lt;/li&gt;&lt;li&gt;Create / Pub / Mgmt&lt;/li&gt;&lt;li&gt;Design: &lt;/li&gt;&lt;li&gt;Development: &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Hand Code Biz Logic &lt;/li&gt;&lt;li&gt;Can reference other service in code via annotations &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Deployment: &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Horizontal and Vertical &lt;/li&gt;&lt;li&gt;Service Cloud&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Server Startup Sequence: &lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;EMS Server&lt;/li&gt;&lt;li&gt;HSQL DB&lt;/li&gt;&lt;li&gt;Demon &lt;/li&gt;&lt;li&gt;Amx Admin Server &lt;/li&gt;&lt;li&gt;Login to Console &lt;/li&gt;&lt;li&gt;Node Running &lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Policy Manager&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;To enforce &lt;/span&gt;&lt;span style="font-size: small;"&gt;SOA Governance.&amp;nbsp; &lt;/span&gt;&lt;br /&gt;Guidelines: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;People and Process &lt;/li&gt;&lt;li&gt;Reusable Serives &lt;/li&gt;&lt;li&gt;Focus on Core Business &lt;/li&gt;&lt;li&gt;Policy Mgmt Seprate&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;Features: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Registry &lt;/li&gt;&lt;li&gt;Repository &lt;/li&gt;&lt;li&gt;Policy Mgmt &lt;/li&gt;&lt;li&gt;Service Mgmt&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Operation Of Service&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Flow - policy / Service / app &lt;/li&gt;&lt;li&gt;Policy Mgmt is seprate from service development &lt;/li&gt;&lt;li&gt;Policy gets applied to service by Policy Mgmt&lt;/li&gt;&lt;li&gt;This get tranverse effect on application using that service&lt;/li&gt;&lt;li&gt;Policy Mgmt alows same service deployment with different policy without changing service.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;SOA Policy Standards: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;WS-Policy:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Audting &lt;/li&gt;&lt;li&gt;Logging &lt;/li&gt;&lt;li&gt;Routing &lt;/li&gt;&lt;li&gt;Schema Validation &lt;/li&gt;&lt;li&gt;SLA &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;WS-Security: &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Authentication / Authentication / Digital Cert / Encriiption &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-3979664917553259095?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/3979664917553259095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/11/tibco-active-matrix-intro.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3979664917553259095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3979664917553259095'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/11/tibco-active-matrix-intro.html' title='TIBCO Active Matrix - Intro'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-2075478047540020615</id><published>2010-11-07T00:04:00.000-07:00</published><updated>2011-11-22T19:31:40.490-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>TIBCO - AMX Service Bus</title><content type='html'>&lt;b&gt;Needs of Mediation:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Transport Bridging&amp;nbsp;-HTTP to JMS&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Allows multiple transport by different service for same component/parts of it.&amp;nbsp; &lt;/li&gt;&lt;li&gt;Location Transparency - Move yr service to nodes/port&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Routing and Service Version Management &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Content Based Routing - Rules based routing &lt;/li&gt;&lt;li&gt;Context Based Routing - With multiple version of service routing &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;On-boarding Services &lt;/li&gt;&lt;li&gt;Data Transformation (Implementation Transparency)&lt;/li&gt;&lt;li&gt;Security and runtime governance&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Policy Enforcement At Runtime at both Provider/Consumer ends &lt;/li&gt;&lt;li&gt;Monitoring of message &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Promote Re-use&amp;nbsp;&lt;/li&gt;&lt;li&gt;Message interaction pattern&amp;nbsp;&lt;/li&gt;&lt;li&gt;Customer Task&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Write a File/Log/Faults/Control Flow&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Types Of Mediation Task in AMSB:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;External Interaction (Invoke operations/Query DB/Log) &lt;/li&gt;&lt;li&gt;Data Exchange(Parse &amp;amp; Render XML, Transform/Set Exchange variable)&lt;/li&gt;&lt;li&gt;Flow Control (Route / xPath / Throw Fault / Generate Reply / Set Dynamic Ref) &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Editor Features:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Canvas:&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Mediation Interface, Mediation Paths and Target Interface&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Mediation Mapping -&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Projection - Exposed to consumer&amp;nbsp;&lt;/li&gt;&lt;li&gt;Mediation Pallet&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Transform / Route / Log &lt;/li&gt;&lt;li&gt;xPath Route / Throw Fault &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;New Features and their details: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt; Dynamic Routing&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Apply rules in run-time&amp;nbsp;&lt;/li&gt;&lt;li&gt;Static Routing is done at design time.&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Data Enrichment&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Let you query DB for data or routing rules to make decision&amp;nbsp;&lt;/li&gt;&lt;li&gt;Query DB Task Editor - Visual SQL Enabled&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Security Context Propogation&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;SAML (Security Assertion Markup Language)&amp;nbsp; Token Identity Propagation&amp;nbsp;&lt;/li&gt;&lt;li&gt;More applied to SSO (Principal gets authentication from a domain and service provider choose to accept it) &lt;/li&gt;&lt;li&gt;Authentication (Identity, assertion, validaiton)&lt;/li&gt;&lt;li&gt;Authorization (LDAP based) using SAML issuer attribute in token&lt;/li&gt;&lt;li&gt;Message (decryption &amp;amp; encryption) &amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Invoke Operation&amp;nbsp; Mediation Task&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Orchastration as Mediation task&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Contribute content to mediation exchange - Enriching the payload by call intermediate services &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Generate Reply Mediation Task&amp;nbsp; &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Cached response&amp;nbsp;&lt;/li&gt;&lt;li&gt;Simple orchestration &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Mediation Exchange&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Can rip header data from message xchange&amp;nbsp;&lt;/li&gt;&lt;li&gt;Modify data in translation&amp;nbsp;&lt;/li&gt;&lt;li&gt;By using Use Exchange Variable and apply schema&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt; Parse and Render XML&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Parse - Binary/XML &amp;gt; Formated XML&amp;nbsp;&lt;/li&gt;&lt;li&gt;Render - Formatted XML &amp;gt; Binary/XML&amp;nbsp;&lt;/li&gt;&lt;li&gt;Use Schema for this&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;EJB Binding Type&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Consume EJB Stateless Session Bean by exposing them as Service on Bus&amp;nbsp;&lt;/li&gt;&lt;li&gt;Import Jar File&amp;nbsp;&lt;/li&gt;&lt;li&gt; Create WSDL &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;http://media.tibco.com/devnet/activematrix_service/amsb201_overview/index.html&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-2075478047540020615?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/2075478047540020615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/11/tibco-amx-service-bus.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/2075478047540020615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/2075478047540020615'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/11/tibco-amx-service-bus.html' title='TIBCO - AMX Service Bus'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-4512304925798531630</id><published>2010-11-06T00:00:00.000-07:00</published><updated>2010-11-06T00:00:13.916-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>WebMethod</title><content type='html'>&lt;b&gt;Real-time Components: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Integration Server - Platform to run all adopter/b2b Gateway/monitor/Admin&lt;/li&gt;&lt;li&gt;Broker - Messaging Infra/JMS&lt;/li&gt;&lt;li&gt;Adopter - Data and Business Logic for backend sys &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Run under IS. &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Mainframe - For Adoter / Run outside IS&lt;/li&gt;&lt;li&gt;Trading Network - &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Business Doc gateway to build and manage &lt;/li&gt;&lt;li&gt;B2B doc exchange with parterner &lt;/li&gt;&lt;li&gt;All Transport (http/ftp/smtp)&lt;/li&gt;&lt;li&gt;eStandard - ebXML, SWITFT FIN, CIDX, EDI&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Workflow - Business process approval with manual interaction . &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Outside IS via Broker &lt;/li&gt;&lt;li&gt;Client Server Approach&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Design Time Components: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Modeloer - Business Process Model &lt;/li&gt;&lt;li&gt;Workflow Designer - For Workflow &lt;/li&gt;&lt;li&gt;Developer - &lt;/li&gt;&lt;li&gt;Trading Network Console - Profile/doc Types/processing rules&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Admin&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Admin &lt;/li&gt;&lt;li&gt;Manager &lt;/li&gt;&lt;li&gt;Monitor&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-4512304925798531630?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/4512304925798531630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/11/webmethod.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4512304925798531630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4512304925798531630'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/11/webmethod.html' title='WebMethod'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-3241719958988289043</id><published>2010-11-05T23:47:00.000-07:00</published><updated>2011-05-05T03:05:04.306-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Management'/><title type='text'>Manager - Tips</title><content type='html'>&lt;ul&gt;&lt;li&gt;Email&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Should be used to push out inofrmation for others to make decision. &lt;/li&gt;&lt;li&gt;Dot send threat, negative news, confrontation, challenge or criticize &lt;/li&gt;&lt;li&gt;Use more personal connection - Phone/Chat/P2P &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Whiner at Office&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Dont whine and dont let and dont set stage. &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Negative Feeling/Situation at Work &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Review, Renew, Recharge and Recreate &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Exec Talk: &lt;/li&gt;&lt;ul&gt;&lt;li&gt;More facts than emotions &lt;/li&gt;&lt;li&gt;Establish rapport - Savvy and Confidant &lt;/li&gt;&lt;li&gt;Be clear on objective &lt;/li&gt;&lt;li&gt;Suggestion for improvement &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Recognition&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Recognize good in public and bad in private.&lt;/li&gt;&lt;li&gt;Recognize regularly and all meeting &lt;/li&gt;&lt;li&gt;Recognition important factor in performance &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-3241719958988289043?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/3241719958988289043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/11/manager-tips.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3241719958988289043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3241719958988289043'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/11/manager-tips.html' title='Manager - Tips'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-4663953733726933225</id><published>2010-10-27T00:47:00.000-07:00</published><updated>2010-10-27T00:47:47.154-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java SE'/><title type='text'>JMS - Concept</title><content type='html'>&lt;b&gt;Point to Point (Queue) &lt;/b&gt;&lt;br /&gt;A point-to-point (PTP) product or application is built around the  concept of message queues, senders, and receivers. Each message is  addressed to a specific queue, and receiving clients extract messages  from the queue(s) established to hold their messages. Queues retain all  messages sent to them until the messages are consumed or until the  messages expire. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Between Producer and Consumer&amp;nbsp; &lt;/li&gt;&lt;li&gt;Only one can get the message&lt;/li&gt;&lt;li&gt;Exclusive Queue (First consumer gets all message)&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Publish-Subscribe Model (Topics) &lt;/b&gt;&lt;br /&gt;In a publish/subscribe (pub/sub) product or application, clients  address messages to a topic. Publishers and subscribers are generally  anonymous and may dynamically publish or subscribe to the content  hierarchy. The system takes care of distributing the messages arriving  from a topic's multiple publishers to its multiple subscribers. Topics  retain messages only as long as it takes to distribute them to current  subscribers. &lt;br /&gt;EMS is JMS impl by TIBCO. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Between Publisher and Subscriber&amp;nbsp; &lt;/li&gt;&lt;li&gt;All receivers can consume message. &lt;/li&gt;&lt;li&gt;Durable Subscription&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Defines time-line for validity of subscription&lt;/li&gt;&lt;li&gt;Parameters - Expiration / Storage Limit / Durability &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span mce_style="font-weight: bold;" style="font-weight: bold;"&gt;Diff RMI and JMS &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;RMI is for tightly coupled applications&lt;/li&gt;&lt;li&gt;JMS is for loosely coupled applications.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Flow of JMS: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sender - Send &amp;gt; Ack &amp;gt; Response&lt;/li&gt;&lt;li&gt;Receiver - Receive &amp;gt; Send Response&lt;/li&gt;&lt;li&gt;Server is responsible of sending message to Consumer on request/connection in both models. &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Destinations: &lt;/b&gt;&lt;br /&gt;Destination - Queue and Topics&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Static Destination&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Stays in Cofig / LDAP Look-up &lt;/li&gt;&lt;li&gt;Administration Toll &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Dynamic Destination&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;On fly by client API &lt;/li&gt;&lt;li&gt;Stay till consumer/message on destination &lt;/li&gt;&lt;li&gt;No JNDI / Config queue.conf/topic.conf&lt;/li&gt;&lt;li&gt;Java Programming Language &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Temp Destination &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Routing Queue&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Configurations:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Wild-card - Only Sub to Topic is allow with wildcard. &lt;/li&gt;&lt;li&gt;Inheritance&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Defined in Config on server &lt;/li&gt;&lt;li&gt;Rules can be apply using wildcard. Dist.* &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Permission&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Using wild charters, permission can be defined. &lt;/li&gt;&lt;li&gt;Secure the destination&amp;nbsp;&lt;/li&gt;&lt;li&gt;Authentication can be defined by secure property&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Flow Control - Config Max message Limit for Producer &lt;/li&gt;&lt;li&gt;FailSafe - Write to file to keep permanant persistance. &lt;/li&gt;&lt;li&gt;Exclusive - For Queue to deliver all message to first consumer. &lt;/li&gt;&lt;li&gt;Export and Import - To communicate with other applications/bus&amp;nbsp; &lt;/li&gt;&lt;li&gt;Expiration - Specify time to retire.&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Zero - Message never expire.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Confirmation: Message delivery confirmation for consumer &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Duplication: Server sends Confirmation of Ack&lt;/li&gt;&lt;li&gt; Auto Ack: No confirmation from Client&amp;nbsp; &lt;/li&gt;&lt;li&gt; Client Ack: Client has to send confirmation&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Compression:&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Body get compresses.&amp;nbsp;&lt;/li&gt;&lt;li&gt;At Message level not on destination&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Destination Bridge: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Bridge between topics and queues&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Client side logic can be implement in EMS. &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Charateristics:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;It is not transitive. (Transfer Message a &amp;gt; b &amp;gt; c)&lt;/li&gt;&lt;li&gt;Access Control - Permission are also not transitive. Publisher has to have all permission on all bridge destination.&lt;/li&gt;&lt;li&gt;&amp;nbsp;Transaction - Due to bridge destination permission, transaction can fail. &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;span mce_style="font-weight: bold;" style="font-weight: bold;"&gt;JMS Message: &lt;/span&gt;&lt;br /&gt;It has three components&lt;br /&gt;&lt;ol&gt;&lt;li&gt; A header &lt;ul&gt;&lt;li&gt;JMSDestination&lt;/li&gt;&lt;li&gt;JMSDeliveryMode - Persistent / Non-persistent &lt;/li&gt;&lt;li&gt;JMSMessageID&lt;/li&gt;&lt;li&gt;JMSTimeStamp&lt;/li&gt;&lt;li&gt;JMSExpiration&lt;/li&gt;&lt;li&gt;JMSReplyTO&lt;/li&gt;&lt;li&gt;JMSCorrelationID - Matching Response Message to Message Id &lt;/li&gt;&lt;li&gt;JMSType&lt;/li&gt;&lt;li&gt;JMSRedelivered&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Properties (Optional) - Vendor Specific &lt;/li&gt;&lt;li&gt;A body (Optional)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Message Type: Text, Object, Stream. Map, Byte&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;ol&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-4663953733726933225?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/4663953733726933225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/10/jms-concept.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4663953733726933225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4663953733726933225'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/10/jms-concept.html' title='JMS - Concept'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-2289756495638423104</id><published>2010-08-15T05:57:00.000-07:00</published><updated>2011-04-15T01:13:38.558-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Management'/><title type='text'>Project Management Tips</title><content type='html'>&lt;u&gt;&lt;b&gt;PM Responsibility: &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Draw up the project plan, possibly present and      “sell” the project to those in authority.&lt;/li&gt;&lt;li&gt;Interact with top management, line managers, project      team members, supporting staff, and administrative staff.&lt;/li&gt;&lt;li&gt;Procure project resources, allocate them to      project staff,  coordinate their use, ensure that they are being maintained      in good  working order, and surrender them upon project completion.&lt;/li&gt;&lt;li&gt;Interact with outside vendors, clients, and      other project managers and project staff within your organization.&lt;/li&gt;&lt;li&gt;Initiate project implementation, continually      monitor progress,  review interim objectives or milestones, make course      adjustments,  view and review budgets, and continually monitor all project       resources.&lt;/li&gt;&lt;li&gt;Be responsible for all communication on the      project and hold  all project status meetings along with follow-up      documentation and  status reporting.&lt;/li&gt;&lt;li&gt;Document and track all project issues and      risks and ensure they are being properly tasked.&lt;/li&gt;&lt;li&gt;Supervise project team members, manage the      project team,  delegate tasks, review execution of tasks, provide feedback,      and  delegate new tasks.&lt;/li&gt;&lt;li&gt;Identify opportunities, identify problems,      devise appropriate adjustments, and stay focused on the desired outcome.&lt;/li&gt;&lt;li&gt;Handle inter-team issues, minimize conflicts,      resolve  differences, instill a team atmosphere, and continually motivate       team members to achieve superior performance.&lt;/li&gt;&lt;li&gt;Prepare interim presentations for top      management, offer a  convincing presentation, receive input and incorporate      it, review  results with project staff, and make still more course      adjustments.&lt;/li&gt;&lt;li&gt;Make the tough calls, such as having to remove      project team  members, ask project team members to work longer hours on      short  notice, reassign roles and responsibilities to the disappointment of       some, discipline team members as may be necessary, and resolve       personality-related issues affecting the team.&lt;/li&gt;&lt;li&gt;Consult with advisors, mentors, and coaches,      examine the  results of previous projects, draw upon previously      unidentified or  underused resources, and remain as balanced and objective      as  possible.&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;&lt;b&gt;Three Stage of Team Building&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Forming &lt;/li&gt;&lt;li&gt;Storming &lt;/li&gt;&lt;li&gt;Norming &lt;/li&gt;&lt;li&gt;Performing &lt;/li&gt;&lt;/ol&gt;&lt;u&gt;&lt;b&gt;Unofficial Role of PM&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Babysitter &lt;/li&gt;&lt;li&gt;Salesperson &lt;/li&gt;&lt;li&gt;Teacher &lt;/li&gt;&lt;li&gt;Friend&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;&lt;b&gt;Normal Conflict Situation: &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Out of scope work that needs to be included in      current timeline&lt;/li&gt;&lt;li&gt;Customer request for a different resource or      skill set&lt;/li&gt;&lt;li&gt;Customer training&lt;/li&gt;&lt;li&gt;Budget issue vs. Timeline issue&lt;/li&gt;&lt;li&gt;Functionality needed earlier than expected&lt;/li&gt;&lt;li&gt;Data management issues and who handles them&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;&lt;b&gt;Failure Reasons: &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;#1 – Fail to address issues immediately&lt;/li&gt;&lt;li&gt;#2 – Reschedule too often&lt;/li&gt;&lt;li&gt;#3 – Be content with reaching milestones on time, but ignore quality&lt;/li&gt;&lt;li&gt;#4 – Too much focus on project administration and not enough on project management&lt;/li&gt;&lt;li&gt;#5 – Micromanage rather than manage&lt;/li&gt;&lt;li&gt;#6 – Adapt new tools too readily&lt;/li&gt;&lt;li&gt;#7 – Monitor project progress intermittently&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;&lt;b&gt;Success Reasons: &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;#1 – Learn to use project management tools effectively&lt;/li&gt;&lt;li&gt;#2 – Be able to give and receive criticism&lt;/li&gt;&lt;li&gt;#3 – Be receptive to new procedures&lt;/li&gt;&lt;li&gt;#4 – Manage your time well &lt;/li&gt;&lt;li&gt;#5 – Be effective at conducting meetings &lt;/li&gt;&lt;li&gt;#6 – Polish your decision-making skills &lt;/li&gt;&lt;li&gt;#7 – Maintain a sense of humor&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;&lt;b&gt;Conflict Resolution: &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Compromise&lt;/i&gt;. Parties consent to agree; each side wins or loses a few points.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Confrontation&lt;/i&gt;. Parties work together to find a solution to the problem.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Forcing&lt;/i&gt;. Power is used to direct the solution. One side gets what the other does not.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Smoothing&lt;/i&gt;. This technique plays down the differences between two groups and gives strong attention to the points of agreement.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Withdrawal&lt;/i&gt;. This technique involves one party removing him- or herself from the conflict. &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;u&gt;Decision Making Checklist: &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;What is the core problem for the decision? &lt;/li&gt;&lt;li&gt;What is the potential impact of this decision on the project? &lt;/li&gt;&lt;li&gt;What’s the impact if you’re wrong? &lt;/li&gt;&lt;li&gt;What is the window of opportunity? &lt;/li&gt;&lt;li&gt;Have we made this kind of decision before? &lt;/li&gt;&lt;li&gt;Should you be making this decision – who is the expert? &lt;/li&gt;&lt;li&gt;Whose approval do we need and what feedback do we want before proceeding?&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;&lt;b&gt;Ten main characteristics of successful project teams are:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Clearly defined goals&lt;/li&gt;&lt;li&gt;Clearly defined roles&lt;/li&gt;&lt;li&gt;Open and clear communication&lt;/li&gt;&lt;li&gt;Effective decision making&lt;/li&gt;&lt;li&gt;Balanced participation&lt;/li&gt;&lt;li&gt;Valued diversity&lt;/li&gt;&lt;li&gt;Managed conflict&lt;/li&gt;&lt;li&gt;Positive atmosphere&lt;/li&gt;&lt;li&gt;Cooperative relationships&lt;/li&gt;&lt;li&gt;Participative leadership&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-2289756495638423104?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/2289756495638423104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/08/project-management-tips.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/2289756495638423104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/2289756495638423104'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/08/project-management-tips.html' title='Project Management Tips'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-6183965872099529247</id><published>2010-05-10T08:00:00.000-07:00</published><updated>2011-05-10T08:03:49.346-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Management'/><title type='text'>Escalation Management</title><content type='html'>&lt;u&gt;&lt;b&gt;Escalation Management &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;“Always Available, Rarely Required” &lt;/li&gt;&lt;li&gt;Right things to do, before things go wrongs. &lt;/li&gt;&lt;li&gt;Project don’t go wrong, they start wrong. &lt;/li&gt;&lt;li&gt;Escalation is failure of process. &lt;/li&gt;&lt;li&gt;Solution is having a solid Governance process &lt;/li&gt;&lt;li&gt;Happy escalations (before it happens) &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-6183965872099529247?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/6183965872099529247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/05/escalation-management.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/6183965872099529247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/6183965872099529247'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2011/05/escalation-management.html' title='Escalation Management'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-3757114485389212806</id><published>2010-03-30T20:50:00.000-07:00</published><updated>2011-04-15T01:13:51.418-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Management'/><title type='text'>Bathtub Leadership Model</title><content type='html'>&lt;b&gt;Leadership Participation vs Time&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Stays high at Start and End&amp;nbsp; &lt;/li&gt;&lt;li&gt;Stay low in between it but not zero at any time&amp;nbsp;&lt;/li&gt;&lt;li&gt;Bubble up for 4 C (Conflicts, Clarification, Check-in, Change) &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_oLQ2W8mBOMU/S7LF98e41PI/AAAAAAAAEFI/SrW434qy5EQ/s1600/bathtub.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_oLQ2W8mBOMU/S7LF98e41PI/AAAAAAAAEFI/SrW434qy5EQ/s320/bathtub.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.bnet.com/2422-13731_23-310498.html"&gt;http://www.bnet.com/2422-13731_23-310498.html&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-3757114485389212806?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/3757114485389212806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/03/bathtub-leadership-model.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3757114485389212806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3757114485389212806'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/03/bathtub-leadership-model.html' title='Bathtub Leadership Model'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_oLQ2W8mBOMU/S7LF98e41PI/AAAAAAAAEFI/SrW434qy5EQ/s72-c/bathtub.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-823124718220076870</id><published>2010-01-18T08:01:00.000-08:00</published><updated>2011-05-15T20:25:24.788-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PM'/><title type='text'>Agile PMP</title><content type='html'>&lt;b&gt;&lt;i&gt;Apply PMP knowledge in context of Agile &lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;9 Key Areas &lt;/li&gt;&lt;li&gt;5 Process &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;What is Agile? &lt;/b&gt;&lt;br /&gt;Agile - Manage for uncertainity and Risk&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Engineering - TDD/XP/Scrum&lt;/li&gt;&lt;li&gt;Project Management - MPP, Burndown chart, Sprint, &lt;/li&gt;&lt;li&gt;Leadership - Scrum, Retrospective Meet, &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Agile Manifesto &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Individual and Interaction &lt;/li&gt;&lt;li&gt; Process and Tool&lt;/li&gt;&lt;li&gt;Working Software&lt;/li&gt;&lt;li&gt; Comprehansice doc&lt;/li&gt;&lt;li&gt;Customer collaboration &lt;/li&gt;&lt;li&gt; Contract Negociateio&lt;/li&gt;&lt;li&gt;Responding to change &lt;/li&gt;&lt;li&gt; Follow a Plan &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Transition Into Agile &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Project Planning &amp;gt; Release Planning &amp;gt; Interaction Planning &lt;/li&gt;&lt;li&gt;Epic -&amp;gt; Feature -&amp;gt; User Story &lt;/li&gt;&lt;li&gt;18M &amp;gt; 6M &amp;gt; 2M&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Team Mgmt &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Cross Functional Management &lt;/li&gt;&lt;li&gt;Specialized Generalist &lt;/li&gt;&lt;li&gt;Focus from individual to Team - What is throughput of team? &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Focus: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Fully Functional &lt;/li&gt;&lt;li&gt;Always working &lt;/li&gt;&lt;li&gt;Not fully capable &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Monitoring and Controlling &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Interation Burn-down Chart &lt;/li&gt;&lt;li&gt;Feature Burn-down Chart &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Tracking - Earned Value &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Not activity rather business value &lt;/li&gt;&lt;li&gt;Should be done software deliverable on feature/user story &lt;/li&gt;&lt;li&gt;Should be on realized business values in terms of deliverables. &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Agile PM&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Time&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Deliverable not activities &lt;/li&gt;&lt;li&gt;Reduce Dependencies&lt;/li&gt;&lt;li&gt;Priority don’t sequence &lt;/li&gt;&lt;li&gt;Always finish on-time&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Cost &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Cost = Time size * duration &lt;/li&gt;&lt;li&gt;Invest dont spend&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Scope: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Plan scope in rolling waves &lt;/li&gt;&lt;li&gt;Make trade-offs &lt;/li&gt;&lt;li&gt;Allow for negotiation &lt;/li&gt;&lt;li&gt;Frequent customer interaction&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Risk:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Business and technical &lt;/li&gt;&lt;li&gt;Risk management built in &lt;/li&gt;&lt;li&gt;Continuous visibility &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Quality &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Quality not an afterthought &lt;/li&gt;&lt;li&gt;Test driven development &lt;/li&gt;&lt;li&gt;Continuous integration &lt;/li&gt;&lt;li&gt;Continuous testing&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Comm.&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Outside the team the same &lt;/li&gt;&lt;li&gt;Co location &lt;/li&gt;&lt;li&gt;Osmotic communication &lt;/li&gt;&lt;li&gt;Information radiators &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;HR&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Motivated individuals&lt;/li&gt;&lt;li&gt;Give them tools&lt;/li&gt;&lt;li&gt;Remove impediments &lt;/li&gt;&lt;li&gt;Self organization &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Procurement&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Build contract for change&lt;/li&gt;&lt;li&gt;Build relationships on trust &lt;/li&gt;&lt;li&gt;Create win-win agreement &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Risk Mgmt:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Business - Reduces &lt;/li&gt;&lt;li&gt;Technical - Reduces&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Leadership and Management &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Creates bubbles and mange context for them &lt;/li&gt;&lt;li&gt;Manages outside the bobbles stakeholders&lt;/li&gt;&lt;li&gt;Allows intra-communication between teams &lt;/li&gt;&lt;li&gt;Organization of all facilitator &lt;/li&gt;&lt;li&gt;Couching the team for different roles&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;i&gt;Bring project to a team, not team to project.&lt;/i&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-823124718220076870?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/823124718220076870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/01/apply-pmp-knowledge-in-context-of-agile.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/823124718220076870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/823124718220076870'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/01/apply-pmp-knowledge-in-context-of-agile.html' title='Agile PMP'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-1224220922192558835</id><published>2010-01-04T04:38:00.001-08:00</published><updated>2010-01-04T04:44:37.884-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Designer'/><title type='text'>Desktop Software Development Guidlines</title><content type='html'>&lt;b&gt;Desktop Software Development Guidelines: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Installation  &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Easy and smooth with all configuration&lt;/li&gt;&lt;li&gt;Footprint size &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Un-installation - Cleaning with standard &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Auto-update feature &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Licensing Management &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Stability &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Fail-over&amp;nbsp;&lt;/li&gt;&lt;li&gt;Disaster management&amp;nbsp;&lt;/li&gt;&lt;li&gt;System Errors(memory/shutdown/file corruption) &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;UI Interface&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Window Arrangement &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Layout and page flow&amp;nbsp;&lt;/li&gt;&lt;li&gt;shortcuts - Keyboard&amp;nbsp;&lt;/li&gt;&lt;li&gt;Help/Tooltip/Focus/color/contrast/&lt;/li&gt;&lt;li&gt;Refresh rate/l&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Visual/Hearing Aid/&lt;/li&gt;&lt;li&gt;Loading time/Shutting downtime &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Coherence with OS &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Connectivity&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Network Interfacing&amp;nbsp;&lt;/li&gt;&lt;li&gt;Hardware Interfacing &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-1224220922192558835?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/1224220922192558835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/01/desktop-software-development-guidlines.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/1224220922192558835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/1224220922192558835'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/01/desktop-software-development-guidlines.html' title='Desktop Software Development Guidlines'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-7572137635720869042</id><published>2010-01-03T03:38:00.000-08:00</published><updated>2010-01-03T04:55:52.368-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Domain'/><title type='text'>Google Health - Architecture and App Development</title><content type='html'>Google Health is essentially a central hub where individual users can manage information about their health.&amp;nbsp; The industry calls this a Personal Health Record or &lt;a href="http://en.wikipedia.org/wiki/Personal_health_record"&gt;PHR&lt;/a&gt;.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Data providers - who would supply information to the Google Health platform&lt;/li&gt;&lt;li&gt;Service providers - who would leverage the platform&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;Layered Architecture of Google Health &lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_oLQ2W8mBOMU/S0B67N3RxCI/AAAAAAAADsw/iHfBgxYGRFk/s1600-h/layers.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_oLQ2W8mBOMU/S0B67N3RxCI/AAAAAAAADsw/iHfBgxYGRFk/s320/layers.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Web Standards&lt;/b&gt;&lt;br /&gt;In addition to leveraging the familiar HTTP and XML standards for the basics of communication, The &lt;a href="http://code.google.com/apis/gdata/overview.html"&gt;Google Data API&lt;/a&gt; also relies on some more advanced (think Web 2.0) standards in &lt;a href="http://en.wikipedia.org/wiki/RSS_%28file_format%29"&gt;RSS&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Atom_%28standard%29"&gt;Atom&lt;/a&gt; to handle syndication (or distribution) and publishing.&amp;nbsp; &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_oLQ2W8mBOMU/S0B75q5Ab4I/AAAAAAAADs4/c4t_LE0703o/s1600-h/webstandards.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_oLQ2W8mBOMU/S0B75q5Ab4I/AAAAAAAADs4/c4t_LE0703o/s320/webstandards.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Health Standard:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Only technical standard from the health care industry being implemented by Google Health is the &lt;a href="http://en.wikipedia.org/wiki/Continuity_of_Care_Record"&gt;CCR&lt;/a&gt; (Continuity of Care Record). This does cover a significant range of details about a user’s health and the care they receive such as test results, allergies, height and weight and much more.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_oLQ2W8mBOMU/S0B8PPEOFVI/AAAAAAAADtA/tIWk6mRT2LQ/s1600-h/healthinfostandards.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_oLQ2W8mBOMU/S0B8PPEOFVI/AAAAAAAADtA/tIWk6mRT2LQ/s320/healthinfostandards.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Base Google API&lt;/b&gt;&lt;br /&gt;Google Health leverages the Google Data API and&amp;nbsp; Google Accounts API.&lt;b&gt; &lt;/b&gt;Google Data API is a “a simple standard protocol for reading and writing data on the web”.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_oLQ2W8mBOMU/S0B87Gofk5I/AAAAAAAADtI/_rvUUQan7Zk/s1600-h/basegoogleapi1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_oLQ2W8mBOMU/S0B87Gofk5I/AAAAAAAADtI/_rvUUQan7Zk/s320/basegoogleapi1.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The &lt;a href="http://code.google.com/apis/accounts/index.html"&gt;Accounts API&lt;/a&gt; provides two different basic modes of authentication.&amp;nbsp; Authentication for a web based application, and authentication for an installed client application.&amp;nbsp; There are two options for web based authentication: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;&lt;b&gt;AuthSub &lt;/b&gt;&lt;/i&gt;has been in use longer&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;OAuth &lt;/i&gt;&lt;/b&gt;is meant to be an open standard.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;Programming languages for client development: Protocol, .Net, Java, &lt;a href="http://en.wikipedia.org/wiki/Python_%28programming_language%29"&gt;Python&lt;/a&gt;, and PHP, &lt;i&gt;Objective C*, and Javascript*&lt;/i&gt;.&amp;nbsp;&amp;nbsp;&lt;b&gt;Google Health (Data &amp;amp; Integration) Services&lt;/b&gt;&lt;br /&gt;Google Health API provides it to main services… Health Data feeds and queries on those feeds. &lt;br /&gt;The Profile Feed provides access to the user’s health profile in a subset of the CCR standard.&amp;nbsp; Applications can send updates to the user’s health profile using the Register feed, as well as sending custom user alerts such as a prescription interaction warnings.&lt;br /&gt;&lt;b&gt; &lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_oLQ2W8mBOMU/S0B9icQDNxI/AAAAAAAADtQ/yK6dYHR24vk/s1600-h/googlehealth.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_oLQ2W8mBOMU/S0B9icQDNxI/AAAAAAAADtQ/yK6dYHR24vk/s320/googlehealth.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Health Data Providers&lt;/b&gt;&lt;br /&gt;Google is actively seeking to sign up partners to serve as &lt;a href="http://code.google.com/apis/health/data_providers_overview.html"&gt;data providers&lt;/a&gt; for Google Health. &lt;br /&gt;The users will be able to import data into their Google Health profile from data providers such as pharmacies, healthcare payers, health care providers, and laboratories.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_oLQ2W8mBOMU/S0B-NHFjuaI/AAAAAAAADtY/GII4Vh5dqVQ/s1600-h/healthdataproviders2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_oLQ2W8mBOMU/S0B-NHFjuaI/AAAAAAAADtY/GII4Vh5dqVQ/s320/healthdataproviders2.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;NOTE:&amp;nbsp; Google is not covered by HIPAA, but these partners typically are hippa covered entities.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Third Party Services&lt;/b&gt;&lt;br /&gt;Google already has &lt;a href="http://code.google.com/apis/health/third_party_overview.html"&gt;third party service providers&lt;/a&gt; integrated with Google health including wellness programs, prescription drug research tools, personal health consultants, and direct to consumer laboratories. &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_oLQ2W8mBOMU/S0B-upKfu8I/AAAAAAAADtg/JGn3q6n56RM/s1600-h/thirdpartyservices.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_oLQ2W8mBOMU/S0B-upKfu8I/AAAAAAAADtg/JGn3q6n56RM/s320/thirdpartyservices.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Google Health Web User Interface&lt;/b&gt;&lt;br /&gt;The Google Health platform obviously uses a web interface for users to manage their health information, as well as link their profile to data providers and third party services.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_oLQ2W8mBOMU/S0B_BJrCmPI/AAAAAAAADto/2-arpWnRh2g/s1600-h/googlewebui.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_oLQ2W8mBOMU/S0B_BJrCmPI/AAAAAAAADto/2-arpWnRh2g/s320/googlewebui.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Business Processes&lt;/b&gt;&lt;br /&gt;This layer represents the business processes or business model for entities partnering with google health.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_oLQ2W8mBOMU/S0B_ShlYmeI/AAAAAAAADtw/wCjHttlhlRM/s1600-h/businessprocesses.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_oLQ2W8mBOMU/S0B_ShlYmeI/AAAAAAAADtw/wCjHttlhlRM/s320/businessprocesses.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Personal Health Management Processes&lt;/b&gt;&lt;br /&gt;This layer represents the overall personal health managent processes that users of Google Health will achieve by using the system.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_oLQ2W8mBOMU/S0B_d5rl3QI/AAAAAAAADt4/6mbzlIPRcec/s1600-h/personalhealth.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_oLQ2W8mBOMU/S0B_d5rl3QI/AAAAAAAADt4/6mbzlIPRcec/s320/personalhealth.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Google Health Application Development: &lt;/span&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;Sandbox Arrangement:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;GH provides two environments for applications.&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Google Health is a production version which need digital signing, domain registration and other procedures to setup an application interface.&amp;nbsp; &lt;/li&gt;&lt;li&gt;Developer Sandbox is a development environment with easy to setup for developer to get going in matters of few minutes. &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/_oLQ2W8mBOMU/S0CIoOZ8rEI/AAAAAAAADuA/NIDvocx-8FY/s1600-h/sandbox.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_oLQ2W8mBOMU/S0CIoOZ8rEI/AAAAAAAADuA/NIDvocx-8FY/s400/sandbox.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;Profile View&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Each person is associated with a profile in Google health.&amp;nbsp; &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/_oLQ2W8mBOMU/S0CKxTfp0jI/AAAAAAAADuI/EN6YJvyX7aE/s1600-h/profileview.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_oLQ2W8mBOMU/S0CKxTfp0jI/AAAAAAAADuI/EN6YJvyX7aE/s320/profileview.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;Google Data Layers &lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Google health has REST interface to manage its CCR data. &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;a href="http://2.bp.blogspot.com/_oLQ2W8mBOMU/S0CLWufZy1I/AAAAAAAADuQ/g0RoH3GVB54/s1600-h/Data+Layers.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_oLQ2W8mBOMU/S0CLWufZy1I/AAAAAAAADuQ/g0RoH3GVB54/s320/Data+Layers.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;CCR to Google health UI:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;A "snapshot" of a patient's health data that can be useful or possibly lifesaving, if available at the time of clinical encounter. Google health provides data management of following categories.&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Medication&amp;nbsp;&lt;/li&gt;&lt;li&gt;Immunization&amp;nbsp;&lt;/li&gt;&lt;li&gt;Conditions&amp;nbsp;&lt;/li&gt;&lt;li&gt;Diagnosis&amp;nbsp;&lt;/li&gt;&lt;li&gt;Procedures&amp;nbsp;&lt;/li&gt;&lt;li&gt;Test&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://code.google.com/apis/health/ccrg_reference.html%20"&gt;Mapping CCR Elements to the Google Health UI&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;Steps to write a Google health Application:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Create security framework&amp;nbsp;&lt;/li&gt;&lt;li&gt;Create test account H9 sandbox&amp;nbsp;&lt;/li&gt;&lt;li&gt;Populate initial test data on H9&amp;nbsp;&lt;/li&gt;&lt;li&gt;Use gData API to read your&amp;nbsp; h9 CCR data&amp;nbsp;&lt;/li&gt;&lt;li&gt;Parse, format, display this CCR data&amp;nbsp;&lt;/li&gt;&lt;li&gt;Build a new CCR fragment&amp;nbsp;&lt;/li&gt;&lt;li&gt;Write back to Google Health by sending new CCR fragment to Rest API &lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;In &lt;/b&gt;&lt;b&gt;Healthy&lt;/b&gt;&lt;b&gt;Andy App: CCR Data utilized&lt;/b&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;/ContinuityOfCareRecord/Body/VitalSigns/Result/Test/TestResult/value|units&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://healthtechsynthesis.wordpress.com/2009/05/12/consultant_guide_to_google_health_part_i_of_iv/"&gt;http://healthtechsynthesis.wordpress.com/2009/05/12/consultant_guide_to_google_health_part_i_of_iv/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.slideshare.net/bess.ho/google-health-architecture-api"&gt;http://www.slideshare.net/bess.ho/google-health-architecture-api&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/chiefmedicalofficer/source/browse/#svn/tags/HelloGoogleHealth-0.1"&gt;http://code.google.com/p/chiefmedicalofficer/source/browse/#svn/tags/HelloGoogleHealth-0.1&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-7572137635720869042?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/7572137635720869042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/01/google-health-app-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/7572137635720869042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/7572137635720869042'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/01/google-health-app-development.html' title='Google Health - Architecture and App Development'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_oLQ2W8mBOMU/S0B67N3RxCI/AAAAAAAADsw/iHfBgxYGRFk/s72-c/layers.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-5953999919675635892</id><published>2010-01-02T06:46:00.000-08:00</published><updated>2010-01-04T02:59:27.602-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Domain'/><title type='text'>Medical Device Standardization</title><content type='html'>&lt;span style="font-size: large;"&gt;&lt;b&gt;Food and Drug Administration:&amp;nbsp;&amp;nbsp; &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Public Health Care has an FDA (Food and Drug Administration) department which takes care of standardization of Food and Drug coming to US market.&amp;nbsp;&lt;/li&gt;&lt;li&gt;In medical, every thing which touches body has also needs to be standardize by FDA's Office of Operations Center of Devices and Radiological Health (CDRH).&amp;nbsp;&lt;/li&gt;&lt;li&gt;FDA comes under Section 21 of Code of Federal Law(CFR).&amp;nbsp;&lt;/li&gt;&lt;li&gt;FDA is only applicable for US bound medical devices, there are other ISO standards(13845/14971) for global acceptance.&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Medical Device Segment:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Patient Monitoring and Diagnostic Devices - Cardiology &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Diagnostic Imaging - x-ray&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Therapy Devices - Pacemaker &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Invirto Diagnostic - Clinical Chemistry &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Network and Information System&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Risk Based Classification:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;From Risk viewpoint, there are two broad level categories:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A device which recieve signals - Lowest Risk &lt;br /&gt;&lt;/li&gt;&lt;li&gt;A device which insert signals - High Risk &lt;/li&gt;&lt;/ul&gt;But FDA classify them more granular way.&amp;nbsp; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Class I – Lowest Risk&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Subject to General Controls&lt;/li&gt;&lt;li&gt;Exempt from premarket notification unless “reserved”.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Class II&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Subject to General and Special Controls&lt;/li&gt;&lt;li&gt;Require &lt;b&gt;&lt;i&gt;510(k)&lt;/i&gt;&lt;/b&gt; premarket notification unless exempt.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Class III – Highest Risk&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Subject to General and Special controls&lt;/li&gt;&lt;li&gt;Require &lt;i&gt;&lt;b&gt;Premarket Approval Application (PMA) &lt;/b&gt;&lt;/i&gt;unless a preamendment device.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Lifespan of Medical Device:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Pre-Market Phase ( Manufacturer)&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Conception and Development&amp;nbsp;&lt;/li&gt;&lt;li&gt;Manufacturing &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Labeling and packing &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Placing on Market Phase (Vendor)&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Advertisement&amp;nbsp;&lt;/li&gt;&lt;li&gt;Sales&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Post Market Phase (User)&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Usage&amp;nbsp;&lt;/li&gt;&lt;li&gt;Disposal&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Types of Regulatory &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Quality System Regulation (QSR)&lt;/li&gt;&lt;li&gt;510(k) Clearance/Pre-Market Notification&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Must demonstrate that the device is “substantially equivalent” to a predicate device&lt;/li&gt;&lt;li&gt;90 day decision goal at FDA&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Premarket Approval (PMA)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Requires clinical data and/or scientific evidence supporting safety and efficacy claim&lt;/li&gt;&lt;li&gt;320 day decision goal at FDA&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Product Development Protocol (PDP)&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;FDA Approval Process:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Device Classification&amp;nbsp;&lt;/li&gt;&lt;li&gt;General Controls&amp;nbsp;&lt;/li&gt;&lt;li&gt;PMA/PMN/Clinical Trails&amp;nbsp;&lt;/li&gt;&lt;li&gt;Prepare DHF(Design History File), DMR (Device Master Record), DHR (Device History Record)&lt;/li&gt;&lt;li&gt;FDA Submission &lt;/li&gt;&lt;li&gt;Quality Audit Certification&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;510K/Pre-market Notification/PMN:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; A Marketing Clearance Application&lt;/li&gt;&lt;li&gt;designed to give manufacturers the opportunity to obtain rapid market approval for its safety and claimed effectiveness. &lt;/li&gt;&lt;li&gt;Substantial Equivalent is required if a new batch or incremental version of device is launched. It means that it is same in intended usage and technology.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Types of Device Submission&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Traditional - Any new device &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Special - A incremental device with same tech and usage. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Abbreviated - Device which has standard and developed procedure&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_oLQ2W8mBOMU/Sz9eKDu_QLI/AAAAAAAADso/liKUQ7lf7Fk/s1600-h/510kimageflow.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_oLQ2W8mBOMU/Sz9eKDu_QLI/AAAAAAAADso/liKUQ7lf7Fk/s320/510kimageflow.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Regulated Development Process: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Design Controls (ISO 13845)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Plan &amp;amp; document what you will do (good systems engineering), follow the plan, document the results of each &amp;amp; every step (including the design review itself)&lt;b&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Summary Technical Doc &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Technical Requirement doc&lt;/li&gt;&lt;li&gt;Device Description doc&lt;/li&gt;&lt;li&gt;Verification and validation doc &lt;/li&gt;&lt;li&gt;Production and process doc &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;li&gt;Risk Management (ISO 14971)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Plan how you will manage risk, identify &amp;amp; characterize risk, mitigate risk, assess residual risk, document &amp;amp; report risks&lt;/li&gt;&lt;li&gt;Risk Assessment - level of concern&amp;nbsp; &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Major – Death or Serious injury&lt;/li&gt;&lt;li&gt;Moderate – Non-serious injury&lt;/li&gt;&lt;li&gt;Minor – Not expected to lead to injury&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;Records Controls (21CFR 820.180-186)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Plan how you will manage records (documents, data, etc.), generate records, audit to ensure integrity (safety, security, etc.)&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Terms:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Preamendment Devices&lt;/i&gt;&lt;/b&gt; - Devices which were in market pre 1976 ear. Not required to be certified by FDA unless objected.&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Predicate device&lt;/i&gt;&lt;/b&gt; - A device which has past appearance in market from same vendor.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;HIPAA Compliance:&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;The Health Insurance Portability and Accountability Act (HIPAA) is a federal law designed to improve the efficiency and effectiveness of the health care system.Employees with access to patient data may use or disclose it only on a “need to know” basis: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;    Electronic Data Interchange (EDI) - electronic transfer of information among organizations &lt;/li&gt;&lt;li&gt;    Code Sets - uniform codes for illnesses and treatments &lt;/li&gt;&lt;li&gt;    Identifiers - standardized numbers identifying health providers, plans, and employers&lt;/li&gt;&lt;li&gt;    Security - standards for protecting confidentiality, integrity, and availability of data &lt;/li&gt;&lt;li&gt;    Privacy - standards defining appropriate and inappropriate disclosures of individually identifiable health information and how patient rights are to be protected &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-5953999919675635892?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/5953999919675635892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/01/medical-device-standardization.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/5953999919675635892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/5953999919675635892'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/01/medical-device-standardization.html' title='Medical Device Standardization'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_oLQ2W8mBOMU/Sz9eKDu_QLI/AAAAAAAADso/liKUQ7lf7Fk/s72-c/510kimageflow.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-1313540555303023029</id><published>2010-01-01T23:42:00.000-08:00</published><updated>2011-03-29T10:08:46.142-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java EE'/><title type='text'>JFreeChart</title><content type='html'>Graphs and Charts is the most efficient method for displaying information in a simple manner. Using this form of representation helps it's viewers to understand and interpret the information more easily and efficiently, which otherwise could be a very difficult and tedious process.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Charts: Drawn to show patterns between two variable data. &lt;/li&gt;&lt;li&gt;Graph - Drawn to show drived data on axises.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;There are two main thing in JfreeChar: Chart and its Data Set&amp;nbsp; &lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;JfreeChart Packages:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;package: org.jfree.chart&lt;/li&gt;&lt;li&gt;package: org.jfree.data &lt;/li&gt;&lt;/ul&gt;In JFreeChart project, you have to create a Dataset for creating a chart.  JFreeChart have many Dataset objects, that are used to create different types of charts. After creating the Dataset object actual chart can be created.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2 D Pie Chart: &lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;DefaultPieDataset pieDataset = new DefaultPieDataset();&lt;br /&gt;pieDataset.setValue("One", new Integer(10));&lt;br /&gt;JFreeChart chart = ChartFactory.createPieChart&lt;br /&gt;("Pie Chart", pieDataset, legendBool tooltipBool, urlBool);&lt;br /&gt;ChartFrame frame1=new ChartFrame("Pie Chart", chart); &lt;/blockquote&gt;&lt;b&gt;3 D Pie Chart:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;DefaultPieDataset pieDataset = new DefaultPieDataset();&lt;br /&gt;pieDataset.setValue("One", new Integer(10));&lt;br /&gt;JFreeChart chart = ChartFactory.createPieChart3D&lt;br /&gt;("Pie Chart", pieDataset, legendBool tooltipBool, urlBool);&lt;br /&gt;PiePlot3D p=(PiePlot3D)chart.getPlot();&lt;br /&gt;p.setForegroundAlpha(0.5f);&lt;br /&gt;ChartFrame frame1=new ChartFrame("Pie Chart", chart); &lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;Area Chart: &lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;DefaultCategoryDataset dataset = new DefaultCategoryDataset();&lt;br /&gt;dataset.addValue(4.0, "Science", "Rahul");&lt;b&gt; &lt;/b&gt;&lt;/blockquote&gt;&lt;blockquote&gt;Public static JFreeChart createAreaChart(java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls);&lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;XYArea Chart:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;XYSeries is used to plot a point on chart.&amp;nbsp; &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;XYSeries series = new XYSeries("Average Weight");&lt;br /&gt;series.add(20.0, 20.0);&lt;br /&gt;XYDataset xyDataset = new XYSeriesCollection(series);&lt;br /&gt;Public static JFreeChart createXYAreaChart(java.lang.String title, java.lang.String xAxisLabel, java.lang.String yAxisLabel, XYDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls)&lt;/blockquote&gt;&lt;b&gt; XYLine Chart: &lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;Public static JFreeChart createXYLineChart(java.lang.String title, java.lang.String xAxisLabel, java.lang.String yAxisLabel, XYDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls)&lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;Bar Chart: &lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;Public static JFreeChart createBarChart(java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls);&lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;3D Bar Chart:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;dataset.setValue(valueAxis, CategoryAxis, ); &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Public static JFreeChart createBarChart3D(java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls);&lt;/blockquote&gt;&lt;b&gt;Other Charts:&amp;nbsp;&lt;/b&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Waterfall Chart:&amp;nbsp;&lt;/li&gt;&lt;li&gt;Polor Chart: &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Facts: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;JFreeChart 1.0.12 (latest 1.0.13) &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.roseindia.net/chartgraphs/index.shtml"&gt;http://www.roseindia.net/chartgraphs/index.shtml&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-1313540555303023029?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/1313540555303023029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/01/jfreechart.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/1313540555303023029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/1313540555303023029'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/01/jfreechart.html' title='JFreeChart'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-735745516988610843</id><published>2010-01-01T21:20:00.000-08:00</published><updated>2011-03-29T10:08:55.887-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java EE'/><title type='text'>Jasper Reports</title><content type='html'>&lt;b&gt;Jasper Report Tech&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;JasperReports is an open-source Java class library designed to aid developers with the task of adding reporting capabilities to Java applications. &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It has flexible report layout.&lt;/li&gt;&lt;li&gt;It is capable of presenting data textually or graphically.&lt;/li&gt;&lt;li&gt;It allows developers to supply data in multiple ways.&lt;/li&gt;&lt;li&gt;It can accept data from multiple data sources.&lt;/li&gt;&lt;li&gt;It is capable of exporting reports to a variety of formats.&amp;nbsp;&lt;/li&gt;&lt;li&gt;package: &lt;i&gt;net.sf.jasperreports&lt;/i&gt; &lt;/li&gt;&lt;li&gt;iReport lets you design the report and associate entity fields with report fields.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/li&gt;&lt;li&gt;*.jasper file are a compiled version of the .jrxml template files.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_oLQ2W8mBOMU/Sz7djGypDjI/AAAAAAAADsY/CGfvlz8BNC0/s1600-h/jasper_reports_flow.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_oLQ2W8mBOMU/Sz7djGypDjI/AAAAAAAADsY/CGfvlz8BNC0/s320/jasper_reports_flow.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;Six sections of report: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;title - The report title, which will appear once at the top of the report.&lt;/li&gt;&lt;li&gt;pageHeader - A page header, which will appear at the top of every page.&lt;/li&gt;&lt;li&gt;columnHeader &lt;br /&gt;&lt;/li&gt;&lt;li&gt;detail&amp;nbsp; - A detail section, which typically contains the primary report data.&lt;/li&gt;&lt;li&gt;columnFooter &lt;br /&gt;&lt;/li&gt;&lt;li&gt;pageFooter - A page footer, which will appear at the bottom of every page.&lt;/li&gt;&lt;li&gt;summary - A summary section, which will appear at the end of the report. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;Details of sections:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Each report section, called a band, is given a height.&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Each band can include multiple staticText and textField elements, which are given a position, size, and value.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Report parameters, fields, and variables are referenced using P${name}, F${name}, and V${name}, respectively.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Page number's value is set to the variable PAGE_NUMBER, defined internally by JR for all reports. &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;&lt;b&gt;For each Text field:&amp;nbsp;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; TextField -&amp;gt; ReportElement -&amp;gt; TextElement -&amp;gt; textFieldExpression &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Report Generation Process: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;JasperDesign&lt;/b&gt;: Represents a report's definition. In most cases, you create a JasperDesign from an XML report template, though you can also create it programmatically. &lt;/li&gt;&lt;li&gt;&lt;b&gt;JasperReport&lt;/b&gt;: Represents a compiled JasperDesign. The compilation process verifies the report design and compiles the design into a JasperReport object. &lt;/li&gt;&lt;li&gt;&lt;b&gt;JasperPrint&lt;/b&gt;: Represents a generated report. You create a JasperPrint from a JasperReport through the fill process in which a report is populated with data from a data source.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Programming a Report process:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;JasperManager.loadXMLDesign();&lt;/li&gt;&lt;li&gt;JasperManager.compileReport();&amp;nbsp;&lt;/li&gt;&lt;li&gt;JasperManager.fillReport(report, dbConn, prop);&lt;/li&gt;&lt;li&gt;JasperManager.printReportToPdf();&lt;/li&gt;&lt;li&gt;JasperManager.viewReport();&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Best Practices:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Report design is largely static and worked through XML file JasperDesign&amp;nbsp;&lt;/li&gt;&lt;li&gt;JasperDesign are kept pre-compiled to faster access.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Fastest option is to keep JasperPrint objects ready&lt;/li&gt;&lt;li&gt;Be careful not to select properties that map to non-JDBC types. it will either throw exception or unpredictable error. &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Jasper Report with ORM Tech (Hibernate):&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Jasper return list is tidier than using java.util.Map objects, which is preferred approach. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;JRDataSource implementation that your application can use to fill a report template with data from an Hibernate return list.&lt;/li&gt;&lt;li&gt;JRBeanCollectionDataSource class is constructed from a collection of Java beans and knows how to loop through the collection and access the beans' properties.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Working with Beans Driven Report &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Add a helper method () in bean class.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;public static List createBeanCollection ()&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Put jar file containing bean in iReport lib and restart iReport.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Now by explore for new connection/dataSource for a new report/document and select "JavaBeans new DataSource".&amp;nbsp;&lt;/li&gt;&lt;li&gt;This will populate all the fields for bean which can be mapped into report.&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;It access bean properties just like JSTL tag. It convert these into names like relative to its class.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Working with List Collection Driven Report &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;For a Select * List Collection:&amp;nbsp; &lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Get the list from hibernate session &lt;/li&gt;&lt;ul&gt;&lt;li&gt;List cats = session.find("from eg.Cat");&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Ready and compile the jasperReport &lt;/li&gt;&lt;li&gt;Create the JRBeanCollectionDataSource using data list. &lt;/li&gt;&lt;ul&gt;&lt;li&gt;ds = new JRBeanCollectionDataSource(cats);&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Create print by filling the report.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;i&gt;For a Select columnName List collection: &lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Data returned by OR model is in list of maps, where map has one row of data mapped with column name to key. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Implement a custom JRDataSource interface to glue ORM and Jasper.&amp;nbsp; It consist of two abstract methods next() and getFieldValue():&lt;blockquote&gt;public class CustomJRDataSource implements JRDataSource { &lt;br /&gt;public Object getFieldValue(JRField jRField) throws JRException {} &lt;br /&gt;public boolean next() throws JRException { } } &lt;/blockquote&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Add a createDataSource() static method to get the instance it to use it.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;Facts: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Jasper Report 3.1. (latest is 3.6 in Aug 09)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-09-2002/jw-0920-opensourceprofile.html"&gt;Reports made easy with JasperReports &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-12-2007/jw-12-ibatisjasper.html"&gt;Flexible reporting with JasperReports and iBATIS&amp;nbsp;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jasperforge.org/"&gt;jasperforge&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://www.hibernate.org/79.html"&gt;https://www.hibernate.org/79.html&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Todo: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;JPS Tags&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Write a sample program to run on server&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.docstoc.com/docs/13332413/Jasper-Report-Tutorial"&gt;http://www.docstoc.com/docs/13332413/Jasper-Report-Tutorial&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://java.dzone.com/articles/java-reporting-jasperreports"&gt;http://java.dzone.com/articles/java-reporting-jasperreports&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://java.dzone.com/articles/java-reporting-part-2"&gt;http://java.dzone.com/articles/java-reporting-part-2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://java.dzone.com/articles/java-reporting-%E2%80%93-part-3"&gt;http://java.dzone.com/articles/java-reporting-%E2%80%93-part-3&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-735745516988610843?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/735745516988610843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/01/jasper-reports.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/735745516988610843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/735745516988610843'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/01/jasper-reports.html' title='Jasper Reports'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_oLQ2W8mBOMU/Sz7djGypDjI/AAAAAAAADsY/CGfvlz8BNC0/s72-c/jasper_reports_flow.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-486687621352606468</id><published>2009-12-25T23:54:00.000-08:00</published><updated>2009-12-25T23:54:25.897-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java SE'/><title type='text'>Java Object Lifecycle</title><content type='html'>&lt;b&gt;Lifecycle of Object: &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="Lifetime of Finalizable Object obj" height="333" src="http://java.sun.com/developer/technicalArticles/javase/finalization/images/figure1.gif" width="533" /&gt; &lt;br /&gt;&lt;b&gt;Process: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Finalizer object will hold the ref to all the object till the finalizer is called. &lt;/li&gt;&lt;li&gt;Final keyword is used to declare variable that it will have final ref. Ref can change its value. &lt;/li&gt;&lt;li&gt;The JVM does not guarantee the order in which it will call the finalizers of the objects in the finalization queue. &lt;/li&gt;&lt;li&gt;Finalization should be the last resort as it is unpredictable and non deterministic. Also, it is not performance friendly. &lt;/li&gt;&lt;li&gt;Instead use the weak references which is predictable way and do the postmartam cleanup in same way. &lt;/li&gt;&lt;li&gt;Use it to extends Parent class as Weak Reference. So that at GC, Parent is freed before child finalizer gets called. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;References: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://java.sun.com/developer/technicalArticles/javase/finalization/"&gt;How to Handle Java Finalization's Memory-Retention Issues&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-486687621352606468?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/486687621352606468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/java-object-lifecycle.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/486687621352606468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/486687621352606468'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/java-object-lifecycle.html' title='Java Object Lifecycle'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-3974096261526098704</id><published>2009-12-25T22:57:00.000-08:00</published><updated>2009-12-25T23:41:02.510-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Designer'/><title type='text'>OOPs Designing Principals</title><content type='html'>&lt;b&gt;Open/Closed Principal (OCP): &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open for extension but closed for modification.  In java, Abstract class are good example of it. &lt;/li&gt;&lt;li&gt;Strong Coupling - Modification in one, effects other class as well. &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Dependency Inversion Principle &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;High level modules should not depend upon low level modules. Both should depend upon abstractions&lt;/li&gt;&lt;li&gt;Abstractions should not depend upon details. Details should depend upon abstractions.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Substitution Principle&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; If a program module is using the reference of a Base class, then it should be able to replace the Base class with a Derived class without affecting the functioning of the program module. &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Design by Contract Principal: &lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A sub-type can only have weaker pre-conditions and stronger post-conditions than its base class.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Interface Segregation Principal:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp; Re-factoring Fat interface which is bloated and causing unnecessary burden of implementation on implementing classes.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Separation of Concerns (SoC):&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;No overlapping functionality or confusion while implementation.&amp;nbsp; &lt;/li&gt;&lt;li&gt;Progress towards SoC is traditionally achieved through modularity of programming and encapsulation (or "transparency" of operation), with the help of information hiding.&lt;/li&gt;&lt;li&gt;Layered designs in information systems are also often based on separation of concerns (e.g., presentation layer, business logic layer, data access layer, database layer). &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Dont Repeat Yourself (DRY)/&lt;/b&gt;&lt;b&gt;Duplication is Evil(DIE)&lt;/b&gt;&lt;b&gt;:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Every piece of knowledge must have a single, unambiguous, authoritative representation within a system&lt;/li&gt;&lt;li&gt;A modification of any single element of a system does not change other logically-unrelated elements.&lt;/li&gt;&lt;li&gt;Used more entity and data model designing&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://doodleproject.sourceforge.net/articles/2000/openClosedPrinciple.html"&gt;http://doodleproject.sourceforge.net/articles/2000/openClosedPrinciple.html&lt;i&gt;&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-3974096261526098704?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/3974096261526098704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/oops-designing-principals.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3974096261526098704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3974096261526098704'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/oops-designing-principals.html' title='OOPs Designing Principals'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-7930916305491392503</id><published>2009-12-25T19:26:00.000-08:00</published><updated>2010-01-05T00:44:43.143-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architect'/><title type='text'>Scalability</title><content type='html'>&lt;b&gt;Top Ten Scalability Killers: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Thinking Scalability Is Just About Technology &lt;br /&gt;&lt;/li&gt;&lt;li&gt; Overuse of Synchronous Calls&lt;/li&gt;&lt;li&gt; Failure to Weed or Seed Soon Enough&lt;/li&gt;&lt;li&gt; Inappropriate Use of Databases&lt;/li&gt;&lt;li&gt;Cesspools Instead of Swim Lanes&lt;/li&gt;&lt;li&gt; Reliance on Vertical Scale&lt;/li&gt;&lt;li&gt; Failure to Learn from History&lt;/li&gt;&lt;li&gt; Changing Development Methodologies to Fix Problems&lt;/li&gt;&lt;li&gt;Too Little Caching, Too Late&lt;/li&gt;&lt;li&gt; Overreliance on Third Parties to Scale&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://gigaom.com/2009/12/20/top-10-internet-startup-scalability-killers/"&gt;http://gigaom.com/2009/12/20/top-10-internet-startup-scalability-killers&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-7930916305491392503?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/7930916305491392503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/scalability.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/7930916305491392503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/7930916305491392503'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/scalability.html' title='Scalability'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-6750421351823324675</id><published>2009-12-22T06:08:00.000-08:00</published><updated>2010-01-08T01:19:46.824-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PM'/><title type='text'>Release Management</title><content type='html'>&lt;b&gt;Types of multiple parties Project management scenario: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Multi-vendors&lt;/li&gt;&lt;li&gt;Multi-locations &lt;/li&gt;&lt;li&gt;Multi-teams&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Benefits:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Release Management is proactive technical support focused on the planning and preparation of new services.&amp;nbsp; &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Gives the possibility to &lt;i&gt;&lt;b&gt;plan resource requirements&lt;/b&gt;&lt;/i&gt; in advance&lt;/li&gt;&lt;li&gt;Gives a &lt;b&gt;&lt;i&gt;structured approach&lt;/i&gt;&lt;/b&gt;, leading to an efficient and effective process&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Changes are bundled &lt;/i&gt;&lt;/b&gt;together in a release, minimizing the impact on the user&lt;/li&gt;&lt;li&gt;Helps to &lt;b&gt;&lt;i&gt;verify correct usability&lt;/i&gt;&lt;/b&gt; and functionality before release by testing&lt;/li&gt;&lt;li&gt;Provides &lt;b&gt;&lt;i&gt;version control and central storage&lt;/i&gt;&lt;/b&gt;, which ensures correct version use.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Release Management Process:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Gathering and description&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Requirements gathering &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Analyzing and documentation of inter-dependencies with other/existing systems. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Planning&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Meta modeling technique &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Release Building&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Development, unit testing and building&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Acceptance Test&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Verified with exacted outputs &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Report generation for knowledge base&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Release Preparation&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Packaging in deplorable artifacts&amp;nbsp;&lt;/li&gt;&lt;li&gt;Last audit to verify against requirement check list &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Release Deployment&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Pushing to production or giving out to customer&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Releasing a new Version - Process:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;RM responsibility is to protect live/production environment and control the the release of new configurations items into it.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;i&gt;&lt;b&gt;Gathering the requirements and gathering the dependencies &lt;/b&gt;&lt;/i&gt;with the existing components must be checked out in advance.&amp;nbsp;&lt;/li&gt;&lt;li&gt;After that a new version can be &lt;i&gt;&lt;b&gt;built, tested and the release &lt;/b&gt;&lt;/i&gt;can be prepared.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Release &lt;i&gt;&lt;b&gt;consists of a software file &lt;/b&gt;&lt;/i&gt;ready to be installed, complete with manuals with updated design and testing documents.&amp;nbsp;&lt;/li&gt;&lt;li&gt;A release &lt;b&gt;&lt;i&gt;rollback plan&lt;/i&gt;&lt;/b&gt; is also available on standby to safeguard against surprises during the release, or non-acceptance by the end users.&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Roles:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Facilitator &lt;/i&gt;&lt;/b&gt;– Serves as a liaison between varying business units to guarantee smooth and timely delivery of software products or updates.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Gatekeeper &lt;/i&gt;&lt;/b&gt;– “Holds the keys” to production systems/applications and takes responsibility for their implementations.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Support Engineer&lt;/i&gt;&lt;/b&gt; – Help troubleshoot problems with an application (although not typically at a code level).&lt;/li&gt;&lt;li&gt;&lt;i&gt;&lt;b&gt;Coordinator&lt;/b&gt;&lt;/i&gt; – Utilized to coordinate disparate source trees, projects, teams and components.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Challenges:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Software Defects&lt;/li&gt;&lt;li&gt;Issues&lt;/li&gt;&lt;li&gt;Risks&lt;/li&gt;&lt;li&gt;Software Change Requests&lt;/li&gt;&lt;li&gt;New Development Requests (additional features and functions)&lt;/li&gt;&lt;li&gt;Deployment and Packaging&lt;/li&gt;&lt;li&gt;New Development Tasks&lt;/li&gt;&lt;li&gt;Organizational Politics&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Release_management"&gt;http://en.wikipedia.org/wiki/Release_management&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-6750421351823324675?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/6750421351823324675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/release-management.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/6750421351823324675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/6750421351823324675'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/release-management.html' title='Release Management'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-5572475785583436334</id><published>2009-12-22T00:43:00.000-08:00</published><updated>2010-01-08T01:21:05.666-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PM'/><title type='text'>Multi-vendor Management:</title><content type='html'>&lt;b&gt;Key Criteria:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A good relationship with the project drivers and share common goals to make both the client and project succeed.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Three Major Aspects:&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Communication&lt;/li&gt;&lt;li&gt;Collaboration&lt;/li&gt;&lt;li&gt;Shared goal&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Challenges: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Customer Confusion &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Inconsistent Quality &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lack of business intelligence&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Risks:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul type="disc"&gt;&lt;li class="MsoNormal"&gt;Collaboration &lt;/li&gt;&lt;ul type="circle"&gt;&lt;li class="MsoNormal"&gt;Integration Management       &lt;/li&gt;&lt;li class="MsoNormal"&gt;Dependency Management &lt;/li&gt;&lt;/ul&gt;&lt;li class="MsoNormal"&gt;Communication &lt;/li&gt;&lt;ul type="circle"&gt;&lt;li class="MsoNormal"&gt;Inter-team communication       management &lt;/li&gt;&lt;li class="MsoNormal"&gt;Constant Common Goal Enforcement       &lt;/li&gt;&lt;/ul&gt;&lt;li class="MsoNormal"&gt;Common Goal &lt;/li&gt;&lt;ul type="circle"&gt;&lt;li class="MsoNormal"&gt;Setting up Expectation, critical and penalty&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Responsibilities: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Define clearly each vendor's roles, responsibilities and deadlines &lt;/li&gt;&lt;li&gt;Manage expectations among the different teams &lt;/li&gt;&lt;li&gt;Conduct regular meetings   &lt;/li&gt;&lt;li&gt;Provide communication strings &lt;/li&gt;&lt;li&gt;Build a positive working relationship&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;System to Establish: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Big Picture View of all operations &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Intercommunication and quick issue resolution &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Improving Service Quality &lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Target recurring problem and improve operation efficiency &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ensures vendors meet their service and warranty obligation &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Identify poor performance and present it to higher manager for decisions &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Improving IT procedures &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;Single Point Of Contact (SPOC)&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Key to manage multi-vendor is a SPOC who responsible for all technology support (issues and escalations), including those from internal and external service providers. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Quality management. &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Monitor and manage performance and service of all vendors proactively, ensuring quality management. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;This also ensures that issues don't fall through the cracks. &lt;/li&gt;&lt;/ul&gt;&lt;li&gt; Centralized decision making  &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Data collection and analysis for all service delivery activities from vendors &lt;br /&gt;&lt;/li&gt;&lt;li&gt;For decision-making, strategic analysis, and assessing vendors performance and service. &lt;/li&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-5572475785583436334?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/5572475785583436334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/01/multi-vendor-management.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/5572475785583436334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/5572475785583436334'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2010/01/multi-vendor-management.html' title='Multi-vendor Management:'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-4203215190234720802</id><published>2009-12-20T05:10:00.001-08:00</published><updated>2011-11-22T19:27:23.090-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java SE'/><title type='text'>Java Peformance Programming</title><content type='html'>&lt;b&gt;References: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-11-1999/jw-11-performance.html"&gt;http://www.javaworld.com/javaworld/jw-11-1999/jw-11-performance.html &lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-02-2000/jw-02-performance.html"&gt;http://www.javaworld.com/javaworld/jw-02-2000/jw-02-performance.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-12-1999/jw-12-performance.html"&gt;http://www.javaworld.com/javaworld/jw-12-1999/jw-12-performance.html &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-4203215190234720802?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/4203215190234720802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/java-peformance-programming.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4203215190234720802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4203215190234720802'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/java-peformance-programming.html' title='Java Peformance Programming'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-2975552989367643916</id><published>2009-12-19T20:54:00.001-08:00</published><updated>2011-11-22T19:27:10.168-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mobile'/><title type='text'>Android - Concept</title><content type='html'>Google has been very impressive and they impressed me again. Here is my first hand review of development plateform called Android.&lt;br /&gt;Great documentation, very comprehensive tool.&lt;br /&gt;What a strategy? They have targeted today open source lovers.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Techonogy stack Linux, Eclipse, Java, SQLlite&lt;/li&gt;&lt;li&gt;Backed by open handset alliance&lt;/li&gt;&lt;li&gt;All carriers, Semiconductor and handset manufacturer on board.&lt;/li&gt;&lt;/ul&gt;They have many major programming model.&lt;br /&gt;First Android introduced four pillor of any app development&lt;br /&gt;Activity, Service, Content Provider and Broadcast Recivers&lt;br /&gt;Brief about all.&lt;br /&gt;Activity is ...................&lt;br /&gt;Then they have magical Manifest.XML file which heart of the system, whatever you define here, only that can be understood by system.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-2975552989367643916?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/2975552989367643916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/android-concept.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/2975552989367643916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/2975552989367643916'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/android-concept.html' title='Android - Concept'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-388639686876455440</id><published>2009-12-19T20:50:00.001-08:00</published><updated>2011-11-22T19:26:56.151-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java SE'/><title type='text'>Java Performance Tuning - Training</title><content type='html'>&lt;b&gt;&lt;span style="font-size: large;"&gt;Day 1:&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Java Class loader is written in C. It is the only component on C.&lt;br /&gt;URL CL, WAR CL.&lt;br /&gt;Program Area:&lt;br /&gt;Method area:Permannet space -&amp;gt; heap.&lt;br /&gt;Bottolneck&lt;br /&gt;CPM&lt;br /&gt;Memory&lt;br /&gt;I/O&lt;br /&gt;Performance is precvieved. It achive it you should concentrate on bottleneck. Bottelneck should be looked at end.&lt;br /&gt;Profiling:&lt;br /&gt;JVM PDI:&lt;br /&gt;Run test on foreground&lt;br /&gt;Absolute and relative time&lt;br /&gt;Garbage Collector.&lt;br /&gt;- Verbose option&lt;br /&gt;java -verbosegc PrefTest &amp;gt; gc&lt;br /&gt;GC Viewer&lt;br /&gt;D:\EclipseEsy\workspace\PrefTest2&amp;gt;java -cp . -verbosegc -Xms4m -Xmx4m PrefTest2 &amp;gt; gg44&lt;br /&gt;D:\EclipseEsy\workspace\PrefTest2&amp;gt;java -cp . -XX:+PrintGCDetails -XX:+PrintGCTimeStamps  PrefTest2&lt;br /&gt;Command line:&lt;br /&gt;===========&lt;br /&gt;-XX:+PrintDetails&lt;br /&gt;-XX:+NewRatio&lt;br /&gt;-XX:+MaxNewRatio&lt;br /&gt;-XX:+NewRatio&lt;br /&gt;-XX:NewSize&lt;br /&gt;Type of GC algorithams:&lt;br /&gt;===================&lt;br /&gt;Copy Collecor: Simple&lt;br /&gt;Mark and sweep: Sophosticated&lt;br /&gt;Increamental GC (train):&lt;br /&gt;Switch the Algorithams:&lt;br /&gt;-XX:+ParallelGC -XX:ParallelGCThreads&lt;br /&gt;-XX:+ConMarkSweepGC of -Xincgc&lt;br /&gt;-XX:+UseSerialGC&lt;br /&gt;-XX:+UseTrainGC&lt;br /&gt;-XX:MaxGCPauseMillis&lt;br /&gt;-XX:GCTimeRatio&lt;br /&gt;Heap Profiler:&lt;br /&gt;-Xrunhprod&lt;br /&gt;Allocation Profile:&lt;br /&gt;-Xaprof&lt;br /&gt;java -cp . -Xaprof PrefTest2&lt;br /&gt;-Xrunhprof:format=b and HAT&lt;br /&gt;System.gc() - Confirmed run of Full GC&lt;br /&gt;Stack overflow due to recursive calls.&lt;br /&gt;Use&lt;br /&gt;GC&lt;br /&gt;VM and GC size&lt;br /&gt;Larger heap&lt;br /&gt;Inc GC&lt;br /&gt;Con GC&lt;br /&gt;JDK Improvment&lt;br /&gt;JIT compiler&lt;br /&gt;Adoptive -hotspot&lt;br /&gt;Better Optimizing Compiler&lt;br /&gt;NIO Research Project:&lt;br /&gt;Opimizing Compilers:&lt;br /&gt;================&lt;br /&gt;Cant write efficient code&lt;br /&gt;Remove unused blocks&lt;br /&gt;Increase statically bound calls&lt;br /&gt;Interface and abstract - Dynamically binding&lt;br /&gt;Dead code&lt;br /&gt;Check for null.&lt;br /&gt;Comupationnly cheaper aternatives&lt;br /&gt;Public method are faster than provate and protected.&lt;br /&gt;Sun Compiler:&lt;br /&gt;Litrals Constant: int f = 9*8&lt;br /&gt;string Concatination&lt;br /&gt;Constant are inlined.&lt;br /&gt;Javac Option -O Option&lt;br /&gt;Weak Ref - Simple GC&lt;br /&gt;Soft Ref - Full GC&lt;br /&gt;D:\EclipseEsy\workspace\PrefTest2&amp;gt;java -cp . -verbosegc -XX:NewSize=2m -Xms4m -Xmx64m RefTest 12000&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Day 2 Notes:&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;String Method&lt;br /&gt;String package private Constructor&lt;br /&gt;String.intern();&lt;br /&gt;String.trim(); - efficient..&lt;br /&gt;String.toUpperCase();&lt;br /&gt;String.substring()&lt;br /&gt;String.toCharArray();&lt;br /&gt;subString machanisum.  ???&lt;br /&gt;Articles: getter and setter are evils.&lt;br /&gt;StringBuffer:&lt;br /&gt;Good when underline array changes frequently.&lt;br /&gt;Bynamically growing&lt;br /&gt;Understand who it works.&lt;br /&gt;Delete, deleteChatAt,&lt;br /&gt;Replace method, Inserert method.&lt;br /&gt;Sub?String,toString()&lt;br /&gt;Exception:&lt;br /&gt;Try and catch block cost.&lt;br /&gt;throw is expensive. It works down the stack to locate try catch.&lt;br /&gt;fillInStackTrack(); Native&lt;br /&gt;Spring:&lt;br /&gt;Used for only IOC...&lt;br /&gt;Spring web and MVC&lt;br /&gt;Exception DataAccesException - Runtime Exception.&lt;br /&gt;ExceptionHandler.&lt;br /&gt;Throwing Pre Created exception&lt;br /&gt;Assertion:???&lt;br /&gt;Cast:&lt;br /&gt;Generic ??&lt;br /&gt;Enum?&lt;br /&gt;Primitive are stored on Stack.&lt;br /&gt;Object are stored on heap.&lt;br /&gt;Instance abs static sites on heap and are expensive for access.&lt;br /&gt;Long:&lt;br /&gt;Not thread safe&lt;br /&gt;CPU take two instruction fir execute it.&lt;br /&gt;Long and doulele can be currupted. Logically???&lt;br /&gt;Primitives Integre, long and doule are also immutable.&lt;br /&gt;Loops:&lt;br /&gt;Short, bool and long all stored as integer.&lt;br /&gt;Dont use method for conditional stmt.&lt;br /&gt;Dont copy array in loop. System.arraycopy.&lt;br /&gt;Index has to be int.&lt;br /&gt;Solaris: ++ is slower than --.&lt;br /&gt;Use short Circuit operator. || &amp;amp;&amp;amp; .. Simplest to be on left side.&lt;br /&gt;Avoid reflections.&lt;br /&gt;Switch:&lt;br /&gt;Ordering is important.&lt;br /&gt;Recursion:&lt;br /&gt;Use Tail recursion&lt;br /&gt;Stack overflow.&lt;br /&gt;Factorial - long can hold only upto 20!. Only Big, BigDecimal are object.&lt;br /&gt;Use Stack to achieve recursion.&lt;br /&gt;Write a program: Factorial based on stack.&lt;br /&gt;Thread Stack and heap..... ??&lt;br /&gt;I/O&lt;br /&gt;IO to memory is fastest.&lt;br /&gt;IO to file is slower.&lt;br /&gt;IO to network is slowest.&lt;br /&gt;Buffer -&amp;gt; Collecting data based of threshold size. Storing forward. We dont commit. Trasfering large data.&lt;br /&gt;Cached -&amp;gt; Collecting data based on usage frequency. Stoing data in memory.&lt;br /&gt;8192 buffer size. File and JSP.&lt;br /&gt;IO: log&lt;br /&gt;System.out and System.err are expensive due to HW interaction.User file for err and out.&lt;br /&gt;User logging FW.&lt;br /&gt;Buffered IO:&lt;br /&gt;3 read method&lt;br /&gt;Use Buffered Stream over Raw Streams.&lt;br /&gt;Put is into File.&lt;br /&gt;ThreadGroup Study:&lt;br /&gt;Serialization:&lt;br /&gt;Coverts obj to bytes.&lt;br /&gt;All the member and parents should serialization.&lt;br /&gt;Cost of serialization:&lt;br /&gt;Concderting and sending&lt;br /&gt;Solution:&lt;br /&gt;Compression&lt;br /&gt;Externalization interface and readEetnalization.&lt;br /&gt;Compression:&lt;br /&gt;Issue with Externalization&lt;br /&gt;3 check for it.&lt;br /&gt;Deep Copy with serialization and shallow copy with cloning.&lt;br /&gt;Sorting:&lt;br /&gt;Comparables and Comparator interfaces&lt;br /&gt;Collection Framework.&lt;br /&gt;Comparator.compare() expansive&lt;br /&gt;Arrays.sort() with comparator. Perforamce. Bad.&lt;br /&gt;It looks Comparator-&amp;gt; Comparable.. and go for compare method, if not, than it goes till primitive level.&lt;br /&gt;LGPL - license. prolocy.&lt;br /&gt;Thread&lt;br /&gt;Independent paths of execution.&lt;br /&gt;1.0    Green Thread - Simulated and managed by VM.&lt;br /&gt;1.1    Native Thread - Created by VM on OS and managed by OS.&lt;br /&gt;The paint cyclce in window.&lt;br /&gt;Race Condition - Mutiple threads conquertly work and curpt the obj with concurrecy control or Sync.&lt;br /&gt;1.5 Concurrency API ???/&lt;br /&gt;RRRC - Read Write&lt;br /&gt;RL : Shared&lt;br /&gt;WL: Exclusive&lt;br /&gt;Deadlock: Notify lock.&lt;br /&gt;Thread.destroy() : depricated in 1.5.&lt;br /&gt;User Thread.start() instead of run().&lt;br /&gt;sleep: hold the lock and sleep&lt;br /&gt;wait: relieve the lock and wait.&lt;br /&gt;Dead lock and Race condition&lt;br /&gt;Collections:&lt;br /&gt;Default Size: 16&lt;br /&gt;Increse Factor: .75&lt;br /&gt;Decrese factor: .50&lt;br /&gt;Casts overheard&lt;br /&gt;Generic&lt;br /&gt;HashSet is fasted. Cache it.&lt;br /&gt;TreeSet provides Itrator in Order&lt;br /&gt;Hashmap is fastest in maps. Not sysn.&lt;br /&gt;Hashcode equal&lt;br /&gt;IdentifyHashMap is fastes in jdk1.4.&lt;br /&gt;Array: idex is int, map is string.&lt;br /&gt;HashTable is sync,&lt;br /&gt;TreeMap is slow. Comapre to method.&lt;br /&gt;ArrayList is fastsed list.&lt;br /&gt;Stack = Vector... FILO&lt;br /&gt;Que = Vector.. FIFO Because dele element starte and end.&lt;br /&gt;LinkedList speed depends on random del and add.&lt;br /&gt;Vectore s slower but thred safe. Sync&lt;br /&gt;Enum - is thread safe&lt;br /&gt;Itrator - is not thread safe.&lt;br /&gt;Distributed Computing:&lt;br /&gt;Compression&lt;br /&gt;App Partitioning&lt;br /&gt;Reducing Message&lt;br /&gt;Reducing Calls. (Course Graning -&amp;gt; as small as possible ops)&lt;br /&gt;Technilogy:&lt;br /&gt;RMI: Lagecy tech. Remote Obj can not process concurrently.&lt;br /&gt;Corba: Vendor specific impl is  boottlneck,.&lt;br /&gt;HTTP and Applet:&lt;br /&gt;Web Serverice: Bad perforamce.&lt;br /&gt;RPC&lt;br /&gt;Encoded&lt;br /&gt;Literals&lt;br /&gt;Document:&lt;br /&gt;Warpped: Fastest&lt;br /&gt;Size of objects are loo large.&lt;br /&gt;XML - DOM process are bad due to the large obj managers.&lt;br /&gt;SAX are read only.&lt;br /&gt;STAX are new pull based , RW.&lt;br /&gt;Load Balancing Algorithms:&lt;br /&gt;Random&lt;br /&gt;Minimum Load&lt;br /&gt;Round Robin&lt;br /&gt;Weighted Roaund Robin.&lt;br /&gt;Performace based.&lt;br /&gt;Load based.&lt;br /&gt;Dynamic&lt;br /&gt;Neared IP address&lt;br /&gt;Port number&lt;br /&gt;HTTP header&lt;br /&gt;JDBC:&lt;br /&gt;JProbe tool.&lt;br /&gt;Bridge (JDBC-ODBC), Native, Thin (type 4) Pure Java.&lt;br /&gt;Pure Java Type are best. Conversion&lt;br /&gt;Oracle offers for all types of drivers.&lt;br /&gt;Caching&lt;br /&gt;PreparedStatement and it pools.&lt;br /&gt;Batching with setFetchSize,&lt;br /&gt;JoinDepth -&amp;gt; Dependecy load depeding on level specified.&lt;br /&gt;Minimize data conversion overhead.&lt;br /&gt;Matadata - Expensive to retrieve. Cache it.&lt;br /&gt;ResultSet and DB&lt;br /&gt;Transcation:&lt;br /&gt;A set of task get executed as one.&lt;br /&gt;(ACID) = Atomicity, Consistency,  Isolation, Durability&lt;br /&gt;setAutoCommit() on connection. Is fine. But not on datasouce.&lt;br /&gt;setIsolationLevel:&lt;br /&gt;Dirty Read - Uncommited data read and roll back&lt;br /&gt;Reapeated Read - Commited data read, no lock.&lt;br /&gt;Phentom Read - Manfunctioning of data.&lt;br /&gt;Hibernate: Versioning on Data&lt;br /&gt;Optimiestic Locking is great in all cases.&lt;br /&gt;Servlets:&lt;br /&gt;SingleThreadModel - Depricated because of session are not synch.&lt;br /&gt;Minimize outpuut.&lt;br /&gt;Use String efficiatly.&lt;br /&gt;Use byptes ratther than chars.&lt;br /&gt;Chach the tags.&lt;br /&gt;use static include  than&lt;br /&gt;Redirect - &amp;gt; ??&lt;br /&gt;Forward -&amp;gt; Same req obj&lt;br /&gt;HTTPSession:&lt;br /&gt;HTTPSession is pref on cookies.&lt;br /&gt;HttpSeesion: Use serializatbale.&lt;br /&gt;Timeout session - Correct&lt;br /&gt;HttpSession is ligh weight than Statte Session Beans.&lt;br /&gt;Distributed Session use Sticky sessions. Use same box for all req processing in load balancng.&lt;br /&gt;Kill the sessioon&lt;br /&gt;EJB:&lt;br /&gt;Corrse Grain EJB&lt;br /&gt;Stateless Session beans&lt;br /&gt;Cache JNDI lookup.&lt;br /&gt;Local VS Remote:&lt;br /&gt;sk@javainxs.com&lt;br /&gt;98450-01158&lt;br /&gt;JSF framwork: RR&lt;br /&gt;.. what is this??&lt;br /&gt;Left to right execution. So || &amp;amp;&amp;amp; should have easy execution on left side.&lt;br /&gt;Hibernate: 2-&amp;gt;3:Checked Exception to Runtime exception. ??&lt;br /&gt;What is factor and size growth in Hashmap and arraylist?&lt;br /&gt;Differnece between String and StringBuffer?&lt;br /&gt;Agile: Test first before impl.&lt;br /&gt;Google:Java Performance Tuning&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-388639686876455440?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/388639686876455440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/java-performance-tuning-training.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/388639686876455440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/388639686876455440'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/java-performance-tuning-training.html' title='Java Performance Tuning - Training'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-5908882840606551643</id><published>2009-12-19T20:45:00.001-08:00</published><updated>2011-11-22T19:27:29.353-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Web'/><title type='text'>JSP and Servlet - Concept</title><content type='html'>&lt;b&gt;Servlets: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Servlets are singleton in one Servlet container.&lt;/li&gt;&lt;li&gt;&lt;span mce_style="font-weight: bold;" style="font-weight: bold;"&gt;SingleThreadServlet&lt;/span&gt;: &lt;ul&gt;&lt;li&gt;Allow Servlet container to create multiple instances of servlets.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Servlet Life-cycle: &lt;ul&gt;&lt;li&gt;Init -&amp;gt; Service() -&amp;gt; destroy()&lt;/li&gt;&lt;li&gt;HttpServlets: init(), doPost(), doGet();&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span mce_style="font-weight: bold;" style="font-weight: bold;"&gt;Forward and redirect: &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Forward: JSP/Servlet container call next page internally to server and continue the request processing on new page. Browser does not know about this.&lt;/li&gt;&lt;li&gt;Redirect: JSP ask browser to change the URL resulting a new request generation.&lt;/li&gt;&lt;li&gt;Forward is faster but could be dangerous if someone refreshes this page.&lt;/li&gt;&lt;/ul&gt;&lt;span mce_style="font-weight: bold;" style="font-weight: bold;"&gt;Implicit Objects: &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Session, request, response, page, pageContext, application, config.&lt;/li&gt;&lt;li&gt;JSP life-cycle:&lt;/li&gt;&lt;li&gt;Translated  -&amp;gt; Compile - &amp;gt; Instantiated/loaded -&amp;gt;&lt;br /&gt;jspInit -&amp;gt;  jspService -&amp;gt; jspDestory  &lt;/li&gt;&lt;/ul&gt;&lt;span mce_style="font-weight: bold;" style="font-weight: bold;"&gt;Diff between include &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;include directive, : Inline Code&lt;/li&gt;&lt;li&gt;include action,  - Normal JSP call.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-5908882840606551643?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/5908882840606551643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/jsp-and-servlet-concept.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/5908882840606551643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/5908882840606551643'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/jsp-and-servlet-concept.html' title='JSP and Servlet - Concept'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-3908173928453895271</id><published>2009-12-18T01:30:00.001-08:00</published><updated>2011-11-22T19:20:47.939-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><title type='text'>Java for REST</title><content type='html'>REST allow CRUD operations on a entity which can be represented by URL.&lt;br /&gt;Goal of building                         networked software systems exhibiting the properties of:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Performance &lt;/i&gt;&lt;/b&gt;- Performance, as a property, is a quality of responsiveness. Given the networked nature of these software systems, we always                         want to avoid paying a &lt;a href="http://poena:9992/Rhythmyx/psx_ceArticle/Article.html?sys_revision=11&amp;amp;refreshHint=Selected&amp;amp;sys_pageid=0&amp;amp;sys_contentid=151778&amp;amp;target=_blank&amp;amp;sys_view=sys_All&amp;amp;sys_command=edit#resources"&gt;latency penalty&lt;/a&gt;. &lt;/li&gt;&lt;li&gt;&lt;i&gt;&lt;b&gt;Scalability &lt;/b&gt;&lt;/i&gt;-  Scalability is a property that indicates how many users can simultaneously access a service&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Generality &lt;/i&gt;&lt;/b&gt;- allows these systems                         to solve a wide variety of problems. &lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Simplicity &lt;/i&gt;&lt;/b&gt;- The more moving parts a software system has and the more complex its interactions, the                         harder it is to prove that it does what it is supposed to do.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Modifiability &lt;/i&gt;&lt;/b&gt;- systems to be as simple as possible and extensible                         in the face of new requirements, new technologies, and new use cases.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-10-2008/jw-10-rest-series-1.html"&gt;http://www.javaworld.com/javaworld/jw-10-2008/jw-10-rest-series-1.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-12-2008/jw-12-rest-series-2.html"&gt;http://www.javaworld.com/javaworld/jw-12-2008/jw-12-rest-series-2.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-02-2009/jw-02-rest-series-3.html"&gt;http://www.javaworld.com/javaworld/jw-02-2009/jw-02-rest-series-3.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/%20http://www.javaworld.com/javaworld/jw-04-2009/jw-04-rest-series-4.html"&gt;http://www.javaworld.com/javaworld/jw-04-2009/jw-04-rest-series-4.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-3908173928453895271?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/3908173928453895271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/java-for-rest.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3908173928453895271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3908173928453895271'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/java-for-rest.html' title='Java for REST'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-8940183375561045044</id><published>2009-12-16T01:58:00.000-08:00</published><updated>2009-12-16T01:58:49.277-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>SOAP over ESB</title><content type='html'>&lt;b&gt;Business Logic &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="ESB architecture" height="358" src="http://www.ibm.com/developerworks/web/library/wa-soaesb/esb-soa2.gif" width="450" /&gt; &lt;br /&gt;&lt;ol&gt;&lt;li&gt;Use JBoss AS to build the Web-based application with various presentation rules. &lt;/li&gt;&lt;li&gt;The portal submits Web service requests containing business information to the Enterprise Services Bus layer. &lt;/li&gt;&lt;li&gt;Configure appropriate rules and formatter extensions with JBoss ESB to route soap requests to appropriate its Queues. With rules, application can extract information from the headers and routed appropriately. &lt;/li&gt;&lt;li&gt;Model business processes with UI PageFlow and then expose them as Web services. Set up the users required for human intervention in LDAP or any user directory. In this scenario, the arrival of a message (based on appropriate queues using JMS protocol) triggers the appropriate business workflow. &lt;/li&gt;&lt;li&gt;The backend actors interacts with various service providers to complete business process. To implement this, route SOAP requests to multiple service providers using ESB. Then consolidate multiple SOAP responses and provide the results backend actors. &lt;/li&gt;&lt;li&gt;Once backend action process completes, route the information to the appropriate queue. The app Adapter listening on the queues picks up the message from the queue, maps a message to the business object, which in turn is used to create final response. &lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Control Flow of SOAP over ESB: &lt;/b&gt;&lt;br /&gt;&lt;img alt="jboss esb" height="462" src="http://www.mastertheboss.com/images/stories/esb/esbschema.jpg" width="334" /&gt;&lt;b&gt; &lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Application Flow: JBoss ESB Setup &lt;/b&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt; Define Service in jboss-esb.xml&amp;nbsp;&lt;/li&gt;&lt;li&gt;Associate actions for service&amp;nbsp;&lt;/li&gt;&lt;li&gt;Associate listeners to channels&lt;/li&gt;&lt;li&gt;Define Channels on bus in jboss-esb.xml&amp;nbsp;&lt;/li&gt;&lt;li&gt;Define the JMS Queue in jbm-queue-service.xml&amp;nbsp;&lt;/li&gt;&lt;li&gt;Deployment descriptor deployment.xml&amp;nbsp;&lt;/li&gt;&lt;li&gt;Develop a Action class with action method&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Client Flow: JMS Implementation &lt;/b&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt; Establish context with JNDI provider over JNP (Java Naming Provider) to JBoss 1099 port (RMI port).&amp;nbsp;&lt;/li&gt;&lt;li&gt;Get ref for Queue Connection Factory from context&amp;nbsp;&lt;/li&gt;&lt;li&gt;Get ref for Queue to Gateway channel &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Create connection to Queue&amp;nbsp;&lt;/li&gt;&lt;li&gt;Create session for connection to queue&amp;nbsp;&lt;/li&gt;&lt;li&gt;Start the connection &lt;/li&gt;&lt;li&gt;Create Sender  from session &lt;/li&gt;&lt;li&gt;Create Message from session&lt;/li&gt;&lt;li&gt;Send message through sender &lt;/li&gt;&lt;/ol&gt;&lt;b&gt;References&lt;/b&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.mastertheboss.com/en/soa-a-esb/78-jboss-esb.html"&gt;JBoss ESB with JBoss Tools plugin&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/web/library/wa-soaesb/"&gt;Model and build ESB SOA frameworks&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-8940183375561045044?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/8940183375561045044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/soap-over-esb.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8940183375561045044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8940183375561045044'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/soap-over-esb.html' title='SOAP over ESB'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-8518930685731723161</id><published>2009-12-16T01:19:00.000-08:00</published><updated>2009-12-16T16:11:58.974-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Service'/><title type='text'>Web Service with JAX-WS</title><content type='html'>JAX-RPC has been promoted to being a JAX-WS 2.0 in Java SE 6.0. What it has done that it has made Web service writing a piece of cake. &lt;br /&gt;Major new additions are  Web Services Metadata specifications uses annotations (also called metadata).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Rule for Class &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It must be public&lt;/li&gt;&lt;li&gt;It must not be final or abstract&lt;/li&gt;&lt;li&gt;It must have a default public constructor&lt;/li&gt;&lt;li&gt;It must not have a &lt;code&gt;finalize()&lt;/code&gt; method&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Rules for Method&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It must be public.&lt;/li&gt;&lt;li&gt;Its parameters, return values, and exceptions can be XML-enabled as per JAX RPC 1.1's Java to XML/WSDL mapping rules—e.g.,                                  parameters and return values are primitives, arrays, and so on; exception extends &lt;code&gt;Exception&lt;/code&gt;; etc.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Handlers: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Java SE 6 provides interceptors handlers in the &lt;code&gt;javax.xml.ws.handler&lt;/code&gt; package that can be plugged into this processing pipeline to perform custom, application-specific processing of inbound and outbound messages.&lt;/li&gt;&lt;li&gt;Two types of handlers are available&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;SOAP handlers&lt;/i&gt;&lt;/b&gt; can operate on an entire SOAP message, including the SOAP header and body,&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Logical handlers&lt;/i&gt;&lt;/b&gt; operate on just the payload contained in the SOAP body. &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;code&gt;public class TraceHandler implements SOAPHandler&lt;soapmessagecontext&gt; {&amp;nbsp;&lt;/soapmessagecontext&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;       handleMessage()&lt;/code&gt; {} &lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;      handleFault()&lt;/code&gt;&lt;code&gt; {}&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;JAX-WS Annotations: &lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;@&lt;i&gt;&lt;b&gt;WebService &lt;/b&gt;&lt;/i&gt;annotation's name, serviceName, and targetNamespace members specify wsdl:portType, wsdl:service, and targetNameSpace for the Web service's generated WSDL .&lt;/li&gt;&lt;li&gt;@&lt;b&gt;&lt;i&gt;SOAPBinding &lt;/i&gt;&lt;/b&gt;is a binding annotation that specifies the protocol as RPC and format as SOAP. &lt;/li&gt;&lt;li&gt;@&lt;b&gt;&lt;i&gt;WebMethod &lt;/i&gt;&lt;/b&gt;annotation's operationName member specifies wsdl:operation, and its action specifies the SOAPAction header in WSDL. This is the value clients must put in SOAPHeader, a caveat of SOAP 1.1 &lt;/li&gt;&lt;li&gt;@&lt;i&gt;&lt;b&gt;WebParam &lt;/b&gt;&lt;/i&gt;annotation's partName member specifies wsdl:part in the WSDL. &lt;/li&gt;&lt;li&gt;@&lt;b&gt;&lt;i&gt;WebResult &lt;/i&gt;&lt;/b&gt;annotation's partName member specifies wsdl:part for the return value in the WSDL.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Web Service's Server &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;In Java SE 6, you'll find a &lt;code&gt;javax.xml.ws&lt;/code&gt; package that includes an &lt;code&gt;Endpoint&lt;/code&gt; class, which can be used for hosting Web services within the JVM.&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;code&gt;HelloServer server = new HelloServer();&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;Endpoint endpoint = Endpoint.publish("http://localhost:9090/HelloServer", server);&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;Binding binding = endpoint.getBinding();  &lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;wsgen is a tool to create all the supporting class file for a given service as well as WSDL file from web service&amp;nbsp; class file. &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Web Service's Client:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;wsimport auto-generation:&amp;nbsp; &lt;/i&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;wsimport can inspect a WSDL file available at a specific URL to generate all classes that make client code clean and easier to understand. It generates JAX-WS portable artifacts, which means classes work across specification-compliant application servers and JVMs. It generates stub file under "jax" folder.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;HelloServer&lt;/code&gt; is the service endpoint interface (SEI)                               &lt;/li&gt;&lt;li&gt;&lt;code&gt;HelloService&lt;/code&gt; is the service                               &lt;/li&gt;&lt;li&gt;&lt;code&gt;HelloException&lt;/code&gt; is the exception class mapped from &lt;code&gt;wsdl:fault&lt;/code&gt; found in the WSDL                               &lt;/li&gt;&lt;li&gt;&lt;code&gt;Person&lt;/code&gt; is the JAXB mapping of Java classes from the &lt;code&gt;Person&lt;/code&gt; schema found in the WSDL                               &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;HelloService class Web Service Client code: &lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;@WebServiceClient(name = "HelloService", targetNamespace = "http://hellows.cccccc.com/", wsdlLocation = "http://localhost:9090/HelloServer?WSDL")&lt;br /&gt;public class HelloService extends Service {&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; @WebEndpoint(name = "HelloServerPort")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public HelloServer getHelloServerPort() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (HelloServer)super.getPort(new QName("http://hellows.techyatra.com/", "HelloServerPort"), HelloServer.class);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }}&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;i&gt;&lt;b&gt;Application Code: &lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;code&gt;HelloService service = new HelloService();&lt;br /&gt;HelloServer server = (HelloServer) service.getHelloServerPort();&lt;br /&gt;String ret = server.hello(person);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;b&gt;Approach to Write Web Service Based Application&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Code First &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Annotate Your Code&lt;/li&gt;&lt;li&gt;Deploy it in a container that supports JAX-WS, JAX-RS&lt;/li&gt;&lt;li&gt;The JAX-WS runtime will:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Generate WSDL.&lt;/li&gt;&lt;li&gt;Translate SOAP request to a Java technology-based method invocation &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;Translate method return into a SOAP response.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;li&gt;Contract First &lt;/li&gt;&lt;ul&gt;&lt;li&gt;“Compile” the WSDL for the service that you would like to deploy.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;wsimport reads the WSDL and generates and interface for each portType&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Create a class that implements each interface. The business logic of these classes implements your Web services.&lt;/li&gt;&lt;li&gt;Deploy these Service Endpoint Implementation classes to a JAX-WS container.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;li&gt;Meet in the Middle &lt;/li&gt;&lt;ul&gt;&lt;li&gt;WSDL defined &lt;/li&gt;&lt;li&gt;Code First also done &lt;/li&gt;&lt;li&gt;Mapping done in adopter &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-07-2006/jw-0703-mustang.html"&gt;Mustang: The fast track to Web services&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-6157&amp;amp;yr=2008&amp;amp;track=soa"&gt;JavaOne Technical Sessions - Building SOA Applications with JAX-WS, JAX-RS, JAXB, and Ajax - 2008 &lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Todo:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Run and modify Mustang&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mastertheboss.com/en/web-interfaces/172-exposing-ejb-3-as-web-service-on-jboss-5.html%20"&gt;Expose EJB 3 as Web Services&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href="http://www.mastertheboss.com/en/web-interfaces/179-web-services-performance-tuning.html"&gt;Web services performance tuning&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-02-2007/jw-02-handler.html"&gt;Get a handle on the JAX-WS API's handler framework&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-8518930685731723161?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/8518930685731723161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/web-service-with-jax-ws.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8518930685731723161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8518930685731723161'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/web-service-with-jax-ws.html' title='Web Service with JAX-WS'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-8827431907719138189</id><published>2009-12-15T23:06:00.000-08:00</published><updated>2009-12-16T01:20:32.350-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Service'/><title type='text'>Async Web Services</title><content type='html'>&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Challenges: &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Defining a correlation and a      mechanism for its exchange.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Defining a &lt;i&gt;reply-to      address&lt;/i&gt; specifying where the response should be sent, and ensuring      that the service provider is informed of this destination.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;The generation of a response      by a service provider as a transaction separate from the request.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;The receipt of an      asynchronous response by the client.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;The correlation of response      with request by both the client and service provider.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Asynchronous transports&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;HTTPR&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;JMS&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;IBM MQSeries Messaging&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;MS Messaging&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Synchronous transports&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;HTTP&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;HTTPS&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;RMI/IIOP&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;SMTP&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Transmission primitives that an endpoint can support:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;One-way:&lt;/b&gt; The endpoint      receives a message.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Request/response:&lt;/b&gt; The      endpoint receives a message, and sends a correlated message.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Solicit/response:&lt;/b&gt; The      endpoint sends a message, and receives a correlated message.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Notification:&lt;/b&gt; The      endpoint sends a message.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;table border="1" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;   &lt;td style="padding: 0.75pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Asynchronous Pattern&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td style="padding: 0.75pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Applicable Transports&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td style="padding: 0.75pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Usage Examples&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td style="padding: 0.75pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Comments and Considerations&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td style="padding: 0.75pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;1. One-way and notification operations&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td style="padding: 0.75pt;"&gt;&lt;span style="font-size: small;"&gt;HTTPR, JMS, MQSeries Messaging, HTTP, HTTPS, RMI/IIOP,   SMTP&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td style="padding: 0.75pt;"&gt;&lt;span style="font-size: small;"&gt;Pub/sub; event notification&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td style="padding: 0.75pt;"&gt;&lt;span style="font-size: small;"&gt;Inherently supported by asynchronous transports. When   delivery of a request or response does not need to be guaranteed, synchronous   transports can be used.&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td style="padding: 0.75pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;2. Request/reply operations&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td style="padding: 0.75pt;"&gt;&lt;span style="font-size: small;"&gt;HTTPR, JMS, MQSeries Messaging, HTTP, HTTPS, RMI/IIOP,   SMTP&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td style="padding: 0.75pt;"&gt;&lt;span style="font-size: small;"&gt;General service with a single response; transactional   services&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td style="padding: 0.75pt;"&gt;&lt;span style="font-size: small;"&gt;Inherently supported by asynchronous transports. When   delivery of a request or response does not need to be guaranteed, synchronous   transports can be used.&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td style="padding: 0.75pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;3. Request/reply operations with polling&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td style="padding: 0.75pt;"&gt;&lt;span style="font-size: small;"&gt;HTTP, HTTPS, RMI/IIOP&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td style="padding: 0.75pt;"&gt;&lt;span style="font-size: small;"&gt;Self-service&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td style="padding: 0.75pt;"&gt;&lt;span style="font-size: small;"&gt;The simplest client-side implementations.   Application-level acknowledgements easily supported with synchronous   transports (for example, by HTTP response).&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td style="padding: 0.75pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;4. Request/reply operations with posting&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td style="padding: 0.75pt;"&gt;&lt;span style="font-size: small;"&gt;HTTP, HTTPS, RMI/IIOP&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td style="padding: 0.75pt;"&gt;&lt;span style="font-size: small;"&gt;Pub/sub; event notification&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td style="padding: 0.75pt;"&gt;&lt;span style="font-size: small;"&gt;Simpler client-side implementations. Similar to Pattern 1,   but with explicit application-level acknowledgements for use with synchronous   transports.&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2&gt;&lt;span style="font-size: small;"&gt;Implementation: &lt;/span&gt;&lt;/h2&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;public Response&lt;string&gt; echoAsync(@WebParam(name = "String_1") String string1);&lt;/string&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-size: small;"&gt;This will use a pollig or "pull strategy" : once the initial request is made the client is free to pursue other work until the request completes. This enables the client to execute other tasks that don't depend on the outcome of the request. Once the request completes, the response is made available to the client.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;On the other hand, using this method:&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;public Future echoAsync(@WebParam(name = "String_1") String string1, @WebParam(name = "asyncHandler") AsyncHandler&lt;string&gt; asyncHandler);&lt;/string&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-size: small;"&gt;the actual response is processed by the specified AsyncHandler implementation. Once the response is made available to the callback handler, the code flow is much the same as with polling client.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Asynchronous polling clients      are especially useful for implementing Web services based work flows while      Asynchronous callback clients are helpful when implementing batch      processing and notification consumer applications&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Callback calls process the      response &lt;i&gt;on a different thread&lt;/i&gt; from the one the client is running      on. This allows the client to gain some control over performance if there      are many concurrent asynchronous requests.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;References: &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul style="margin-top: 0in;"&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.ibm.com/developerworks/library/ws-asynch2/index.html"&gt;http://www.ibm.com/developerworks/library/ws-asynch2/index.html&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.computerworld.com/s/article/79698/Really_Simple_Asynchronous_Web_Services"&gt;http://www.computerworld.com/s/article/79698/Really_Simple_Asynchronous_Web_Services&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Todo:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.mastertheboss.com/en/web-interfaces/111-asynchronous-web-services-with-jboss-ws.html"&gt;Asynchronous web services&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-8827431907719138189?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/8827431907719138189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/async-web-services.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8827431907719138189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8827431907719138189'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/async-web-services.html' title='Async Web Services'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-4756377545646310698</id><published>2009-12-15T19:59:00.001-08:00</published><updated>2011-11-22T19:21:05.060-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java SE'/><title type='text'>RMI - Concept</title><content type='html'>&lt;span mce_style="font-weight: bold;" style="font-weight: bold;"&gt;Highlights: &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Server registers the stub to Registry by Naming.rebind method call. &lt;ol&gt;&lt;li&gt;Creates the instance of Remote Object&lt;/li&gt;&lt;li&gt;Gets the Remote Ref, which contains the info of hostname and port.&lt;/li&gt;&lt;li&gt;Creates stub with this Remote Ref.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span mce_style="font-family: Verdana,Arial,Helvetica;" style="font-family: Verdana,Arial,Helvetica;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;CalcImpl ci= new CalcImpl();    RemoteRef ref = ci.getRef();    CalcClient cc = new CalcClient(ref);&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Server Remote object export itself to run on specific port (decided dynamically).&lt;/li&gt;&lt;li&gt;Registry maintains a hashmap of public name and stub object.&lt;/li&gt;&lt;li&gt;RMIRegistory is also an Remote Object which exports itself to 1099 port to runs. Just like a server accepting RMI request.&lt;/li&gt;&lt;li&gt;Client connects listening port of server remote object stub. This port is just to initiate the connection.&lt;/li&gt;&lt;li&gt;Server accepts connection and parameter and delegates RMI request handling to another socket.&lt;/li&gt;&lt;li&gt;Client / Server communication happens on newly allocated sockets now.&lt;/li&gt;&lt;li&gt;Bootstrapping in RMI term is the process of bind and lookup.&lt;/li&gt;&lt;li&gt;JDK 1.2 onward, skeleton is merged into server code.&lt;/li&gt;&lt;/ul&gt;&lt;span mce_style="font-weight: bold;" style="font-weight: bold;"&gt;Usage of RMI:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It is used where there is need of application to application communication in different JVMs.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-4756377545646310698?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/4756377545646310698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/rmi-concept.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4756377545646310698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4756377545646310698'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/rmi-concept.html' title='RMI - Concept'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-755923317393287175</id><published>2009-12-15T18:48:00.001-08:00</published><updated>2011-11-22T19:21:11.584-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java SE'/><title type='text'>What is new Java SE 6.0?</title><content type='html'>Java SE 6 has improvements across the board. To name few; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Opening programmatic access to the Java compiler&lt;/li&gt;&lt;li&gt; System-tray and splash-screen components&lt;/li&gt;&lt;li&gt; Mixing scripting languages with your Java source code (with JavaScript supported out-of-box)&lt;/li&gt;&lt;li&gt; Adapper look and feel in Swing, to XML digital signatures&lt;/li&gt;&lt;li&gt; The Smart Card I/O API&lt;/li&gt;&lt;li&gt;JMX monitor threading improvements&lt;/li&gt;&lt;li&gt; Web services annotations for service providers and simplified client access&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-755923317393287175?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/755923317393287175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/what-is-new-java-se-60.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/755923317393287175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/755923317393287175'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/what-is-new-java-se-60.html' title='What is new Java SE 6.0?'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-2664709744749249412</id><published>2009-12-15T03:08:00.000-08:00</published><updated>2011-04-11T21:47:48.089-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><title type='text'>Google App Engine - Concept</title><content type='html'>Google App Engine is a Cloud Computing SDK, API and Platform that makes Google’s publically recognized scalable infrastructure available to any size development shop.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Java Support &lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Java 5/Java 6 Web App&lt;/li&gt;&lt;li&gt;Java Servlet API 2.4&amp;nbsp; &lt;b&gt; - Limited &lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Blacklisted few API to maintain scalability of GAE platform. &lt;/li&gt;&lt;li&gt;Thread, FileWritter, JNI&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Java Data Objects (JDO)&lt;b&gt; - Limited &lt;/b&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Java Persistence API (JPA)&amp;nbsp;&lt;b&gt; - Limited &lt;/b&gt;&lt;/li&gt;&lt;li&gt;Java Server Faces (JSF) 1.1 - 2.0&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Java Server Pages (JSP) + JSTL&amp;nbsp;&lt;/li&gt;&lt;li&gt;JavaBeans™ Activation Framework (JAF)&lt;/li&gt;&lt;li&gt;Java Architecture for XML Binding (JAXB)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;JavaMail&amp;nbsp;&lt;b&gt; - Limited &lt;/b&gt;&lt;/li&gt;&lt;li&gt;XML processing APIs including DOM, SAX, and XSLT&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Scalability&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;GAE is very contained for application development but provide fantastic scalability and infrastructure,.&amp;nbsp;&lt;/li&gt;&lt;li&gt;GAE has superb horizontal scalability.&lt;/li&gt;&lt;li&gt;Quata based:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Requests&lt;/li&gt;&lt;li&gt;CPU Time&lt;/li&gt;&lt;li&gt;Bandwidth, incoming and outgoing&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Others Facts: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Installation Setting &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Path APPENGINE_HOME&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;OSGi Model&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Multiple version of SDK can be maintained &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Emulator does not enforce request timeouts and class whitelists. &lt;/li&gt;&lt;li&gt;Building using Ant and Maven&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Data Storage&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Database - BigTable - A non-relational DB&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellpadding="0" cellspacing="0" height="138" style="border-collapse: collapse; width: 298px;" x:str=""&gt;&lt;colgroup&gt;&lt;col style="width: 48pt;" width="64"&gt;&lt;/col&gt;  &lt;col style="width: 79pt;" width="105"&gt;&lt;/col&gt;  &lt;/colgroup&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;b&gt;RDBMS&lt;/b&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;b&gt;GDS&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr height="17" style="height: 12.75pt;"&gt;   &lt;td height="17" style="height: 12.75pt; width: 48pt;" width="64" x:str="DataStore - "&gt;DataStore &lt;/td&gt;   &lt;td style="width: 79pt;" width="105"&gt;Object Database&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="17" style="height: 12.75pt;"&gt;   &lt;td height="17" style="height: 12.75pt;" x:str="Kind "&gt;Kind&lt;/td&gt;   &lt;td&gt;Table&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="17" style="height: 12.75pt;"&gt;   &lt;td height="17" style="height: 12.75pt;" x:str="Row "&gt;Row&lt;/td&gt;   &lt;td&gt;Entity&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="17" style="height: 12.75pt;"&gt;   &lt;td height="17" style="height: 12.75pt;" x:str="Row ID "&gt;Row ID&lt;/td&gt;   &lt;td&gt;Key&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="17" style="height: 12.75pt;"&gt;   &lt;td height="17" style="height: 12.75pt;"&gt;Column&lt;/td&gt;   &lt;td&gt;Property&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;b&gt;Java Datastore API &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Support - JPA and JDO &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Keeps migaration easy &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Google Query Language (GQL)&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Provides a limited set of SQL&lt;/li&gt;&lt;li&gt;SELECT, WHERE, AND, FROM, IN, ORDER BY, LIMIT, DATE, OFFSET&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Indexes:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Indexes are build to fasten "&lt;i&gt;WHERE/ORDERED BY&lt;/i&gt;" queries&amp;nbsp; &lt;/li&gt;&lt;li&gt;Build two index for every entity's property&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Asending&amp;nbsp;&lt;/li&gt;&lt;li&gt;Descending &lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Composite Queries and Custom Index: &lt;/b&gt;Allows to create indexes on custom SELECT querie which application may use more. &lt;/li&gt;&lt;li&gt;&lt;b&gt;Index Work Queue:&lt;/b&gt; Index creation is done by Global Work Queue just after application is deployed.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Specialized Capability:&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Supporting Infrastructure &amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Caching - jCaching API (JSR-107 complaint) &lt;/li&gt;&lt;li&gt;Mail Serer - Java Mail API thought Gmail accounts&lt;/li&gt;&lt;li&gt;Image Manipulation - Google Image Service API&amp;nbsp;&lt;/li&gt;&lt;li&gt;Autherization - Google's ID authentication API&amp;nbsp;&lt;/li&gt;&lt;li&gt;Task Queue - JMS (limited feature)&amp;nbsp;&lt;/li&gt;&lt;li&gt;Instant Messaging XMPP - Google XMPP API&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Constraints&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;HTTP request size - 10MB&lt;/li&gt;&lt;li&gt;HTTP response Size - 10MB&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Error - HTTP response was too large” &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Request or task duration - 30 seconds&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Error - com.google.apphosting.DeadlineExceededException &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Maximum files in app - 3000&lt;/li&gt;&lt;li&gt;Maximum size of all app files - 150MB&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Supporting Framework:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Grails&amp;nbsp;&lt;/li&gt;&lt;li&gt;Gaelyk &lt;/li&gt;&lt;li&gt;JRuby&amp;nbsp;&lt;/li&gt;&lt;li&gt;Struts 2.0&amp;nbsp;&lt;/li&gt;&lt;li&gt;Wicket &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Supporting IDE &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Eclipse 3.5 &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Netbeans &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://sites.google.com/site/superskstorage/blogger/google-app-engine-2.pdf"&gt;http://sites.google.com/site/superskstorage/blogger/google-app-engine-2.pdf&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Todo:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DB access - Modeling and writing queries&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-2664709744749249412?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/2664709744749249412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/google-app-engine-concept.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/2664709744749249412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/2664709744749249412'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/google-app-engine-concept.html' title='Google App Engine - Concept'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-6887465396959249674</id><published>2009-12-15T01:38:00.001-08:00</published><updated>2011-11-22T19:25:37.630-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java EE'/><title type='text'>Data Caching On Server - jCache</title><content type='html'>&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-6175&amp;amp;yr=2007&amp;amp;track=8"&gt;http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-6175&amp;amp;yr=2007&amp;amp;track=8&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-6887465396959249674?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/6887465396959249674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/data-caching-on-server-jcache.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/6887465396959249674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/6887465396959249674'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/data-caching-on-server-jcache.html' title='Data Caching On Server - jCache'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-3931302053722139441</id><published>2009-12-15T01:11:00.001-08:00</published><updated>2011-11-22T19:26:09.669-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech'/><title type='text'>Distributed Transaction</title><content type='html'>Spring&lt;br /&gt;&lt;br /&gt;Java EE&lt;br /&gt;&lt;br /&gt;JPA&lt;br /&gt;&lt;br /&gt;Hibernate &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-01-2009/jw-01-spring-transactions.html"&gt;http://www.javaworld.com/javaworld/jw-01-2009/jw-01-spring-transactions.html&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-3931302053722139441?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/3931302053722139441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/distributed-transaction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3931302053722139441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3931302053722139441'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/distributed-transaction.html' title='Distributed Transaction'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-6628626216267123379</id><published>2009-12-15T00:57:00.000-08:00</published><updated>2009-12-15T01:03:50.468-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PM'/><title type='text'>Scrum - Concept</title><content type='html'>Scrum is a simple management framework for incremental product development using one or more cross-functional, self-organizing teams of about seven people each. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Team Size - 7 &lt;/li&gt;&lt;li&gt;Spring - 2-4 weeks &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Disruptive framework to transform organization &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Expose dysfunction at the individual, team, and organizational level.&lt;/li&gt;&lt;li&gt;Scrum provides a simple structure of roles, meetings, rules, and artifacts.&lt;/li&gt;&lt;li&gt;Similar to XP but not at engineering practices level. &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Roles: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Product Owner &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Responsible for ROI &lt;/li&gt;&lt;li&gt;Final arbiter of prioritization and requirements and its completion &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Scrum Development Team &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Size of 7, a cross functional team, co-located in a room &lt;/li&gt;&lt;li&gt;Freedom of choice between sprint planning to sprint review meet. &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Scrum Master &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Resolves impediment, shield from interference and advocates improved engineering practices. &lt;/li&gt;&lt;li&gt;But does not take any business or technical decision&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Meetings&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_oLQ2W8mBOMU/SydQpdTKFiI/AAAAAAAADp8/2ZAQoPWL2Z4/s1600-h/scrummeet.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_oLQ2W8mBOMU/SydQpdTKFiI/AAAAAAAADp8/2ZAQoPWL2Z4/s320/scrummeet.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Spring Planning Meet&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Product owner defines Spring from Product Backlog without technical discussions. &lt;/li&gt;&lt;li&gt;Team decomposed Sprint to make final commitment. &lt;/li&gt;&lt;li&gt;Duration - 8 hrs per sprint &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Daily Scrum&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Team examines Spring task list, Spring Burndown chart and impediments. &lt;/li&gt;&lt;li&gt;PO does not need to attend this for a self organizing team. &lt;/li&gt;&lt;li&gt;Stand-up meet are meant to show urgency and to report team instead of boss. &lt;/li&gt;&lt;li&gt;Additional discussion are considered as sidebars. &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Spring Review Meet&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Product owners will inspect, adapt and review developed Product to plan next course of product backlogs.&amp;nbsp; &lt;/li&gt;&lt;li&gt;Duration - 15 mins &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Spring Retrospective: &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Team meet to inspect and adapt on its own performance. &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/li&gt;&lt;li&gt;Tool - Silent writing, Satisfaction Histogram and Timeliness&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Questions - What went well/improvement area/learnins/open issue./Action items&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Backlog Refinement Meet&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Effort estimation of product backlog done to help proitization.&amp;nbsp;&lt;/li&gt;&lt;li&gt;A parallel meeting&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Artifacts &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Product Backlog&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Granular and prioritized functionality listing &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Product Backlog Items(PBI)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Talks about "What" but not how of a feature in PB. &lt;/li&gt;&lt;li&gt;User story with acceptance criterion &lt;/li&gt;&lt;li&gt;Efforts are estimated by Team&lt;/li&gt;&lt;li&gt;Business value is estimated by Product Owner. &lt;/li&gt;&lt;li&gt;Each PBI is a customer centric feature, requires to be broken down into multiple tasks. &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Spring Backlog&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Committed PBI to be ref by team &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Spring Task&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Talk about "How" part for each PBI &lt;/li&gt;&lt;li&gt;Each task should either one day or less.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Charts &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Information Radiator: &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Committed Task | Task not started | Task in Progress | Tasks Completed &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Spring Burndown Chart &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Shows remaining team task in hrs for a sprint &lt;/li&gt;&lt;li&gt;Daily estimation to showcase progress within a selforganizing team &lt;/li&gt;&lt;li&gt;X axis - Timeline and Y axis - Time in hrs &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Product/Release Burndown Chart &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Tacks product backlog effort from one spring to another &lt;/li&gt;&lt;li&gt;X axis - Timeline and Y axis - Story points&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Team Scaling &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Prefer to have cross functional team who can work on all layers. &lt;/li&gt;&lt;li&gt;For large team management, scrum or scrum can be designed &lt;/li&gt;&lt;li&gt;Continuous integration become more important in cross functional/large team to avoid them to step on each other.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Team Grouping Formula: &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Forming, Storming, Norming, Performing &lt;/li&gt;&lt;li&gt;Heterogeneous team outperform homogeneous team.s &lt;/li&gt;&lt;li&gt;Depends conflict resolution capability of team &lt;/li&gt;&lt;li&gt;Bad Apple theory need to be managed. &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Conclusion:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Scrum focuses on incrementally improving the definitional of DONE.&amp;nbsp;&lt;/li&gt;&lt;li&gt;XP practices like - Continuous Integration/Testing, TDD, Constant Re-factoring,&amp;nbsp; pair programming, statical tool analysis&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Good for unpredictable requirement and technology high risk projects. &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://sites.google.com/site/superskstorage/blogger/rc050-010d-scrum_2.pdf"&gt;http://sites.google.com/site/superskstorage/blogger/rc050-010d-scrum_2.pdf&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Todo: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mike Cohn Release Burndown chart &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-6628626216267123379?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/6628626216267123379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/scrum-concept.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/6628626216267123379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/6628626216267123379'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/scrum-concept.html' title='Scrum - Concept'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_oLQ2W8mBOMU/SydQpdTKFiI/AAAAAAAADp8/2ZAQoPWL2Z4/s72-c/scrummeet.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-2585086603855882341</id><published>2009-12-13T04:30:00.000-08:00</published><updated>2009-12-13T04:30:09.298-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Designer'/><title type='text'>Art of designing API</title><content type='html'>&lt;b&gt;Guideline's Importance: &lt;/b&gt;&lt;ul&gt;&lt;li&gt;APIs can be among a company's greatest assets&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Customers invest heavily: buying, writing, learning&lt;/li&gt;&lt;li&gt;Cost to stop using an API can be prohibitive&lt;/li&gt;&lt;li&gt;Successful public APIs capture customers&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Can also be among company's greatest liabilities&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Bad APIs result in unending stream of support calls&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Public APIs are forever - one chance to get it right&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Characteristic of Good API &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Easy to learn&lt;/li&gt;&lt;li&gt;Easy to use, even without documentation&lt;/li&gt;&lt;li&gt;Hard to misuse&lt;/li&gt;&lt;li&gt;Easy to read and maintain code that uses it&lt;/li&gt;&lt;li&gt;Sufficiently powerful to satisfy requirements&lt;/li&gt;&lt;li&gt;Easy to extend&lt;/li&gt;&lt;li&gt;Appropriate to audience &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Process of API Design&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Gather Requirements–with a Healthy Degree of Skepticism&lt;/li&gt;&lt;li&gt;Start with Short Spec–1 Page is Ideal&lt;/li&gt;&lt;li&gt;Write to Your API Early and Often&lt;/li&gt;&lt;li&gt;Writing to SPI is Even More Important&lt;/li&gt;&lt;li&gt;Maintain Realistic Expectations&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;General Principles&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; API Should Do One Thing and Do it Well&lt;/li&gt;&lt;li&gt;API Should Be As Small As Possible But No Smaller&lt;/li&gt;&lt;li&gt;Implementation Should Not Impact API&lt;/li&gt;&lt;li&gt;Minimize Accessibility of Everything&lt;/li&gt;&lt;li&gt;Names Matter–API is a Little Language&lt;/li&gt;&lt;li&gt;Documentation Matters&lt;/li&gt;&lt;li&gt;Document Religiously&lt;/li&gt;&lt;li&gt;Consider Performance Consequences of API Design Decisions&lt;/li&gt;&lt;li&gt;API Must Coexist Peacefully with Platform&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Class Design&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Minimize Mutability&lt;/li&gt;&lt;li&gt;Subclass Only Where It Makes Sense&lt;/li&gt;&lt;li&gt;Design and Document for Inheritance or Else Prohibit it&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Method Design&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Don't Make the Client Do Anything the Module Could Do&lt;/li&gt;&lt;li&gt;Don't Violate the Principle of Least Astonishment&lt;/li&gt;&lt;li&gt;Fail Fast–Report Errors as Soon as Possible After They Occur&lt;/li&gt;&lt;li&gt;Provide Programmatic Access to All Data Available in String Form&lt;/li&gt;&lt;li&gt;Overload With Care&amp;nbsp;&lt;/li&gt;&lt;li&gt;Use Appropriate Parameter and Return Types&lt;/li&gt;&lt;li&gt;Use Consistent Parameter Ordering Across Methods&lt;/li&gt;&lt;li&gt;Avoid Long Parameter Lists&lt;/li&gt;&lt;li&gt;Avoid Return Values that Demand Exceptional Processing&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Exception Design&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Throw Exceptions to Indicate Exceptional Conditions&lt;/li&gt;&lt;li&gt;Favor Unchecked Exceptions&lt;/li&gt;&lt;li&gt;Include Failure-Capture Information in Exceptions&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;"API design is a noble and rewarding craft&lt;/i&gt;"&lt;br /&gt;&lt;i&gt;"Perfection is unachievable, but try anyway&lt;/i&gt;"&lt;br /&gt;&lt;b&gt;References:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://sites.google.com/site/superskstorage/blogger/JavaAPIDesign.pdf%20%20"&gt;http://sites.google.com/site/superskstorage/blogger/JavaAPIDesign.pdf &lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/presentations/effective-api-design"&gt;http://www.infoq.com/presentations/effective-api-design&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Todo:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.artima.com/weblogs/viewpost.jsp?thread=142428%20"&gt;http://www.artima.com/weblogs/viewpost.jsp?thread=142428&amp;nbsp; &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.isnotworking.com/2007/05/api-design-guidelines.html"&gt;http://blog.isnotworking.com/2007/05/api-design-guidelines.html&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-2585086603855882341?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/2585086603855882341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/art-of-designing-api.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/2585086603855882341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/2585086603855882341'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/art-of-designing-api.html' title='Art of designing API'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-4970243113613020660</id><published>2009-12-09T03:01:00.001-08:00</published><updated>2011-11-22T19:21:33.891-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><title type='text'>Spring - Concept</title><content type='html'>&lt;b&gt;Inversion Of Control (IOC):&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Injection Types &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Interface&lt;/li&gt;&lt;li&gt;Setter&lt;/li&gt;&lt;li&gt;Constructor&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Look-up Method Injection: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Allows a singleton class to      have prototype object creation.&lt;/li&gt;&lt;li&gt;Method get defined in      singleton class but maintained as abstract.&lt;/li&gt;&lt;li&gt;Spring overrides it at      runtime if developer does not implement it.&lt;/li&gt;&lt;/ul&gt;Notes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;For late binding, use idref      which validates ref at deployment time.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Scope type&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Singleton&lt;/li&gt;&lt;li&gt;Prototype&lt;/li&gt;&lt;li&gt;Request - web aware&lt;/li&gt;&lt;li&gt;Session - web aware&lt;/li&gt;&lt;li&gt;global-session: application      level and web aware&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Inner Class: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Accessible to only outer      class&lt;/li&gt;&lt;li&gt;Can be used in constructor&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Auto-wiring: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Binds beans property to instance      by autowire type (Name, Type, Constructor, Autodetect)&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Collection Support:&lt;/b&gt; List, map, prop and set.&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;Resource Interface:&lt;/b&gt; Uniform interface to deal with all resources like Classpath, file, URL, Servlet etc.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Application Context: &lt;/b&gt;&lt;br /&gt;Bean Factory is good for small application, but full power of framework lies in Application Context level.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Allow you to publish even to      all listeners&lt;/li&gt;&lt;li&gt;Resolve text messages from      properties files&lt;/li&gt;&lt;/ul&gt;Depending on source of loading, it has multiple types:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ClasspathXMLApplicationContext&lt;/li&gt;&lt;li&gt;FileSystemApplicationContext&lt;/li&gt;&lt;li&gt;XmlWebApplicationContext&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Life Cycle&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;Bean Factory Container:&lt;/b&gt;&lt;br /&gt;Creation&lt;br /&gt;&lt;ol&gt;&lt;li&gt;instantiate&lt;/li&gt;&lt;li&gt;Polulate properties&lt;/li&gt;&lt;li&gt;BeanNameAware.setBeanName&lt;/li&gt;&lt;li&gt;BeanFactoryAware.setFactoryName&lt;/li&gt;&lt;li&gt;Preinitialization&lt;/li&gt;&lt;li&gt;&lt;b&gt;InitializationBean AfterProperty Set &lt;/b&gt;&lt;/li&gt;&lt;li&gt;Call Custom Init Method&lt;/li&gt;&lt;li&gt;Post Initialization&lt;/li&gt;&lt;/ol&gt;Destroy:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;DisposableBean Destroy &lt;/b&gt;&lt;/li&gt;&lt;li&gt;Call Custom Destroy Method&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Application Context: &lt;/b&gt;&lt;br /&gt;Creation&lt;br /&gt;&lt;ol&gt;&lt;li&gt;instantiate&lt;/li&gt;&lt;li&gt;Populate properties&lt;/li&gt;&lt;li&gt;BeanNameAware.setBeanName&lt;/li&gt;&lt;li&gt;BeanFactoryAware.setBeanFactory&lt;/li&gt;&lt;li&gt;ApplicationContextAware.setApplicationContext&lt;/li&gt;&lt;li&gt;Preinitialization&lt;/li&gt;&lt;li&gt;InitialingBean.AfterPropertySet&lt;/li&gt;&lt;li&gt;Call Custom init&lt;/li&gt;&lt;li&gt;PostInitializatiom&lt;/li&gt;&lt;/ol&gt;Destroy&lt;br /&gt;&lt;ol&gt;&lt;li&gt;DisposableBean.Destroy&lt;/li&gt;&lt;li&gt;call custom destroy method&lt;/li&gt;&lt;/ol&gt;&lt;ol&gt;&lt;/ol&gt;&lt;b&gt;Factory Bean &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;JndiObjectFactoryBean&lt;/li&gt;&lt;li&gt;ProxyFactoryBean&lt;/li&gt;&lt;li&gt;TransactionFactoryBean&lt;/li&gt;&lt;li&gt;RmiProxyFactoryBean&lt;/li&gt;&lt;li&gt;LocalSessionFactoryBean&lt;/li&gt;&lt;li&gt;LocalStatelessSessionProxyFactoryBean&lt;/li&gt;&lt;li&gt;SimpleStatelessSessionProxyFactoryBean&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Bean Factory:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;XMLBeanFactory&lt;/li&gt;&lt;li&gt;SimpleJndiBeanFactory&lt;/li&gt;&lt;li&gt;StaticListenableBeanFactory&lt;/li&gt;&lt;li&gt;DefaultListenableBeanFactory&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;BeanPostProcessor: &lt;/b&gt;&lt;br /&gt;Gives more control into lifecycle of bean. This process works as callback. Class needs to implement &lt;span style="font-family: &amp;quot;&amp;quot;; font-size: 10.5pt;"&gt;BeanFactoryPostProcessor&lt;/span&gt;&lt;span style="font-family: &amp;quot;&amp;quot;; font-size: 10pt;"&gt; class and register it with application context. &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;PostProcessBeforeInitialization&lt;/li&gt;&lt;li&gt;PostProcessAfterInitialization&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Internationalization:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;MessageSource interface      implementation is ready to use from Spring XML file.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Annotations:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Life Cycle:&amp;nbsp; &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul style="margin-top: 0pt;"&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;&amp;quot;; font-size: 10.5pt;"&gt;@Required&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;&amp;quot;; font-size: 10.5pt;"&gt;@Autowired&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;&amp;quot;; font-size: 10.5pt;"&gt;@Resource&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;&amp;quot;; font-size: 10.5pt;"&gt;@PostConstruct&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;&amp;quot;; font-size: 10.5pt;"&gt;@PreDestroy&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: &amp;quot;&amp;quot;; font-size: 10.5pt;"&gt;Configure Bean &lt;/span&gt;&lt;br /&gt;&lt;ul style="margin-top: 0pt;"&gt;&lt;li style="color: #3f3f3f;"&gt;&lt;span style="font-family: &amp;quot;&amp;quot;; font-size: 10.5pt;"&gt;@Component&lt;/span&gt;&lt;/li&gt;&lt;li style="color: #3f3f3f;"&gt;&lt;span style="font-family: &amp;quot;&amp;quot;; font-size: 10.5pt;"&gt;@Controller&lt;/span&gt;&lt;/li&gt;&lt;li style="color: #3f3f3f;"&gt;&lt;span style="font-family: &amp;quot;&amp;quot;; font-size: 10.5pt;"&gt;@Repository&lt;/span&gt;&lt;/li&gt;&lt;li style="color: black;"&gt;&lt;span style="font-size: 10.5pt;"&gt;@Service&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: &amp;quot;&amp;quot;; font-size: 10.5pt;"&gt;Transaction &lt;/span&gt;&lt;br /&gt;&lt;ul style="margin-top: 0pt;"&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;&amp;quot;; font-size: 10.5pt;"&gt;Transactional &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;&amp;quot;; font-size: 10.5pt;"&gt;AspectJ &lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Todo:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Skipping 51-61 page of Spring Framework 2.5 - Lesson 01-ver1.pdf&lt;/li&gt;&lt;li&gt;Implement internationalization project on page 65. &amp;nbsp;&lt;/li&gt;&lt;li&gt;Implement Annotation &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-4970243113613020660?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/4970243113613020660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/spring-concept.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4970243113613020660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4970243113613020660'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/spring-concept.html' title='Spring - Concept'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-4964015853013997485</id><published>2009-12-06T21:26:00.000-08:00</published><updated>2009-12-06T21:26:46.503-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architect'/><title type='text'>Architect Ability for Non-functional Requirements</title><content type='html'>Following is a list of quality attributes/abilities, an architect needs to look in a solution.&amp;nbsp; &lt;br /&gt;&lt;ul style="margin-top: 0pt;"&gt;&lt;li&gt;Major &lt;ul style="margin-top: 0pt;"&gt;&lt;li&gt;Functionality&lt;/li&gt;&lt;li&gt;Usability&lt;/li&gt;&lt;li&gt;Reliability&lt;/li&gt;&lt;li&gt;Performance&lt;/li&gt;&lt;li&gt;Supportability&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style="margin-top: 0pt;"&gt;&lt;li&gt;Additional       Constrains &lt;ul&gt;&lt;li&gt;Security&lt;/li&gt;&lt;li&gt;Modifiability&lt;/li&gt;&lt;li&gt;Portability&lt;/li&gt;&lt;li&gt;Interoperability&lt;/li&gt;&lt;li&gt;Availabilty&amp;nbsp;&lt;/li&gt;&lt;li&gt;Integration Ability&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Scalability: &lt;/b&gt;&lt;br /&gt;“How well a solution to some problem will work when the size of the problem increases.” 4 common scalability issues in IT systems:&lt;ul&gt;&lt;li&gt;Request Load:&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;How does an 100 tps application behave when simultaneous request load grows? E.g.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;From 100 to 1000 requests per second?&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Ideal solution, without additional hardware capacity:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;as the load increases, throughput remains constant (i.e. 100 tps), and response time per request increases only linearly (i.e. 10 seconds). &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;Connections:&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;What happens if number of simultaneous connections to an application increases&lt;/li&gt;&lt;ul&gt;&lt;li&gt;If each connection consumes a resource?&lt;/li&gt;&lt;li&gt;Exceed maximum number of connections?&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;Data Size&lt;/li&gt;&lt;ul&gt;&lt;li&gt;How does an application behave as the data it processes increases in size?&amp;nbsp;&lt;/li&gt;&lt;li&gt;Can application/algorithms scale to handle increased data requirements?&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Deployment:&lt;/li&gt;&lt;/ul&gt;&lt;ul style="margin-left: 40px;"&gt;&lt;li&gt;How does effort to install/deploy an application increase as installation base grows?&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Install new users?&lt;/li&gt;&lt;li&gt;Install new servers?&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Solutions typically revolve around automatic download/installation&lt;/li&gt;&lt;ul&gt;&lt;li&gt;E.g. downloading applications from the Internet&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Performance:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://saurabhkaushikin.blogspot.com/2009/06/perfomance-engineering-in-project.html"&gt;perfomance-engineering-in-project&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Modifiable:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Modifications to a software system during its lifetime are a fact of life.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Modifiable systems are easier to change/evolve&lt;/li&gt;&lt;li&gt;Modifiability should be assessed in context of how a system is likely to change&lt;/li&gt;&lt;ul&gt;&lt;li&gt;No need to facilitate changes that are highly unlikely to occur&lt;/li&gt;&lt;li&gt;Over-engineering!&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Modifiability measures how easy it may be to change an application to cater for new (non-) functional requirements.&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;‘may’ – nearly always impossible to be certain&lt;/li&gt;&lt;li&gt;Must estimate cost/effort&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Modifiability measures are only relevant in the context of a given architectural solution.&lt;/li&gt;&lt;ul&gt;&lt;li style="text-align: left;"&gt;Components&lt;/li&gt;&lt;li style="text-align: left;"&gt;Relationships&lt;/li&gt;&lt;li style="text-align: left;"&gt;Responsibilities&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Security:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Authentication&lt;/b&gt;: Applications can verify the identity of their users and other applications with which they communicate.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Authorization&lt;/b&gt;: Authenticated users and applications have defined access rights to the resources of the system.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Encryption&lt;/b&gt;: The messages sent to/from the application are encrypted.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Integrity&lt;/b&gt;: This ensures the contents of a message are not altered in transit.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Non-repudiation:&lt;/b&gt; The sender of a message has proof of delivery and the receiver is assured of the sender’s identity. This means neither can subsequently refute their participation in the message exchange.&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Availability: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Measured by the proportion of the required time it is useable. E.g.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;100% available during business hours&lt;/li&gt;&lt;li&gt;24x7x52 (100% availability)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Related to an application’s reliability &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Unreliable applications suffer poor availability&lt;/li&gt;&lt;/ul&gt;&lt;li&gt; Period of loss of availability determined by:&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Time to detect failure&lt;/li&gt;&lt;li&gt;Time to correct failure&lt;/li&gt;&lt;li&gt;Time to restart application&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Strategies for high availability:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Eliminate single points of failure&lt;/li&gt;&lt;li&gt;Replication and failover&lt;/li&gt;&lt;li&gt;Automatic detection and restart&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Recoverability (e.g. a database)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;the capability to reestablish performance levels and recover affected data after an application or system failure&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Integration Ability:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; ease with which an application can be incorporated into a broader application context&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Use component in ways that the designer did not originally anticipate&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Typically achieved by:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Data – expose application data for access by other components&lt;/li&gt;&lt;li&gt;API – offers services to read/write application data through an abstracted interface&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://sites.google.com/site/superskstorage/blogger/Gorton-ESA.ppt"&gt;http://sites.google.com/site/superskstorage/blogger/Gorton-ESA.ppt&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-4964015853013997485?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/4964015853013997485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/architect-ability-for-non-functional.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4964015853013997485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4964015853013997485'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/architect-ability-for-non-functional.html' title='Architect Ability for Non-functional Requirements'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-6174669837011771424</id><published>2009-12-06T09:19:00.000-08:00</published><updated>2009-12-13T05:10:18.613-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><title type='text'>Cloud Technology Stack and Service Catalog</title><content type='html'>&lt;b&gt;IaaS:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Amazon - AWS &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Services - EC2, S3, Simple DB, SQS&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;VMware - vCloud Express&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Sun Cloud - &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;PaaS: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Gird Computing&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Gridgain on Amazon EC2 &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Data Compute &lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Hadoop&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Framework&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Dot Net &lt;/li&gt;&lt;li&gt;Spring&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;SaaS&lt;/b&gt;: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Salesforce.com&lt;/li&gt;&lt;li&gt;Google Docs &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Cloud Offerings: &lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cloudfoundry.com/"&gt;CloudFoundry &lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;IaaS - AWS/VMware (paid)&lt;/li&gt;&lt;li&gt;PaaS - SpringSource &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Language - Java/Spring/Grail/Java&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Red Hat Cloud&lt;/li&gt;&lt;ul&gt;&lt;li&gt;IaaS - AWS (paid)&amp;nbsp;&lt;/li&gt;&lt;li&gt;PaaS - Jboss AS/Linux&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://heroku.com/"&gt;Heroku&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;IaaS - AWS (paid) &lt;/li&gt;&lt;li&gt;PaaS - Ruby &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Language - Ruby &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://www.cloudera.com/"&gt;Cloudera&amp;nbsp;&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;IaaS - AWS/VMware (paid)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;PaaS - Hadoop (mapReduce)&lt;/li&gt;&lt;li&gt;Languages - Java &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://www.gridgain.com/"&gt;Gridgain&lt;/a&gt; &lt;/li&gt;&lt;ul&gt;&lt;li&gt;IaaS - AWS (paid)&lt;/li&gt;&lt;li&gt;PaaS - Gridgain &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Languages - Java, Python,&amp;nbsp;&lt;/li&gt;&lt;li&gt;Technology&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Django development framework,&amp;nbsp;&lt;/li&gt;&lt;li&gt; Google's BigTable database/storage system&amp;nbsp;&lt;/li&gt;&lt;li&gt;Google File System (GFS)  &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://code.google.com/appengine/"&gt;Google App Engine&lt;/a&gt; -&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;PaaS - GAE (free) &lt;br /&gt;&lt;/li&gt;&lt;li&gt;IaaS - Google &lt;/li&gt;&lt;li&gt;Languages - Java, PHP &lt;/li&gt;&lt;li&gt;DB - Map (Bucket/Set)&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;MS Azure&amp;nbsp; &lt;/li&gt;&lt;ul&gt;&lt;li&gt;IaaS - MS Azure &lt;br /&gt;&lt;/li&gt;&lt;li&gt;PaaS - Dot Net Framework &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Language - NET, PHP, and Java&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Amazon &lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;IaaS - EC2, S3, Simple DB, Queue&amp;nbsp;&lt;/li&gt;&lt;li&gt;PaaS - All&amp;nbsp;&lt;/li&gt;&lt;li&gt;Language - All&lt;/li&gt;&lt;li&gt;DB - Map (Simple DB)&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Sun Cloud&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;IaaS - Cloud Compute, Cloud Storage&lt;/li&gt;&lt;li&gt;PaaS -&amp;nbsp; &lt;/li&gt;&lt;li&gt;Language - Java, Ruby, and Python&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;DNRDBMS - Distributed Non-RDBMS&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Distributed key value stores&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Dynamo (Amazon)&amp;nbsp;&lt;/li&gt;&lt;li&gt;Voldemort (LinkedIn)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Distributed column stores&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Big Table (Google)&lt;/li&gt;&lt;li&gt;Cassandra (Facebook)&lt;/li&gt;&lt;li&gt;HBase (Yahoo/Hadoop)&amp;nbsp;&lt;/li&gt;&lt;li&gt;Hypertable (Zvents)&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-6174669837011771424?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/6174669837011771424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/cloud-technology-stack-and-service.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/6174669837011771424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/6174669837011771424'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/12/cloud-technology-stack-and-service.html' title='Cloud Technology Stack and Service Catalog'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-7971580196606482262</id><published>2009-11-27T04:19:00.000-08:00</published><updated>2009-11-27T16:07:13.662-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java New'/><title type='text'>OSGi - Modularity By Deployment</title><content type='html'>&lt;b&gt;Influencing Factor for Application Development:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Business Constraints - Limits/Why &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Business Needs &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Functional Requirements - What&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Usage of Patterns &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Non-Functional Requirements - How &lt;/li&gt;&lt;li&gt;Operational Environment - Where\Who\When&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Business Constraint - Funding Enterprise Architecture&amp;nbsp;&lt;/li&gt;&lt;li&gt;Non-Functional Requirements - SLA&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Software Development - Change in Responsibility&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Traditional&amp;nbsp;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Tech Arch&amp;nbsp;&lt;/li&gt;&lt;li&gt;Developer/QA&amp;nbsp;&lt;/li&gt;&lt;li&gt;System Analyst&amp;nbsp;&lt;/li&gt;&lt;li&gt;Release Engineer &lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;New (Influenced Cloud Computing)&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Developer&amp;nbsp; - OSGi enables it &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Problem with Present:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Jar Dependencies - Getting stuck with app server - with all or nothing approach&lt;/li&gt;&lt;li&gt;Jar Hell/Dll hell/Dot Net Assemblies - Version and library loading&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt; OSGi Problem Target &lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Class Loading&amp;nbsp;&lt;/li&gt;&lt;li&gt;Conflicting Class&amp;nbsp;&lt;/li&gt;&lt;li&gt;Lack of Explicit Dependencies&amp;nbsp;&lt;/li&gt;&lt;li&gt;Lack of Version Info&amp;nbsp;&lt;/li&gt;&lt;li&gt;Lack of Info hiding &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;OSGi: Open Service Gateway Interface&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;OSGi technology is Universal Middleware.&lt;/li&gt;&lt;li&gt;OSGi technology provides a service-oriented, component based environment for developers and offers standardized ways to manage the software lifecycle. These capabilities greatly increase the value of a wide range of computers and devices that use the Java™ platform.&lt;/li&gt;&lt;li&gt;It is an fantastic attempt to bring modularity and dynamic deployment and management of component. Originally designed for setup box types of applications, to run them under managed services. These will require remote management and updates of application running on setup box.&lt;/li&gt;&lt;li&gt;Modularity from deployment point of view instead of program.&lt;/li&gt;&lt;li&gt;Dynamic Class Loading - Different version&lt;/li&gt;&lt;li&gt;Brought Service Oriented Application influenced from SOA.&lt;/li&gt;&lt;li&gt;JSR 277 and OSGi 291 - Modularity two spec. being contest for Java SE 7 and Java EE 7 ???&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;OSGi Layered Architecture:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.osgi.org/wiki/uploads/About/layering-osgi.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img alt="" border="0" height="194" src="http://www.osgi.org/wiki/uploads/About/layering-osgi.png" title="" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Bundles - Bundles are the OSGi components made by the developers. &lt;/li&gt;&lt;li&gt;Services - The services layer connects bundles in a dynamic way by offering a publish-find-bind model for plain old Java objects. &lt;/li&gt;&lt;li&gt;Life-Cycle - The API to install, start, stop, update, and uninstall bundles. &lt;/li&gt;&lt;li&gt;Modules - The layer that defines how a bundle can import and export code.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Security - The layer that handles the security aspects. &lt;/li&gt;&lt;li&gt;Execution Environment - Defines what methods and classes are available in a specific platform.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Module Layer:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_oLQ2W8mBOMU/SxBj6TtxHOI/AAAAAAAADnI/evwlu3G0Gfo/s1600/module.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_oLQ2W8mBOMU/SxBj6TtxHOI/AAAAAAAADnI/evwlu3G0Gfo/s320/module.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Unit of deployment is the bundle i.e., a JAR &lt;/li&gt;&lt;li&gt;Separate class loader per bundle&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Class loader graph&lt;/li&gt;&lt;li&gt;Independent namespaces&lt;/li&gt;&lt;li&gt;Class sharing at the Java package level&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&amp;nbsp;Multi-version support - i.e., side-by-side versions&lt;/li&gt;&lt;li&gt;Explicit code boundaries and dependencies - i.e., package imports and exports&lt;/li&gt;&lt;li&gt;Support for various sharing policies - i.e., arbitrary version range support&lt;/li&gt;&lt;li&gt;Arbitrary export/import attributes - Influence package selection&lt;/li&gt;&lt;li&gt;Sophisticated class space consistency model - Ensures code constraints are not violated&lt;/li&gt;&lt;li&gt;Package filtering for fine-grained class visibility - Exporters may include/exclude specific classes from exported package&lt;/li&gt;&lt;li&gt;Bundle fragments - A single logical module in multiple physical bundles&lt;/li&gt;&lt;li&gt;Bundle dependencies - Allows for tight coupling when required&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;&amp;nbsp;LifeCycle Layer:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_oLQ2W8mBOMU/SxBkZo9mYrI/AAAAAAAADnQ/gH_buiMWhE0/s1600/lifecycle.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_oLQ2W8mBOMU/SxBkZo9mYrI/AAAAAAAADnQ/gH_buiMWhE0/s320/lifecycle.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Managed life cycle - States for each bundle&lt;/li&gt;&lt;li&gt;Allows updates of existing bundles - Dynamically install, start, update, and uninstall &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Service Layer:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_oLQ2W8mBOMU/SxBlZpNICeI/AAAAAAAADnY/H6NjrYnY1kY/s1600/servicelayer.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_oLQ2W8mBOMU/SxBlZpNICeI/AAAAAAAADnY/H6NjrYnY1kY/s320/servicelayer.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_oLQ2W8mBOMU/SxBlxZdGBPI/AAAAAAAADng/tnLm0goyB6U/s1600/service.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_oLQ2W8mBOMU/SxBlxZdGBPI/AAAAAAAADng/tnLm0goyB6U/s320/service.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;OSGi framework promotes service oriented interaction pattern among bundles&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Security Layer:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Optional Security Layer based on Java permissions&amp;nbsp;&lt;/li&gt;&lt;li&gt;Infrastructure to define, deploy, and manage fine-grained application permission.&lt;/li&gt;&lt;li&gt;Code authenticated by location or signed&lt;/li&gt;&lt;li&gt;Well defined API to manage permission&lt;/li&gt;&lt;ul&gt;&lt;li&gt;PermissionAdmin&lt;/li&gt;&lt;li&gt;ConditionalPermissionAdmin&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;Bundle MANIFEST.MF:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Bundles - name, version, package name, etc.&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Exporting Class for other modules&amp;nbsp;&lt;/li&gt;&lt;li&gt;Importing Class with version numbers&amp;nbsp;&lt;/li&gt;&lt;li&gt;Same bundle can have version specific packages&amp;nbsp;&lt;/li&gt;&lt;li&gt;Same library with different version can exist in same VM. &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;Different Java SE, Java EE and OSGi model &lt;/b&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Java SE Class Loader:&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;a href="http://shylendrabhat.com/blog/wp-content/uploads/2009/11/javacl.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img alt="Java Class Loader Architecture" border="0" class="size-full wp-image-58 alignright" height="222" src="http://shylendrabhat.com/blog/wp-content/uploads/2009/11/javacl.png" title="Java Class Loader Architecture" width="209" /&gt;&lt;/a&gt;&lt;li&gt;Has hierarchical class loading model &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Library loading sequence overrides any application specific library requirement.&amp;nbsp;&lt;/li&gt;&lt;li&gt; Version dependency cant be specified, you have to bundle whole JVM and specific libararies. &lt;/li&gt;&lt;li&gt;Jar loaded in VM stays exposed to all applications under it. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Java EE Class Loader:&amp;nbsp;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://shylendrabhat.com/blog/wp-content/uploads/2009/11/j2eecl.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="J2EE Class Loader Architecure" border="0" class="size-full wp-image-60 aligncenter" height="390" src="http://shylendrabhat.com/blog/wp-content/uploads/2009/11/j2eecl.png" title="J2EE Class Loader Architecture" width="597" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Also has hirachical class loading model but containers maintain its boundries.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Throws up issue of sharing class/library with each others.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Sharing can be done only by moving a class up the Bootstrap Class loader for entire application server. &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;OSGi Class Loader:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://shylendrabhat.com/blog/wp-content/uploads/2009/11/osgicl.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="OSGi Class Loader Architecture" border="0" class="aligncenter size-full wp-image-62" height="166" src="http://shylendrabhat.com/blog/wp-content/uploads/2009/11/osgicl.png" title="OSGi Class Loader Architecture" width="473" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Has a module/bundle&amp;nbsp; based class Graph loader model&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Bundle definition are in MANIFEST.MF file.&lt;/li&gt;&lt;li&gt;Sharing of lib/classes is done by delegation to target bondle's class loader.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;OSGi Containers - Reference Implementation:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Equinox - OSGi R4&lt;/li&gt;&lt;li&gt;Flex - Apache - Android &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;OSGi Adoption: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Eclipse&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Big boost has come from Eclipse and Spring adaptation of OSGi.&amp;nbsp; &lt;/li&gt;&lt;li&gt;Eclipse has brought for plugin support and running app.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Apache Flix OSGi R4&lt;/li&gt;&lt;li&gt;Maven repository and third party OBR’s &lt;/li&gt;&lt;li&gt;Apache Commons OSGi&lt;br /&gt;&lt;/li&gt;&lt;li&gt;App Server - Jonous advanced version&amp;nbsp;&lt;/li&gt;&lt;li&gt;BEA - Micro Server Archicture&amp;nbsp;&lt;/li&gt;&lt;li&gt;Jboss - JMX based micro kernal -&amp;gt; OSGi based &lt;/li&gt;&lt;li&gt;IBM - Websphere - OSGi Support&lt;/li&gt;&lt;li&gt;Spring - Adopted - Dynamic Module&amp;nbsp;&lt;/li&gt;&lt;li&gt;Android - Suites best for embedded &lt;/li&gt;&lt;li&gt;Android - OSGi and Android present contrasting models - OSGi follows a single virtual machine model with multiple applications using the VM while Android has multiple VMs&lt;/li&gt;&lt;li&gt;Java ME - Profile has similar approach, but not OSGi. &amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/OSGi"&gt;http://en.wikipedia.org/wiki/OSGi&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.javaworld.com/podcasts/jtech/2008/040308jtech.html"&gt;http://www.javaworld.com/podcasts/jtech/2008/040308jtech.html&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://shylendrabhat.com/blog/2009/11/21/class-loader-architecture-comparison-java-j2ee-and-osgi/"&gt;http://shylendrabhat.com/blog/2009/11/21/class-loader-architecture-comparison-java-j2ee-and-osgi/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sites.google.com/site/superskstorage/blogger/OSGionGoogleAndroidusingApacheFelix.pdf?attredirects=0"&gt;http://sites.google.com/site/superskstorage/blogger/OSGionGoogleAndroidusingApacheFelix.pdf&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;ToDo:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-03-2008/jw-03-osgi1.html"&gt;http://www.javaworld.com/javaworld/jw-03-2008/jw-03-osgi1.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-04-2008/jw-04-osgi2.html"&gt;http://www.javaworld.com/javaworld/jw-04-2008/jw-04-osgi2.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-06-2008/jw-06-osgi3.html"&gt;http://www.javaworld.com/javaworld/jw-06-2008/jw-06-osgi3.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.osgi.org/Main/HomePage"&gt;http://www.osgi.org/Main/HomePage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://gravity.sourceforge.net/servicebinder/osginutshell.html"&gt;http://gravity.sourceforge.net/servicebinder/osginutshell.html &lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://osgi.dzone.com/"&gt;http://osgi.dzone.com/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.theserverside.com/tt/articles/article.tss?l=OSGiforBeginners"&gt;http://www.theserverside.com/tt/articles/article.tss?l=OSGiforBeginners&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://felix.apache.org/site/presentations.data/OSGi%20on%20Google%20Android%20using%20Apache%20Felix.pdf"&gt;http://felix.apache.org/site/presentations.data/OSGi%20on%20Google%20Android%20using%20Apache%20Felix.pdf &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-7971580196606482262?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/7971580196606482262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/osgi-bringing-dll-to-jre.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/7971580196606482262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/7971580196606482262'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/osgi-bringing-dll-to-jre.html' title='OSGi - Modularity By Deployment'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_oLQ2W8mBOMU/SxBj6TtxHOI/AAAAAAAADnI/evwlu3G0Gfo/s72-c/module.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-8687202215519880377</id><published>2009-11-23T19:38:00.000-08:00</published><updated>2009-11-26T09:08:23.814-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><title type='text'>Computing in the Cloud</title><content type='html'>There are three prime paradigms in cloud computing.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Infrastructure-as-a-Service (IaaS)&lt;/li&gt;&lt;li&gt;Platform-as-a-Service (PaaS)&lt;/li&gt;&lt;li&gt;Software-as-a-Service (SaaS)&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;IaaS&lt;/b&gt;: Provide infrastructure (storage, computing, Queue, DB, etc) for software to run in cloud.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Example: Amazon's Storage (S3), Computing (EC2) and Queues (SQS), Sun Cloud, &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;PaaS&lt;/b&gt;: Provides platform (developer tools, language, OS etc) to enable developers create information systems hosted in the Cloud.&amp;nbsp; It provides benefits of elasticity, robustness, security while requiring low capital expenditures.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Example: Google App Engine, MS Azure, Spring Cloud Foundry &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;SaaS&lt;/b&gt;: Provides software model of subscription basis. It lets the owner of software to host, manage and upgrade independently and out of customer premises.Customer are like tenant for service offered.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Example: Salesforce.com, Google Docs,&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;PaaS Architecture: &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img _href="img://fig1.jpg" alt="" src="http://www.infoq.com/resource/articles/will-meis-replace-extranets/en/resources/fig1.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Components of PaaS:&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;A flexible Presentation Layer&lt;/li&gt;&lt;li&gt;Advanced tools that can be used by developers and non-developers   alike&lt;/li&gt;&lt;li&gt;Business Activity Monitoring and reporting tools&lt;/li&gt;&lt;li&gt;A world class infrastructure which is hosting the PaaS engine&lt;/li&gt;&lt;li&gt;A Single Sign On service&lt;/li&gt;&lt;li&gt;A Service Registry&lt;/li&gt;&lt;li&gt;Connectors to SaaS providers such as SalesForce.com, Dun&amp;amp;Bradstreet,   FedEx…&lt;/li&gt;&lt;li&gt;Integration with legacy systems&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Five Pillars of Cloud Computing&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Dynamic Computing Infrastructure: &lt;/b&gt;Support the elastic nature of service provisioning and de-provisioning as requested by users while maintaining high levels of reliability and security.&lt;/li&gt;&lt;li&gt;&lt;b&gt;IT Service-Centric Approach: &lt;/b&gt;Provide powerful IT tools to administer the infrastructure services to provide easy deployment and management.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Self-Service Based Usage Model: &lt;/b&gt;Provide users the ability to upload, build, deploy, schedule, manage, and report on their business services on demand.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Minimally or Self-Managed Platform: &lt;/b&gt;Provide software automation, leveraging a provisioning engine for deploying services and tearing them down.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Consumption-Based Billing: &lt;/b&gt;Ensure that consumers pay only for resources they use - are charged or billed on a consumption-based model.&lt;b&gt;&amp;nbsp;&lt;/b&gt; &lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Types of Cloud System:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Transference&lt;/b&gt; - Taking an existing on-premises application and moving it to the cloud. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Scale and Multi-Tenancy&lt;/b&gt; - Creating an application that has the ability to handle web load without requiring the full capital investment from day one.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Burst Compute&lt;/b&gt; - Creating an application that has the ability to handle additional compute on an as-needed basis.&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Elastic Storage &lt;/b&gt; - Creating an application that has the ability to grow exponentially from a storage perspective. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Inter-Org Communications&lt;/b&gt; - Creating an application that has the ability to communicate between organizations using a pre-defined infrastructure.&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;References:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/articles/will-meis-replace-extranets"&gt;http://www.infoq.com/articles/will-meis-replace-extranets&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/news/2009/08/CloudPattern"&gt;http://www.infoq.com/news/2009/08/CloudPattern&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-8687202215519880377?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/8687202215519880377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/computing-in-cloud.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8687202215519880377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8687202215519880377'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/computing-in-cloud.html' title='Computing in the Cloud'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-9002635964308154972</id><published>2009-11-23T07:19:00.001-08:00</published><updated>2011-11-22T19:25:43.321-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java EE'/><title type='text'>Compare Application Servers</title><content type='html'>&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://weblogs.java.net/blog/kalali/archive/2009/11/17/state-open-source-java-ee-application-servers"&gt;http://weblogs.java.net/blog/kalali/archive/2009/11/17/state-open-source-java-ee-application-servers&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-9002635964308154972?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/9002635964308154972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/compare-application-servers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/9002635964308154972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/9002635964308154972'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/compare-application-servers.html' title='Compare Application Servers'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-155023014969441109</id><published>2009-11-18T01:25:00.001-08:00</published><updated>2011-11-22T19:25:58.942-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java SE'/><title type='text'>Java Misel Tech - Concept</title><content type='html'>&lt;b&gt;Sizing the Heap for Application:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Increasing your maximum heap&lt;/li&gt;&lt;li&gt;Looking at the memory of a running app&lt;/li&gt;&lt;li&gt;Making heap dumps (on demand or on OutOfMemoryException)&amp;nbsp;&lt;/li&gt;&lt;li&gt;Analyzing the dumps.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size: 100%; font-weight: bold;"&gt;Names of Java: &lt;/span&gt;&lt;span style="font-size: 100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: 100%;"&gt;1.2 - Play Ground&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 100%;"&gt;1.3 - Kestrel&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 100%;"&gt;1.4 - Merline&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 100%;"&gt;SE 5.0 - Tiger&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Type of Compilers: Hotspot, JIT, VM:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;HS - Adoptive, interpret and convert in byte code&lt;/li&gt;&lt;li&gt;JIT - First call- Compile into native code, and execute it from there on.&lt;/li&gt;&lt;li&gt;Adaptive and premature optimization,&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;EJB Basic: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Java Bean are reusable component which can run only in single VM.&lt;/li&gt;&lt;li&gt;EJB are distributed component which can run on multiple system.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Struts: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It is collection of JSP + Servlet&lt;/li&gt;&lt;li&gt;It uses struts-config.xml for controller.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Sequence:&lt;/span&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;JSP(view)-----&amp;gt;struts-config.xml + actions(controllers)----&amp;gt;Ejb +JDBC (model).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;SQL Notes: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DDL cant be rolled back where DML can be. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Truncate - DDL cmd&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Delete - DML com&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Connection pool and data source:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;finalize(); &lt;/li&gt;&lt;li&gt;Usage for logical connection release.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Closed and Open classes – Template Design Patterns &lt;/b&gt;&lt;br /&gt;Usage Spring FW&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;P A C base DAOOperation&lt;/li&gt;&lt;li&gt;P F Object execute (obj... 0); --&amp;gt; Varargs. -&amp;gt; Compile time.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Notes:&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Enum can have business method class.&lt;/li&gt;&lt;li&gt;Hashcode is computed at constructor.&lt;/li&gt;&lt;li&gt;It has Comparable relies on hashcode.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt; &lt;br /&gt;&lt;b&gt;Security&lt;/b&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Course Grain: Page access.&lt;/li&gt;&lt;li&gt;Fine Grained: Method level&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Blunder of Sun:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Single thread servlet model&lt;/li&gt;&lt;li&gt;JSP&lt;/li&gt;&lt;li&gt;JSTL: Core: introduced for business logic&lt;/li&gt;&lt;li&gt;Data Source lib:&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Spring:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Inversion Of Control&lt;/li&gt;&lt;li&gt; Dependecy Injection&lt;/li&gt;&lt;li&gt; Collobration of objects&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Check and Unchecked Exception - ???&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Failed Res:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;JDBC COnnection Building using DataSource: ???&lt;/li&gt;&lt;li&gt;Eclipse: Delta Compilation to help refractory.&lt;/li&gt;&lt;li&gt;DOnt exopose collection to layer use helper method/class.&lt;/li&gt;&lt;li&gt;DAO Object should not have layered specific code.&lt;/li&gt;&lt;li&gt;Use interfaces to pass object between layer.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Practices for Thread&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Thread Safety&lt;/li&gt;&lt;li&gt; Thread should not maintain the state.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Concurrency:&lt;/h3&gt;Synchronization acquire lock on method or block. Not on the object/class.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Read Write Locks:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ReadLock - Shared Lock&lt;/li&gt;&lt;li&gt;writeLock - Mutually exclusive lock.&lt;/li&gt;&lt;li&gt;ThreadGroups should not be used because they are expensive and deprecated.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Server Side Programming:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Servlet 2/4 has been deprecated Single thread Model and not advisable.&lt;br /&gt;Data Input validation:&lt;br /&gt;Struts framework&lt;br /&gt;Regular expression.&lt;br /&gt;Type of validation:&lt;br /&gt;Java Script&lt;br /&gt;Ajax&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Server Side (Java) -- Best&lt;/li&gt;&lt;li&gt;Presentation should pass data only using POJO to Business layer.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Agile:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Test before you write code.&lt;/li&gt;&lt;li&gt;Britle Code: Too high coupling and specific API&lt;/li&gt;&lt;li&gt;Robust Code: Can survive in most of the situation.&lt;/li&gt;&lt;li&gt;Q Card: Use Case card with specific size.&lt;/li&gt;&lt;li&gt;Agile Vs OOps methodologies:&lt;/li&gt;&lt;li&gt;Static variables should not hold state but constant. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;To do:&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;String: Look at whole class.&lt;/li&gt;&lt;li&gt;Overriding annotation in Java &lt;/li&gt;&lt;li&gt;Use weak and soft ref.&lt;/li&gt;&lt;li&gt;Identity Hash Map class &lt;/li&gt;&lt;li&gt;New IO API&lt;/li&gt;&lt;li&gt;Concurrency API&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;ol&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-155023014969441109?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/155023014969441109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/java-misel-tech-concept.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/155023014969441109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/155023014969441109'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/java-misel-tech-concept.html' title='Java Misel Tech - Concept'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-8156655625721228258</id><published>2009-11-17T22:23:00.000-08:00</published><updated>2009-12-08T23:00:27.140-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>EAI/SOA Design Patterns</title><content type='html'>&lt;b&gt;Basic Service Patterns: &lt;/b&gt;Tool-kit &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Aggregator - Many Message to One Message&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Service Bus - Common Communication Transport &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Dynamic Routing - Dynamic Rules (DB) Based Message routing &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Event Consumer - Event driven Message Process &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Filter - Filtering on Messaging on transport to destination &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Router - Messaged payload/attribute based Message Routing &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Translator/Transformer- Message translation for destination service &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Architectural Patterns: &lt;/b&gt;Solving a domain problem &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Asynchronous Processing - Queuing messages to decouple processing time and resources &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Bridge - Distributing common data path to endpoints with different protocols and message structures. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Cross-service Operation - Coordination between services for transaction &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Event-Driven Dispatching - Event triggering process to subscribers &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Process Aggregation - Organizing parallel processing of event at endpoints &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Routing and Filtering - Routing messages to different endpoints with filtration &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Replicator - Message replication to multiple endpoints &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Compound Patterns: &lt;/b&gt;System Design &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Centralized Schema - Sharing domain schema across endpoints with different data formats. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Concurrent Contract - Simultaneous sharing of domain schema with endpoint, with different views. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Decompose Capability&amp;nbsp; - Designing to allow decomposition of a bloated service &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Enterprise Service Bus - A message communication channel to facilitate orchestration &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Fault-Tolerant Service Provider - A load-balanced routing mechanism to provide high availability &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Wrapper - Encapsulating a legacy application with a service aware wrapper &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://sites.google.com/site/superskstorage/blogger/rc038-010d-soa.pdf"&gt;http://sites.google.com/site/superskstorage/blogger/rc038-010d-soa.pdf&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-8156655625721228258?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/8156655625721228258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/soa-patterns.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8156655625721228258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8156655625721228258'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/soa-patterns.html' title='EAI/SOA Design Patterns'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-8570233899501339297</id><published>2009-11-16T03:56:00.001-08:00</published><updated>2011-11-22T19:33:30.236-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech'/><title type='text'>XML In Java</title><content type='html'>&lt;b&gt;JAXP:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Java API for Processing to validate and parse XML documents. Three types parsing interfaces:&lt;br /&gt;&lt;i&gt;&lt;b&gt;1. DOM - Document Object Model - Builds tree out of xml file &lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Parses an entire XML document and constructs a complete in-memory representation of the document using the classes modeling the concepts. &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DocumentBuilder db = new &amp;nbsp; DocumentBuilderFactory.getBuilder();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Element elm = db.getElement() // Root of document&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Node n = Element.getNode(); // Node for &amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Nodes are two types:&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Elements' Attributes &lt;/span&gt;&lt;/li&gt;&lt;li&gt;String between tags (start/end)&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;i&gt;&lt;b&gt;2. SAX - Simple API for XML - Event Based API&amp;nbsp;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It pushed that data based on the event in document traversal.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;SAXParser sp = SAXParserFactory.getParser();&lt;br /&gt;DefaultHandler dh = sp.getHandler();&lt;br /&gt;ContentHandler, ErrorHandler, DTDHandler and EntityResolver &lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;3. STAX - Streaming API for XML - Reading from stream using SAX&amp;nbsp;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Combination of SAX and DOM.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Traverse through the document using cursor.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Application to maintain state between events. &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;XSLT:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt; XSD:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/XSLT"&gt;http://en.wikipedia.org/wiki/XSLT&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-8570233899501339297?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/8570233899501339297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/xml-in-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8570233899501339297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/8570233899501339297'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/xml-in-java.html' title='XML In Java'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-3074528141670498132</id><published>2009-11-16T02:58:00.001-08:00</published><updated>2011-11-22T19:25:55.001-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Service'/><title type='text'>Web Services - Concept</title><content type='html'>&lt;b&gt;SOAP:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SOAP Struct&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;soap-env:envelope&gt;&lt;/soap-env:envelope&gt;SOAP-ENV - Envelop/Header/Body&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;SOAP Body&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Request/Response Object - Serialized - JAXB&lt;/li&gt;&lt;li&gt;Request/Response Target - method/variable &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;SOAP-ENV:Fault&lt;/li&gt;&lt;ul&gt;&lt;li&gt;faultcode&lt;/li&gt;&lt;li&gt;faultstring&lt;/li&gt;&lt;li&gt;runcode&lt;/li&gt;&lt;li&gt;details element (optional) &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Serialization&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;SOAP Specified schema&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Web Service Infrastructure&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Service Wire Format - SOAP - Open/Independent&amp;nbsp;&lt;/li&gt;&lt;li&gt;Service Description - WSDL&amp;nbsp;&lt;/li&gt;&lt;li&gt;Service Discovery - UDDI &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-3074528141670498132?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/3074528141670498132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/web-services-concept.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3074528141670498132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3074528141670498132'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/web-services-concept.html' title='Web Services - Concept'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-1400783265775114853</id><published>2009-11-14T20:19:00.001-08:00</published><updated>2011-11-22T19:25:50.267-08:00</updated><title type='text'>Java answers to High Level Languages</title><content type='html'>Next big thing in Java is multilingual support for high level language/dynamic language/scripting language/interpretive languages like Ruby, Python, Scala, etc.&lt;br /&gt;&lt;br /&gt;Java has integrated Ruby and Pyhton with project like jRuby and Jython. what is allows is best of both worlds. Write Ruby code, run it on JVM and access the&lt;br /&gt;&lt;br /&gt;Dynamic language also has other features like weak typing.Weak type is depending on value being assigned, it coverts the target variable type. But it creates confusion at run-time if operations on these are not coherent. For these, each of these language offers their characteristic to resolve these some by falling back to basics a or adaptation rules at runtime.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Dynamic Typing:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Type checking is done at run-time instead of compile time. It eases application developer to focus on job rather than worrying about type casting.&amp;nbsp;&lt;/li&gt;&lt;li&gt;This allow program to cast a variable depending on incoming value at run-time, but this check is always done for run-time. &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Statically typed language, Java, will continue to have its place in future if its strategy to adopt these new languages into its fold. This is crucial for its survival and longevity.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Dynamic_typing#Dynamic_typing"&gt;http://en.wikipedia.org/wiki/Dynamic_typing#Dynamic_typing&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-1400783265775114853?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/1400783265775114853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/java-answers-to-high-level-languages.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/1400783265775114853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/1400783265775114853'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/java-answers-to-high-level-languages.html' title='Java answers to High Level Languages'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-7652623848329046342</id><published>2009-11-09T01:29:00.001-08:00</published><updated>2011-11-22T19:22:16.930-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>SOA Security</title><content type='html'>The security requirements common to these scenarios include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Authentication:&lt;/b&gt; How do I know your identity is true?                         &lt;/li&gt;&lt;li&gt;&lt;b&gt;Authorization:&lt;/b&gt; Are you allowed to perform this transaction?                         &lt;/li&gt;&lt;li&gt;&lt;b&gt;Integrity:&lt;/b&gt; Is the data you sent the same as the data I received?                         &lt;/li&gt;&lt;li&gt;&lt;b&gt;Signature:&lt;/b&gt; Create and verify an electronic signature analogous to a handwritten signature.                         &lt;/li&gt;&lt;li&gt;&lt;b&gt;Confidentiality:&lt;/b&gt; Are we sure that nobody read the data you sent me?                         &lt;/li&gt;&lt;li&gt;&lt;b&gt;Auditing:&lt;/b&gt; Record all transactions for verification after the fact.                         &lt;/li&gt;&lt;li&gt;&lt;b&gt;Nonrepudiation:&lt;/b&gt; Both sender and receiver can legally prove to a third party (e.g., a judge) that the same data was sent and received in a                            transaction.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Single sign-on (SSO)&lt;/b&gt;: Have become important due to the proliferation of silos of identity                         information across applications&lt;/li&gt;&lt;li&gt;&lt;b&gt;Threat prevention&lt;/b&gt;: for excluding                         bad data (spyware, malware, etc.).&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;WS-Policy:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;WS-Policy provides a flexible and extensible grammar for expressing the capabilities, requirements, and general characteristics                         of entities in an XML Web services-based system. WS-Policy defines a framework and a model for the expression of these properties as policies. Policy expressions allow for both simple declarative assertions as well as more sophisticated conditional assertions.&lt;br /&gt;Note that the new OASIS Web Services Secure Exchange (WS-SX) Technical Committee is the new OASIS working group for WS-Policy                         and other related standards.                      &lt;br /&gt;&lt;br /&gt;The XML representation of a policy assertion is called a policy expression. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-04-2006/jw-0410-webservices.html"&gt;http://www.javaworld.com/javaworld/jw-04-2006/jw-0410-webservices.html&lt;/a&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-7652623848329046342?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/7652623848329046342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/soa-security.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/7652623848329046342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/7652623848329046342'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/soa-security.html' title='SOA Security'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-675093143497667243</id><published>2009-11-09T01:25:00.000-08:00</published><updated>2009-11-23T22:31:48.334-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java EE'/><title type='text'>Enterprise Security</title><content type='html'>Enterprise security has been evolving for years, and at this point we can say that work to fence a system is consolidated. I remember in 2001 when I was part of a Internet security initiative, we have attempted to solve many enterprise level security concerns. But if I see that work, I am happy the java community has got all that what we set out to do then. Today two prominent enterprise platform are Spring and Java EE. Java EE takes advantage of server provider driven security where Spring has standard provider called Acegi.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Advance Authentication methods for Enterprise:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Anonymous:&lt;/b&gt; Associate anonymous users with a specific user identity and role, so that programming access control is unanimous across                         protected and unprotected resources.&amp;nbsp;                      &lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Remember-me:&amp;nbsp;&lt;/b&gt; &lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Web site to remember a user's identity between Web sessions.&lt;/li&gt;&lt;li&gt;A long-duration                         cookie is sent—with the value of a digested identity and password&lt;/li&gt;&lt;li&gt;during future                         sessions, causing automated login to take place &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;SSO authentication&lt;/b&gt;: &lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Security requirement that applies to all applications inside a corporation.&lt;/li&gt;&lt;li&gt;A request to access a secured URL from an unauthenticated user is redirected to a centralized Web site for login&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Each subsequent user request will be associated with an authentication                         token.&amp;nbsp;&lt;/li&gt;&lt;li&gt;The server                         sends the token to the centralized authentication server for verification and retrieves the identity. &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Security Implementation Methods: &amp;nbsp; &lt;/b&gt;&lt;br /&gt;There are three types of security mechanism to provide security.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Using annotation &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Declarative security &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Programmatic security &lt;/li&gt;&lt;/ul&gt;Lets see what are security methods of Java EE and Spring framework. &lt;br /&gt;&lt;b&gt;Java EE: &lt;/b&gt;&lt;br /&gt;Java EE security specification addresses common and abstract application security concerns by leaving concrete implementations to server vendors. But, standard Java EE security services are container-managed security (CMS) with portability across different Java EE platforms. Provides all three types of methods of security:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Annotation - @RoleAllowed("Admin")&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;EJBContext&lt;/code&gt; interface &lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;getCallerPrincipal()&lt;/code&gt; and &lt;code&gt;isCallerInRole()&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;code&gt;HttpServletRequest&lt;/code&gt; interface &lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;getUserPrincipal()&lt;/code&gt; and &lt;code&gt;isUserInRole()&amp;nbsp;&lt;/code&gt; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Declarative - method permission/role-name&amp;nbsp;&lt;/li&gt;&lt;li&gt;Programmatic - if (ctx.isCallerInRole("payrole)) {..} &lt;/li&gt;&lt;/ul&gt;Declarative and Annotation is preferred over programming.&lt;b&gt; &lt;/b&gt;&amp;nbsp;&amp;nbsp;    &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Spring:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Spring security is based on Acegi Security framework. Acegi security is described as portable at the WAR (Web archive) level, instead of the API level adopted by Java EE, because the Acegi run-time is deployed as part of the application inside a war file. Lets look at all form of authentication and authorization mechanism. Acegi support sucurity using its configuration files. But it support only programmatic method of security.&amp;nbsp; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;AuthenticationManager &lt;/li&gt;&lt;li&gt; AccessDecisionManager&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;SecurityContextHolder.getSecurityContext().getAuthentication()&lt;/code&gt;&lt;code&gt; returns &lt;/code&gt;&lt;code&gt;Authentication &lt;/code&gt;object. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;Authentication&lt;/code&gt; object contains a &lt;code&gt;principal&lt;/code&gt; object and a list of &lt;code&gt;GrantedAuthority&lt;/code&gt; objects.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;The &lt;code&gt;principal&lt;/code&gt; object often implements a &lt;code&gt;UserDetails&lt;/code&gt; interface and is enriched with information other than the username, such as user's full name, email, etc.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Acegi for Java EE:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Acegi's container adapter integrates Acegi                         with Java EE security through container-specific configurations. It enables both Acegi security and security methods                         defined in the Servlet API, such as &lt;code&gt;getUserPrincipal()&lt;/code&gt; and &lt;code&gt;isUserInRole()&lt;/code&gt;.&lt;br /&gt;&lt;i&gt;Supported:&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Jetty, Catalina (Tomcat),&amp;nbsp;&lt;/li&gt;&lt;li&gt;JBoss, and Resin.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Security Providers Types:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;With evolved plug-n-play features, security are left to security providers. But still there are different types of implementation approach to it.&amp;nbsp; &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To test an application, &lt;i&gt;In-memory authentications &lt;/i&gt;are used.&amp;nbsp; &lt;/li&gt;&lt;li&gt;Back-end Repository (JDBC, LDAP) based Server&amp;nbsp;&lt;/li&gt;&lt;li&gt;Application integrate Java Authentication and Authorization Service - JAAS &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Integration of Third Party security software (SiteMinder and CAS) to delagate SSO/authentication requests.&amp;nbsp; &lt;/li&gt;&lt;li&gt;Run-As: Component to component authentication can be done with special/dummy role.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;J2EE - Temporarily replaces the original security roles of the principal (user) for the duration of a method invocation&lt;/li&gt;&lt;li&gt;Spring - the role specified by run-as is an add-on to the principal's original roles &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;Other Security Aspects: &lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;&lt;b&gt;JMS message&lt;/b&gt;&lt;/i&gt; sender is never propagated to a receiver. Run-as enables you to encapsulate JMS message processing as part of the secured business-processing logic.&lt;/li&gt;&lt;li&gt;&lt;i&gt;&lt;b&gt;Concurrent session control &lt;/b&gt;&lt;/i&gt;prevents a user from concurrently authenticating to the same application more than a specified number of times. It is cluster-aware, such that the specified session count applies to the entire server cluster, rather than a single server instance.&lt;/li&gt;&lt;li&gt;&lt;i&gt;&lt;b&gt;SOAP Message&lt;/b&gt;:&lt;/i&gt; For SOAP Web services applications, in addition to channel security, message-level security, which secures a portion of the SOAP messages with the latest XML digital signature and encryption technology, should be considered for communications that cross enterprise boundaries.&lt;/li&gt;&lt;li&gt;&lt;i&gt;&lt;b&gt;CAPTCHA&lt;/b&gt;&lt;/i&gt;: It takes the form of an image containing distorted letters and/or numbers and is often used on login screens to differentiate a human user from a computer program. Regardless of some its drawbacks, CAPTCHA helps mitigate certain types of malicious attacks from automated computer programs. JCAPTCHA is a Java implementation of the CAPTCHA technology and can be incorporated into Java EE security or Acegi.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Adjudication&lt;/i&gt;: &lt;/b&gt;Adjudication allows collaboration between multiple providers in same application. Adjudication is the process of evaluating multiple decisions through predefined algorithms and rendering a verdict. Acegi: AccessDecisionMaker. Types: &lt;code&gt;UnanimousBased&lt;/code&gt;, &lt;code&gt;AffirmativeBased&lt;/code&gt; and &lt;code&gt;ConsensusBased&lt;/code&gt;.&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-03-2007/jw-03-security.html"&gt;http://www.javaworld.com/javaworld/jw-03-2007/jw-03-security.html&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-675093143497667243?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/675093143497667243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/enterprise-security.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/675093143497667243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/675093143497667243'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/enterprise-security.html' title='Enterprise Security'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-2043948384705934270</id><published>2009-11-07T04:59:00.000-08:00</published><updated>2009-12-25T23:11:38.788-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>Design a SOA Service</title><content type='html'>In SOA, service design is very crucial from maintainability viewpoint without sacrificing operations-related metadata -- such as service-level                         agreements (SLAs) and Governance principals. It enforces design principal for component with&lt;b&gt;&amp;nbsp;&lt;i&gt;maximal cohesion and minimal coupling&lt;/i&gt;.&lt;/b&gt;&lt;br /&gt;Service developed under EJB container gets to take advantage of its aspect oriented services like transaction, security and remoting. To avoid general pitfalls of Java EE design principal and landing up think layers of Web Services, MVC architecture bring its own synonym Facade, Service and Domain for SOA service design. &amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Service Layered Architecture&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Facade&lt;/b&gt;: Provides simplified, centralized access to the component and decouples the client from the concrete services. It is the                            network and transaction boundary.                         &lt;/li&gt;&lt;li&gt;&lt;b&gt;Service&lt;/b&gt;: The actual implementation of business logic.                         &lt;/li&gt;&lt;li&gt;&lt;b&gt;Domain structure&lt;/b&gt;: This is a structure rather than an object. It implements the component's persistence and exposes all of its state to the                            services, without encapsulation. &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-04-2009/images/jw-lean-soa-fig2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Figure 2. Internal component layering with packages" border="0" height="114" src="http://www.javaworld.com/javaworld/jw-04-2009/images/jw-lean-soa-fig2.jpg" width="346" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;There is similarity in Agile Development approach with &lt;i&gt;&lt;b&gt;Entity-Control-Boundary (ECB) architectural pattern. &lt;/b&gt;&lt;/i&gt;In this, a domain structure is an Entity, the Control is a service, and the Boundary is                         realized with a facade.&lt;br /&gt;This approach has its flexibility. If system is doing just data operation, it is pragmatic to allow Facade to manage persistence directly. Or encapsulate all data access service in generic service like DataService and let this be contact point for all Data access. But this would not be cohesive.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Data Access Layer - Design Principals:&lt;/b&gt;&lt;i&gt;&lt;b&gt;&amp;nbsp; &lt;/b&gt;&lt;/i&gt;&lt;br /&gt;Most applications to adhere to the principles of &lt;b&gt;&lt;i&gt;DRY (don't repeat yourself) and separation of concerns&lt;/i&gt;&lt;/b&gt;. There are two mechanism to define DAL: DAO and JPA. DOA explicitly handles all data operation where JPA deals its aspect oriented way. But both helps to avoid repeat its concerns all over application. Huge semantic difference between JPA and DAO; with the EntityManger, there's no need to merge attached entities back, whereas it is absolutely necessary in the case of a DAO with data-transfer objects. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;DOA should be created in a bottom-up, rather than a top-down, fashion. If you discover data-access code duplication in your service layer, just factor it out to a dedicated DAO and reuse it.&amp;nbsp;&lt;/li&gt;&lt;li&gt;For change of Data Source type, DAO still needs to tweak the isolation levels, transactions, and database configuration for data migration.  &lt;/li&gt;&lt;li&gt; DAI is @Local and comes with the MANDATORY transaction setting &lt;/li&gt;&lt;li&gt;Local Ref is for Web/EJB application running under same container and Remote is for any rich client accessing service on its own.&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; &lt;a href="http://www.javaworld.com/javaworld/jw-04-2009/jw-04-lean-soa-with-javaee6.html"&gt;http://www.javaworld.com/javaworld/jw-04-2009/jw-04-lean-soa-with-javaee6.html&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-2043948384705934270?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/2043948384705934270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/designing-of-soa-service.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/2043948384705934270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/2043948384705934270'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/designing-of-soa-service.html' title='Design a SOA Service'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-2493370681230755601</id><published>2009-11-06T21:36:00.000-08:00</published><updated>2009-11-18T01:22:53.910-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architect'/><category scheme='http://www.blogger.com/atom/ns#' term='Java EE'/><title type='text'>Domain Driven Design for Enterprise Systems</title><content type='html'>In enterprise setup, business service layer tends to become the meat of the whole system and bottleneck for all all enhancement and maintenance for system. Generally, with the invent of EJB session bean becomes the place holder for all the business logic to be access and model stays encapsulated under it. The real issue with complex logic realized with anemic structures are type distinctions in the business service layer. Massive &lt;code&gt;if&lt;/code&gt;-statements might be necessary to differentiate among entity types. That is paradigm of Procedural driven architectural approach.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Procedural Driven Architecture: In data-driven use cases such as master data management (CRUD), you can implement workflow-related, procedural behavior efficiently with service facades and few anemic entities.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Domain Driven Architecture: It is perfect for more-complex, type-dependent algorithms in more-interactive applications.&amp;nbsp;It is an inside out approach.&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;It is about having behavioral logic in Domain Object rather having this logic in Controller classes.&amp;nbsp;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Most nontrivial Java EE projects require both approaches. &lt;br /&gt;Domain Driven design is a new paradigm in which design is done based on Domain object prominence and exposing to even presentation layer. Main artifact of DDA is Domain Objects which are just cohesive classes with encapsulated                         state and related behavior. They use inheritance naturally, where appropriate. Java Persistence API has extended its support for mapping rich domain objects.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;It is like designing your business Logic&lt;br /&gt;&lt;i&gt;&lt;b&gt;PDA:&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;ShippingService.computeRateInRegion(RegionalState regionalState, order) // compute rate depending on region&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (order.getRegion() == regionalState) { rate = ...} &lt;br /&gt;Composite all the model class and return DTO.&lt;br /&gt;&lt;b&gt;DDA&lt;/b&gt;: &lt;br /&gt;Domain Object: ReginalState.getShippingRate(order) {...}&lt;br /&gt;Persistent Domain Object: KKState extends RegionalState {...} &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Designing an enterprise system needs very careful selection of technology at each level of architecture. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Decision 1: Organizing the business logic&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Using a procedural design&lt;/li&gt;&lt;li&gt;Using an object-oriented design&lt;/li&gt;&lt;li&gt;Table Module pattern&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Decision 2: Encapsulating the business logic&lt;/li&gt;&lt;ul&gt;&lt;li&gt;EJB session façade&lt;/li&gt;&lt;li&gt;POJO façade&lt;/li&gt;&lt;li&gt;Exposed Domain Model pattern&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Decision 3: Accessing the database&lt;/li&gt;&lt;ul&gt;&lt;li&gt;What's wrong with using JDBC directly?&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Developing and maintaining SQL is difficult and time consuming&lt;/li&gt;&lt;li&gt;There is a lack of portability with SQL&lt;/li&gt;&lt;li&gt;Writing JDBC code is time consuming and error-prone&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Using iBATIS&lt;/li&gt;&lt;li&gt;Using a persistence framework&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Decision 4: Handling concurrency in database transactions&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Isolated database transactions&lt;/li&gt;&lt;li&gt;Optimistic locking&lt;/li&gt;&lt;li&gt;Pessimistic locking&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Decision 5: Handling concurrency in long transactions&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Optimistic Offline Lock pattern&lt;/li&gt;&lt;li&gt;Pessimistic Offline Lock pattern&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-05-2009/jw-05-domain-driven-design.html"&gt;http://www.javaworld.com/javaworld/jw-05-2009/jw-05-domain-driven-design.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-01-2006/jw-0130-pojo.html"&gt;http://www.javaworld.com/javaworld/jw-01-2006/jw-0130-pojo.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.nakedobjects.org/introduction.html"&gt;http://www.nakedobjects.org/introduction.html &lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-2493370681230755601?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/2493370681230755601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/domain-driven-design-for-enterprise.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/2493370681230755601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/2493370681230755601'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/11/domain-driven-design-for-enterprise.html' title='Domain Driven Design for Enterprise Systems'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-4216663620517169582</id><published>2009-10-26T20:39:00.000-07:00</published><updated>2009-12-08T05:07:25.687-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architect'/><title type='text'>Architect - Deployment Considerations</title><content type='html'>&lt;b&gt;Scalability:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Ability to handle bigger amount of work (data, CPU, network) to improve throughput and Response Time.&amp;nbsp; &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Horizontal/Out scalability:&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Adding more parallel nodes and redistribute the traffic&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Used for SOA and Web systems &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Vertical/Up scalability: &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Adding more capability (CPU, mem, network) to a node &lt;/li&gt;&lt;li&gt;Used in hosting env&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;High Availability:&lt;/b&gt;&lt;br /&gt;Describes how well a system provides its resource for a set period of time. &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Formula : All in minutes &lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Availability = 100 - (100 * D)/U&lt;/li&gt;&lt;li&gt;D - Unplanned downtime&amp;nbsp;&lt;/li&gt;&lt;li&gt;U - Uptime&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Measured in "nines"&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;One nine - 90&amp;nbsp;&lt;/li&gt;&lt;li&gt;Three nines - 99.9&amp;nbsp;&lt;/li&gt;&lt;li&gt;Six nines - 99.9999&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Cost grows for high availability&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Load Balancing:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;To minimize response time and maximize throughput by adding more resources. Schemes at load balancer&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Round Robin - Web Apps&amp;nbsp;&lt;/li&gt;&lt;li&gt;Pseudo Number Generator - For uniform stateless requests system (heartbeat/update server)&lt;/li&gt;&lt;li&gt;Asymmetric - Routing heavy traffic based on following analysis to heavy servers.&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Content filtering&amp;nbsp;&lt;/li&gt;&lt;li&gt;Firewalling, SSL Offloading and DDOS (Distributed Denial Of Service) attack protection&amp;nbsp; &lt;/li&gt;&lt;li&gt;Payload switching&amp;nbsp;&lt;/li&gt;&lt;li&gt;Rate Shaping &lt;/li&gt;&lt;li&gt;Scripting - Rules Automation &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Persistence/sticky - Maintains dedicated server to its client connection for a session &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Clustering:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;A group of systems work together as one to improve service availability, computational scalability and data scalability.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Load Balancing Cluster (Active/Active):&lt;/b&gt; Equal distribution of load. &amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_oLQ2W8mBOMU/Sx4fopxvFrI/AAAAAAAADoc/Yh9yg3hh8LQ/s1600-h/activeactive.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_oLQ2W8mBOMU/Sx4fopxvFrI/AAAAAAAADoc/Yh9yg3hh8LQ/s320/activeactive.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Load Balancing Cluster (Active/Passive): &lt;/b&gt;Through redundant nodes, eliminates single-point of failure. Good for enterprise application. &amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_oLQ2W8mBOMU/Sx4fsqTCWTI/AAAAAAAADok/2USYZqsb-YE/s1600-h/activepassive.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_oLQ2W8mBOMU/Sx4fsqTCWTI/AAAAAAAADok/2USYZqsb-YE/s320/activepassive.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Computational Cluster/Grid: &lt;/b&gt;Used to build data and compute scalability &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Caching Strategies:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Used for data sharing among service providers to save expensive compute or fetch operations. A middle system is designed to perform all data access for all application. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Process&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Hitting - Check for data &lt;/li&gt;&lt;li&gt;Get - Retrieve data&amp;nbsp;&lt;/li&gt;&lt;li&gt;Cache Miss -&amp;nbsp;&lt;/li&gt;&lt;li&gt;Fetch Data - Get fresh data from DS &lt;/li&gt;&lt;/ol&gt;&lt;/ul&gt;Caching Systems&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Write Policy - Defines the process of keeping a cache more relevent and fresh&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Write-Throught - Write to cache follow to write to DS&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Write-Behind - Write to DS and mark cache entries dirty. Write to cache at hitting dirty. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;No-write Allocation - Just read, no writes to DS.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Application Caching&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Implicit - External system manages all. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Explicit - App manages its own.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Web Caching&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Web Accelarators - External system host heavy resources for access.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Proxy Caches - Caches at proxy for a group.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Distributed Cache&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Allow cached data to be distributed over multiple nodes&lt;/li&gt;&lt;li&gt;Allow uniform access to locate this data &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_oLQ2W8mBOMU/Sx4hHNBkkXI/AAAAAAAADos/WCsk6XMUdto/s1600-h/distributecache.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_oLQ2W8mBOMU/Sx4hHNBkkXI/AAAAAAAADos/WCsk6XMUdto/s320/distributecache.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Redundant System: &lt;/b&gt;A system design where any system component failure is independent of failures in other components. &lt;br /&gt;&lt;b&gt;Fault Tolerant System: &lt;/b&gt;A system design where availability of system does not get effected in the event of hardware or any component failure. This is achieved by software and hardware redundancy.&lt;br /&gt;&lt;b&gt;Fault Detection System/Method: &lt;/b&gt;To provide enough information to isolate the fault and execute a automatic/assisted recovery system. Here are few methods for it. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Built-in Diagnosis&amp;nbsp;&lt;/li&gt;&lt;li&gt;Protocol sniffer &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Sanity Check&amp;nbsp;&lt;/li&gt;&lt;li&gt;Watchdog &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Criticality&lt;/b&gt;: Defines number of consecutive fault picked up by any above method. It should not report every and it should not miss critical one.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;System Performance Testing:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Endurance testing - identifies &lt;b&gt;&lt;i&gt;resource leaks&lt;/i&gt;&lt;/b&gt; under the continuous, expected load.&lt;/li&gt;&lt;li&gt;Load testing – determines the system behavior under&lt;b&gt;&lt;i&gt; a specific load. &lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Spike testing – shows how the system operates in response to &lt;b&gt;&lt;i&gt;dramatic changes&lt;/i&gt;&lt;/b&gt; in load.&lt;/li&gt;&lt;li&gt;Stress testing – identifies the&lt;b&gt;&lt;i&gt; breaking point &lt;/i&gt;&lt;/b&gt;for the application under dramatic load changes for extended periods of time.&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Service Level Agreements: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;System Type&lt;/li&gt;&lt;li&gt;Level of availability - minimum/target&amp;nbsp;&lt;/li&gt;&lt;li&gt;Uptime - Network/Power/Maintenance Window&amp;nbsp;&lt;/li&gt;&lt;li&gt;Serviceability&amp;nbsp;&lt;/li&gt;&lt;li&gt;Performance and metrics &lt;/li&gt;&lt;li&gt;Billing&amp;nbsp;&lt;/li&gt;&lt;li&gt;Fault Tolerance&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;No single point of failure&amp;nbsp;&lt;/li&gt;&lt;li&gt;Fault isolation&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Fault Propagation Containment&amp;nbsp; &lt;/li&gt;&lt;li&gt;Reverse flow &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;System Recommendations &lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Enterprise systems&lt;/li&gt;&lt;ul&gt;&lt;li&gt;A/P fault tolerance&amp;nbsp;&lt;/li&gt;&lt;li&gt;Recovery - fault transparency by diverting services to the passive system and bringing it on-line as soon as possible.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Robotics and life-critical systems -&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Probabilistic, linear model, fault hiding, and optimization control systems. &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Compare - Clustering and Load Balancing&amp;nbsp; &lt;/b&gt;&lt;br /&gt;From deployment viewpoint, your application can be deployed in two manners: Clustered and Load Balanced. Here are comparison between two approaches.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellspacing="0"&gt;&lt;colgroup&gt;&lt;col width="139"&gt;&lt;/col&gt;&lt;col width="338"&gt;&lt;/col&gt;&lt;col width="321"&gt;&lt;/col&gt;&lt;/colgroup&gt;  &lt;tbody&gt;&lt;tr&gt;    &lt;td align="left" height="18" width="139"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td align="left" width="338"&gt;&lt;b&gt;Clustering &lt;/b&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td align="left" width="321"&gt;&lt;b&gt;Load Balancing &lt;/b&gt;&lt;br /&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="left" height="34"&gt;&lt;b&gt;Concept &lt;/b&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td align="left"&gt;To the capability of a software product to provide load-balancing services&lt;br /&gt;&lt;/td&gt;    &lt;td align="left"&gt;To a hardware-based (or at least third-party software) solution. &lt;br /&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="left" height="50"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td align="left"&gt;Master Controller architecture – All server instances act as one unit sharing resource and infrastructure&lt;br /&gt;&lt;/td&gt;    &lt;td align="left"&gt;Autonomas Units achitecture – All server instance as independent units maintaining their own resources and infrassture. &lt;br /&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="left" height="66"&gt;&lt;b&gt;Scalability &lt;/b&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td align="left"&gt;All requests are processed and distributed to a number of instances using industry standard algorithms like round robin, weighted round robin, and least connections.&lt;br /&gt;&lt;/td&gt;    &lt;td align="left"&gt;enables horizontal scalability, that is the ability to add more instances of an application server nearly transparently to increase the capacity or response time performance of an application.&lt;br /&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="left" height="50"&gt;&lt;b&gt;Server Affinity&lt;/b&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td align="left"&gt;To ensure that applications requiring the user interact with the same server based on session. &lt;br /&gt;&lt;/td&gt;    &lt;td align="left"&gt;To ensure that applications requiring the user interact with the same server based on requesting IP. &lt;br /&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="left" height="50"&gt;&lt;b&gt;High Availability (Failover)&lt;/b&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td align="left"&gt;Provide failover at application level process. But contoller remains to be single point of failure for entire system. &lt;br /&gt;&lt;/td&gt;    &lt;td align="left"&gt;Does not provide failover at appliation level process. But provide excellent failover from single point of failure. &lt;br /&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="left" height="113"&gt;&lt;b&gt;Pros &lt;/b&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td align="left"&gt;Generally available as part of an enterprise package for an application server Solution doesn't require a lot of networking skills Generally less expensive than a redundant ADC deployment&lt;br /&gt;&lt;/td&gt;    &lt;td align="left"&gt;Can provide high availability and load balancing across heterogeneous environments Offers additional value such as optimization, security, and acceleration for applications Transparent - doesn't require changes to applications or the servers on which they are deployed&lt;br /&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="left" height="129"&gt;&lt;b&gt;Cons&lt;/b&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td align="left"&gt;High availability is not assured using clustering solutions Best practices dictate the cluster controller be deployed on separate hardware Requires node agents on managed application server instances Clustering is "proprietary" in that you can only cluster homogeneous servers. &lt;br /&gt;&lt;/td&gt;    &lt;td align="left"&gt;Adds another piece of infrastructure to the architecture Generally more expensive than clustering solutions May require a new set of skills to deploy and manage&lt;br /&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;&lt;b&gt; References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://sites.google.com/site/superskstorage/blogger/rc043-010d-scalability_3.pdf?attredirects=0&amp;amp;d=1"&gt;http://sites.google.com/site/superskstorage/blogger/rc043-010d-scalability_3.pdf&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-4216663620517169582?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/4216663620517169582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/10/architect-deployment-considerations.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4216663620517169582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4216663620517169582'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/10/architect-deployment-considerations.html' title='Architect - Deployment Considerations'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_oLQ2W8mBOMU/Sx4fopxvFrI/AAAAAAAADoc/Yh9yg3hh8LQ/s72-c/activeactive.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-1685899317206020737</id><published>2009-10-14T03:03:00.000-07:00</published><updated>2009-11-09T17:32:09.588-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>jBPM brings Virtual machine to BPM</title><content type='html'>&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;SOA offers solutions for EAI and Business Process management and its automation. SOA aggregates three technology to bring forth this offerings.&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Standardized way to expose and access the functionality of applications as services - &lt;b&gt;Web Service &lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Enterprise bus infrastructure for communication and management of services, including message interception, routing, transformation, etc.- &lt;b&gt;ESB&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Specialized language for composition of exposed functionalities of applications into business processes - &lt;b&gt;BPEL&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: small;"&gt;WS and ESB provide infrastructure and system design requirements. Business Process Management (BPM) brings true sense of SOA by allowing collaboration to achieve for business process objective. To enable this, a language needs between &lt;/span&gt;&lt;span style="font-size: small;"&gt;business analysts and technical folks. &lt;/span&gt;&lt;span style="font-size: small;"&gt;BPEL, page flow and jBDL (java Business Definition Language) languages offer &lt;/span&gt;&lt;span style="font-size: small;"&gt;a communication glue between them. But multiple language again throws another problem of interoperability.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_oLQ2W8mBOMU/SuQ_QnyzYaI/AAAAAAAADl4/yKaIYnbWRZY/s1600-h/jbpm_overview_img.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_oLQ2W8mBOMU/SuQ_QnyzYaI/AAAAAAAADl4/yKaIYnbWRZY/s320/jbpm_overview_img.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;JBoss has invented the Process Virtual Machine (PVM) to execute any business process &lt;/span&gt;&lt;span style="font-size: small;"&gt;language to facilitate interoperability. Jboss has named this framework as &lt;b&gt;&lt;i&gt;jBPM&lt;/i&gt;&lt;/b&gt;. &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;jBPM:&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;JBoss jBPM is an open source (LGPL license) framework of Java APIs, tools, and a definition language that can operate as a Web application or a standalone Java application. JBoss jBPM acts as an intermediary between business analysts and developers by giving them a common process definition language referred to as &lt;i&gt;jPDL&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;JBoss jBPM defines process definitions within files written using the JBoss process definition language. jPDL is a graphic-oriented programming (GOP) language based on a model of nodes, transitions, and actions. In this model, nodes are commands executed as they are encountered during the flow of a process definition. Transitions direct the flow of execution of a process definition, and actions perform specific logic as a node or transition event occurs.&lt;br /&gt;&lt;br /&gt;jBPM is encapsulated within the following components:                                               &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Process engine:&lt;/b&gt; This component executes defined process actions, maintains process state, and logs all process events via the following delegate components: &lt;/li&gt;&lt;li style="list-style-image: none; list-style-position: outside; list-style-type: none;"&gt;                            &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A request handler&lt;/li&gt;&lt;li&gt;A state manager&lt;/li&gt;&lt;li&gt;A log manager&lt;/li&gt;&lt;li&gt;A definition loader&lt;/li&gt;&lt;li&gt;An execution service&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Process monitor:&lt;/b&gt; This module tracks, audits, and reports the state of processes as they execute                         &lt;/li&gt;&lt;li&gt;&lt;b&gt;Process language:&lt;/b&gt; The process definition language (jPDL) is based on GOP                         &lt;/li&gt;&lt;li&gt;&lt;b&gt;Interaction services:&lt;/b&gt; These services expose legacy applications as functions or data to be used in process executions&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_oLQ2W8mBOMU/SuQpyoJjCWI/AAAAAAAADlw/AR05J-Ibqyg/s1600-h/jw-0522-jbpm1.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_oLQ2W8mBOMU/SuQpyoJjCWI/AAAAAAAADlw/AR05J-Ibqyg/s320/jw-0522-jbpm1.gif" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;BPEL:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;After setting up web services, now they must communicate and collaborate with each other to fulfill business objective. A business process is a collection of coordinated service invocations and related activities that produce a result, either within a single organization or across several. To implement business process a new language is defined, it is called &lt;b&gt;&lt;i&gt;Business Process Execution Language (BPEL). &lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;BPEL is a process language for service orchestration. It enjoys widespread  industry adoption due to its status as an &lt;a href="http://www.oasis-open.org/"&gt; OASIS&lt;/a&gt; standard. Loosely-coupled integration through &lt;a href="http://www.w3.org/TR/wsdl"&gt;WSDL&lt;/a&gt; interfaces, rich process constructs, robust fault handling and clearly defined extension points are among its  salient features.&lt;br /&gt;&lt;br /&gt;BPEL leverages several XML-based specifications pertaining to the Web services world such as:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;WSDL (Web Services Description Language) 1.1 &lt;/li&gt;&lt;li&gt;XML Schema 1.0 &lt;/li&gt;&lt;li&gt;Web Services Addressing &lt;/li&gt;&lt;li&gt;XPath 1.0 &lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Basic activities&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;table border="1" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt;   &lt;td style="padding: 0in; width: 24%;" valign="top" width="24%"&gt;&lt;div&gt;receive&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="padding: 0in; width: 76%;" valign="top" width="76%"&gt;&lt;div&gt;Blocks until a message is received.&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;reply&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;Sends a message in response to a received message.   Therefore, the combination of a &lt;code&gt;&lt;span style="font-size: 10pt;"&gt;receive&lt;/span&gt;&lt;/code&gt;   and a &lt;code&gt;&lt;span style="font-size: 10pt;"&gt;reply&lt;/span&gt;&lt;/code&gt; forms a   request-response operation on the WSDL &lt;code&gt;&lt;span style="font-size: 10pt;"&gt;portType&lt;/span&gt;&lt;/code&gt;   for the process. &lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;invoke&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;Invokes an operation on a &lt;code&gt;&lt;span style="font-size: 10pt;"&gt;portType&lt;/span&gt;&lt;/code&gt; provided by one of the collaboration partners.   &lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;assign&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;Construct can be used to update the values of variables   with new data.&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;throw&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;Raises a fault for a fault handler to catch within the   defined scope for an activity.&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;terminate&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;Ends the business process explicitly.&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;wait&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;Suspends execution for a given period of time or until   certain time has passed.&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;empty&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;No-operation used for synchronization purposes.&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Structured activities&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;table border="1" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt;   &lt;td style="padding: 0in; width: 24%;" valign="top" width="24%"&gt;&lt;div&gt;scope&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="padding: 0in; width: 76%;" valign="top" width="76%"&gt;&lt;div&gt;Defines a block of activities.&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;sequence&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;Executes a set of activities in an order; i.e., one after   another.&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;flow&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;Executes one or more activities concurrently; i.e.,   parallel processing.&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;while&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;Repeats an activity depending on certain conditions.&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;switch&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;Based on the condition, it chooses between a set of   activities to execute.&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;pick&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;Blocks and waits for a suitable message to arrive or for a   time-out alarm to go off.&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;compensate&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="padding: 0in;" valign="top"&gt;&lt;div&gt;Defines the set of activities that need to be compensated.&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;BPEL Engine Architecture:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://3.bp.blogspot.com/_oLQ2W8mBOMU/StWcCNzPGWI/AAAAAAAADjY/J3wCe1DcybQ/s1600-h/jw-1031-webservices.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_oLQ2W8mBOMU/StWcCNzPGWI/AAAAAAAADjY/J3wCe1DcybQ/s320/jw-1031-webservices.gif" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;  &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;BPEL Characteristics:&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Partners:&lt;/b&gt; Reflects a peer-to-peer relation between the process and each service the process calls.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt; &lt;b&gt;Correlations:&lt;/b&gt; Define a way to identify an application-level conversation within a process instance.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt; &lt;b&gt;Long-lived transactions: &lt;span style="font-weight: normal;"&gt;Support it with its compensation and fault handlers. Also&lt;/span&gt;&lt;/b&gt; called long-running (business) transactions (LRTs).&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Compensating:&lt;/b&gt; Defined within the business process, which tries to reverse the effects based on faults/events                               of a previous activity.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Fault handling:&lt;/b&gt; A fault can be the manifestation of a system error, result from the nonavailability of a Web service due to network instability, or represent an application-specific fault or runtime fault. There are types of  faults: &lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Business faults are application specific and occur either when the                               process engine executes an explicitly defined &lt;code&gt;&lt;throw&gt;&lt;/throw&gt;&lt;/code&gt; activity or when an &lt;code&gt;&lt;invoke&gt;&lt;/invoke&gt;&lt;/code&gt; activity receives a fault in response. &lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Runtime faults are not user defined and do not appear in the WSDL for a process or                               service. &lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Event handling&lt;/b&gt;: It handles two types of events: alarm and message events&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Alarm event &lt;/b&gt;can be alarms that go off after user-defined times. An alarm event occurs at most once while the corresponding scope is active. Events can also be incoming messages that correspond to a request/response or one-way operation in WSDL. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt; &lt;b&gt;Message event &lt;/b&gt;occurs when the appropriate message is received on the specified partner link using the specified port type and operation. When such an event occurs, the corresponding activity is carried out.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Process Life-cycle Repository&lt;/b&gt;: A native XML database provides persistence for all versions of processes and Web services, and also define the right processes for the right kind of applications at runtime using schema versioning and validation features of the database.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Process Monitoring&lt;/b&gt;: XML persistence for business processes is the use of an XML data management system for business process analysis, which can be important in real-world business scenarios.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Number of running/completed instances of processes per week &lt;/li&gt;&lt;li&gt;Number of errors for specific endpoints or partner links for a process &lt;/li&gt;&lt;li&gt;Execution time for a specific process over a period of time &lt;/li&gt;&lt;li&gt;Size of data exchanged per endpoint &lt;/li&gt;&lt;li&gt;Availability or uptime of partner links (uptime) &lt;/li&gt;&lt;li&gt;Average wait time for asynchronous endpoints&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;jPDL: &lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;jPDL (Java Process Definition Language) is an xml written for jBPL processing. Its XML has following major artifacts. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Process instance:&lt;/b&gt; A process instance is one execution of a process definition.                         &lt;/li&gt;&lt;li&gt;&lt;b&gt;Token:&lt;/b&gt; A token is one path of execution. A token is the runtime concept that maintains a pointer to a node in the graph. When a process instance is created, a token is created for the main path of execution. This token is called the process instance's root token and is positioned in the process definition's start state. &lt;/li&gt;&lt;li&gt;&lt;b&gt;Signal:&lt;/b&gt; A signal instructs a token to continue graph execution by transition out of a node.                         &lt;/li&gt;&lt;li&gt;&lt;b&gt;Node:&lt;/b&gt; Nodes are responsible for the continuation of a graph execution. When a token enters a node, the node executes. A node that                            does not propagate execution is regarded as a state.                         &lt;/li&gt;&lt;li&gt;&lt;b&gt;Action:&lt;/b&gt; Actions are instances of Java code executed when events occur in a process execution. The primary event types are "entering                            a node," "leaving a node," and "taking a transition."&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;References:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="font-family: inherit;"&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-07-2006/jw-0710-bpel.html"&gt;BPEL: Service composition for SOA&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-10-2005/jw-1031-webservices.html"&gt;Describe business process activities as Web services&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.jorambarrez.be/blog/category/jbpm/"&gt;&lt;span style="font-size: small;"&gt;Business processes are never finish&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-05-2006/jw-0522-jbpm.html"&gt;Manage your business processes with JBoss jBPM&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.mastertheboss.com/en/jbpm/209-jbpm-4-tutorial-installation.html"&gt;http://www.mastertheboss.com/en/jbpm/209-jbpm-4-tutorial-installation.html&lt;/a&gt; &lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.mastertheboss.com/en/jbpm/186-jbpm-web-application.html"&gt;http://www.mastertheboss.com/en/jbpm/186-jbpm-web-application.html&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.mastertheboss.com/en/jbpm/170-restful-web-services-with-jbpm-gwt-console.html%20"&gt;http://www.mastertheboss.com/en/jbpm/170-restful-web-services-with-jbpm-gwt-console.html&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mastertheboss.com/en/jboss-jbpm/51-jbpm-tutorial-part-1.html"&gt;&lt;span style="font-size: small;"&gt;http://www.mastertheboss.com/en/jboss-jbpm/51-jbpm-tutorial-part-1.html&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.mastertheboss.com/en/jbpm/106-jbpm-best-practices.html%20"&gt;http://www.mastertheboss.com/en/jbpm/106-jbpm-best-practices.html &lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-1685899317206020737?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/1685899317206020737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/10/bpel-for-business-process-logic.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/1685899317206020737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/1685899317206020737'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/10/bpel-for-business-process-logic.html' title='jBPM brings Virtual machine to BPM'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_oLQ2W8mBOMU/SuQ_QnyzYaI/AAAAAAAADl4/yKaIYnbWRZY/s72-c/jbpm_overview_img.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-6045243157059884079</id><published>2009-10-11T09:55:00.001-07:00</published><updated>2011-11-22T19:19:35.078-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Project'/><title type='text'>Project - SOA</title><content type='html'>Planning some hand-one following technology.&amp;nbsp; &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Technology:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;SOA - &lt;/b&gt;ESB, JMS, BPEL, WS, SOAP, WSDL &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;EE - &lt;/b&gt;EJB, MDB, JSF &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;ESB: &lt;/span&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Actions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Established queue communication with Gatewaye listeners - Done &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Tested with JMS client with Gateway listener - Done &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-6045243157059884079?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/6045243157059884079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/10/project-soa.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/6045243157059884079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/6045243157059884079'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/10/project-soa.html' title='Project - SOA'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-4189143522995679072</id><published>2009-10-11T08:20:00.001-07:00</published><updated>2011-11-22T19:19:10.716-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project'/><title type='text'>Project - Java EE</title><content type='html'>Planning for some hands-on following technologies.&amp;nbsp; &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Technology: &lt;/b&gt;Web Service, SOA, EJB, MDB, Session&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Basic EJB beans Development:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Actions:&amp;nbsp; &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Message bean/client with queue communication - Done &lt;/li&gt;&lt;li&gt;Session - Stateless bean - Done &lt;br /&gt;&lt;/li&gt;&lt;li&gt; JPA / hibernate Connection - Done &lt;/li&gt;&lt;li&gt;JSP View with connection to Session bean - Done &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;b&gt;Basic Web Service Development:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Actions: &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;POJO as Web Service using web.xml - Done &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Session - Stateless bean as web service using annotations - Done &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Client connection to WS bean - Pending&amp;nbsp;&lt;/li&gt;&lt;li&gt;Async Web Service - In Progress&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Notes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To choose EJB over POJO for making a WS, EJB wins over due to support of lifecycle and EE infra from containers. &lt;/li&gt;&lt;li&gt;Async processing can be done two ways -&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Polling - Contnious calling service to see if it has finished and can give results. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Callback - Associating an class/method handle to aync service to call at finish/put result.&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;References:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.mastertheboss.com/en/web-interfaces/101-jboss-web-services-part-1.html"&gt;JBoss web services&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;ToDo:&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.mastertheboss.com/en/web-interfaces/111-asynchronous-web-services-with-jboss-ws.html"&gt;Asynchronous web services with JBoss WS&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mastertheboss.com/en/web-interfaces/179-web-services-performance-tuning.html%20"&gt;Web services performance tuning&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mastertheboss.com/en/web-interfaces/159-using-axis-web-services-with-jboss.html"&gt;http://www.mastertheboss.com/en/web-interfaces/159-using-axis-web-services-with-jboss.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mastertheboss.com/en/web-interfaces/172-exposing-ejb-3-as-web-service-on-jboss-5.html"&gt;http://www.mastertheboss.com/en/web-interfaces/172-exposing-ejb-3-as-web-service-on-jboss-5.html &lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-4189143522995679072?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/4189143522995679072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/10/project-java-ee.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4189143522995679072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4189143522995679072'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/10/project-java-ee.html' title='Project - Java EE'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-3538308584977720923</id><published>2009-10-11T06:33:00.001-07:00</published><updated>2011-11-22T19:26:35.035-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java EE'/><title type='text'>Other Concepts - Java</title><content type='html'>&lt;b&gt;Java Concepts:  &lt;/b&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;JNDI (Java Network Directory Interface): &lt;/b&gt;&lt;br /&gt;JNDI is a standard Java API that is bundled with JDK1.3 and higher. JNDI provides a common interface to a variety of existing naming services: DNS, LDAP, Active Directory, RMI registry, COS registry, NIS, and file systems. The JNDI API is divided logically into a client API that is used to access naming services, and a service provider interface (SPI) that allows the user to create JNDI implementations for naming services.&lt;br /&gt;The SPI layer is an abstraction that naming service providers must implement to enable the core JNDI classes to expose the naming service using the common JNDI client interface. An implementation of JNDI for a naming service is referred to as a JNDI provider. JBoss naming is an example JNDI implementation, based on the SPI classes. Note that the JNDI SPI is not needed by J2EE component developers.&lt;br /&gt;&lt;br /&gt;&lt;b&gt; JNP (Java Naming Provider) :&amp;nbsp;&lt;/b&gt;&lt;br /&gt;A way to access the JNDI impl from a provider over network.&lt;br /&gt;&lt;b&gt;JAXB - Java Binding&amp;nbsp; &lt;/b&gt;&lt;br /&gt;??????????&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;br /&gt;SOA Infrastructure: &lt;/b&gt;There are three Major layers in SOA infra. &lt;br /&gt;&lt;b&gt;Core:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;WS-I Profile: Interoperability standard&amp;nbsp; &lt;/li&gt;&lt;li&gt;Protocols: SOAP, UDDI, WSDL&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Platform:&lt;/b&gt;&lt;br /&gt;Existing platform like J2EE, .Net etc are natural adopters to SOA to provide proven infrastructure parameters like scalability, reliability, availability, and performance.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Quality of Service (QoS): &lt;/b&gt;&lt;br /&gt;Just web service implementation for SOA will not be sufficient to satisfy numerous other quality of service standards. Organization for the Advancement of Structured Information Standards (&lt;b&gt;OASIS&lt;/b&gt;) plays very important role in these evolving standard. Here are majors ones:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Security: &lt;/b&gt;Web Service Security&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;Required for credential exchange, message integrity and message confidentiality. SOA advocates existing Security Assertion Markup Language (SAML) standard. &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Reliability: &lt;/b&gt;WS-Reliability and WS-ReliableMessaging&amp;nbsp; &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Relieable message delivery is critical in SOA system to adopt messaging characteristic like once-and-only-once delivery, at-most-once delivery, duplicate message elimination, guaranteed message delivery, and acknowledgment. &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Policy: &lt;/b&gt;WS-Policy&lt;/li&gt;&lt;ul&gt;&lt;li&gt;provides a standard way to defined provider Policy assertions. &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Orchestration: &lt;/b&gt;BPEL4WS or WSBPEL (Web Services Business Process Execution Language)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Provides a standard to integrate enterprise data, applications and components. It involves process requirements, such as asynchronous communication, parallel processing, data transformation, and compensation. &amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Management: &lt;/b&gt;Web Services                         for Distributed Management (WSDM) &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Provides a standard for System Administrators to manage enterprise infrastructure to run expending services in a heterogeneous environments.&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Vendors Offering &lt;/b&gt;&lt;b&gt;Components: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;JBoss - personal favorite &lt;br /&gt;&lt;/li&gt;&lt;li&gt;IBM&lt;/li&gt;&lt;li&gt;HP&amp;nbsp;&lt;/li&gt;&lt;li&gt;Oracle&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Spring Philosophy&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Spring is JEE programming in XML. It is new evolutionary way of programming where your business logic is the only thing written in Java, apart from that everything related JEE written in XML files. I think the way it is going, it looks like after sometime, business analyst will be able to write CRM/ERP application by them self. But I endorse this, reason, all technology is about solving business problem and if it can solve these problem by tooling a BA, nothing beats it.&lt;br /&gt;&lt;br /&gt;Another thing which I like about Spring its "wiring" concept. What it does basically, it lets architect define different structure, layout and interfaces of component of your house but leaving it open to house owner to pick and choose what connects to what depending on suitability of owner's budget and taste. This is also called Dependency Injection or Inversion of Control.&lt;br /&gt;&lt;br /&gt;In past, house management was a dedicated responsibility of one or two family persons who are supposed to do all the work as and when required. But in today's busy life, it is all about outsourcing to specialist. Take an example, maid service, they are specialized to many house hold work, our job would to schedule them at right place. Main your context to service at join point. This is what we call Aspect Oriented Programming.&lt;br /&gt;Java Impl - Big Error Recording&lt;br /&gt;&lt;h2&gt;Entity EJB App:&lt;/h2&gt;&lt;b&gt;Issue: &amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Runtime Exception: &lt;/b&gt;&lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;11:46:34,493 ERROR [STDERR] &lt;/span&gt;&lt;u&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;javax.ejb.EJBException&lt;/span&gt;&lt;/u&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;: &lt;/span&gt;&lt;u&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;java.lang.IllegalArgumentException&lt;/span&gt;&lt;/u&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;: &lt;/span&gt;&lt;u&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;org.hibernate.hql.ast.QuerySyntaxException&lt;/span&gt;&lt;/u&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;: Player is not mapped [from Player]&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;Solution: &lt;/b&gt;&lt;br /&gt;HQL – Keeping the name of table; Replaced it with Bean name. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Issue: &lt;/b&gt;&lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;Issues:Unexpected token: AUTO_INCREMENT in statement [create table Player (playerId bigint not null auto_increment]&lt;/span&gt;&lt;br /&gt;Solution: &lt;br /&gt;It is targeting local Hypersonic DB and that does not support auto-increament. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Issue: &lt;/b&gt;&lt;br /&gt;EntityManager was not loading due to a change in Datasource name. Hibernate connection &lt;br /&gt;&lt;b&gt;Solution: &lt;/b&gt;&lt;br /&gt;Datasource file (sss-ds.xml) needs to be in server/deploy directory. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Issue:&lt;/b&gt;&lt;br /&gt;Exception in thread "main" javax.xml.ws.WebServiceException: Undefined port type: {&lt;a href="http://ws.tennisocial.com/%7DPlayerInfo"&gt;http://ws.tennisocial.com/}PlayerInfo&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Solution: &lt;/b&gt;&lt;br /&gt;Check the targetNamespace for forward slash.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-3538308584977720923?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/3538308584977720923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/10/other-concepts-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3538308584977720923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/3538308584977720923'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/10/other-concepts-java.html' title='Other Concepts - Java'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-13745095928517128</id><published>2009-10-10T11:10:00.000-07:00</published><updated>2009-12-08T23:02:59.206-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>SOA Design Principals</title><content type='html'>&lt;b&gt;Approaches:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Top Down Approach: &lt;/b&gt;Business Requirement Driven Development&amp;nbsp; &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Bottom Up Approach: &lt;/b&gt;Existing Technology Driven Development&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Legacy System Integration Approach: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Identify discrete elements within your legacy applications and "wrap" them in standards-based interfaces and use them as services within your SOA.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Basic Elements&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;&lt;b&gt;Contract &lt;/b&gt;&lt;/i&gt;is an agreement between two or more parties. It defines the protocol how client should communicate with your service. Technically, it describes parameters and return values for a method. &lt;/li&gt;&lt;li&gt;An &lt;b&gt;&lt;i&gt;Address &lt;/i&gt;&lt;/b&gt;indicates where we can find this service. Address is a URL, which points to the location of the service.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Bindings &lt;/i&gt;&lt;/b&gt;determine how this end can be accessed. It determines how communications is done. For instance, you expose your service, which can be accessed using SOAP over HTTP or BINARY over TCP. So for each of these communications medium two bindings will be created.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Service and its components: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Services are logical grouping of components&lt;/i&gt;&lt;/b&gt; to achieve business functionality. Components are implementation approaches to make a service. The components can be in JAVA, C#, C++ but the services will be exposed in a general format like Web Services.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Composite of Service:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Composition is the process by which services are combined to produce composite applications or composite services. A composite application consists of the aggregation of services to produce an enterprise portal or enterprise process. A composite service consists of an aggregation of services that produces another reusable service. &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Design  Principals: &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;&lt;b&gt;Loosely coupled service &lt;/b&gt;&lt;/i&gt; encapsulates  the service functionalities in a manner that limits the impact of changes to the implementation on the service interface. One strategy for achieving loose coupling is to use the service interface (the WSDL for a SOAP Web Service) to limit this dependency, hiding the service implementation from the consumer.&lt;/li&gt;&lt;li&gt;&lt;i&gt;&lt;b&gt;Reusable service&lt;/b&gt;&lt;/i&gt; is an autonomous, reusable, discoverable, stateless functionality that has the necessary granularity, and can be part of a composite application or a composite service. It should be identified with a business activity described by the service specifications (design-time contract).&lt;/li&gt;&lt;li&gt;&lt;i&gt;&lt;b&gt;Stateless Service&lt;/b&gt;&lt;/i&gt; is core to SOA design principles.&amp;nbsp; It may have a context within its stateless execution, but it will not have an intermediary state waiting for an event or a call-back. The retention of state-related data must not extend beyond a request/response on a service. This is because state management consumes a lot of resources, and this can affect the scalability and availability that are required for a reusable service.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Mediator service &lt;/i&gt;&lt;/b&gt;will take loose coupling to the highest level. The Mediation pattern, using an enterprise service bus (ESB), will help in achieving this. It will establish independence between consumers and providers on all levels, including message formats, message types (including SOAP, REST, XML, binary) and transport protocols (including HTTP, HTTPS, JMS).  Architecturally speaking this means the separation of concerns between consumers and providers on the transport, message type, and message format levels. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;ESB as a SOA Solution &lt;/b&gt;&lt;br /&gt;The Enterprise Service Bus is a core element of any SOA. ESBs provide the "any to any" connectivity between services within your own company, and beyond your business to connect to your trading partners. But SOA does not stop at just implementing an ESB. Depending on what your goals are, you may want to use an ESB to connect other services within your SOA such as information services, interaction services and business process management services. Additionally, you will need to consider development services and IT service management services. The SOA reference architecture can help you lay out an SOA environment that meets your needs and priorities. The ESB is part of this reference architecture and provides the backbone of an SOA but it should not be considered an SOA by itself.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Action Pipeline: &lt;/b&gt;&lt;br /&gt;A service in JBossESB is defined a list of Action classes that process an ESB Message in a sequential manner. This list of Action classes is referred to as an &lt;b&gt;Action Pipeline&lt;/b&gt;. A Service can define a list of Listeners, which act as inbound routers for the Service, routing messages to the Action Pipeline. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_oLQ2W8mBOMU/StDNvzuzg7I/AAAAAAAADjQ/GFCGoS95Kh4/s1600-h/soaarch-2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_oLQ2W8mBOMU/StDNvzuzg7I/AAAAAAAADjQ/GFCGoS95Kh4/s320/soaarch-2.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Two forms of listeners:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;&lt;b&gt;Gateway Listeners:&lt;/b&gt;&lt;/i&gt; These listener configurations configure a Gateway Endpoint. These Endpoint types can be used to get messages onto an ESB bus. It is responsible for adapting the message payload by wrapping it into an ESB Message before shipping it to the Service's Action Pipeline.&lt;/li&gt;&lt;li&gt;&lt;i&gt;&lt;b&gt;ESB Aware Listeners:&lt;/b&gt;&lt;/i&gt; These listener configurations configure an ESB Aware Endpoint. These Endpoint types are used to exchange ESB Messages between ESB Aware components i.e. exchanging messages on the bus.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;References&lt;/b&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.mastertheboss.com/en/soa-a-esb/78-jboss-esb.html"&gt;http://www.mastertheboss.com/en/soa-a-esb/78-jboss-esb.html&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-13745095928517128?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/13745095928517128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/10/soa-design-principals.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/13745095928517128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/13745095928517128'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/10/soa-design-principals.html' title='SOA Design Principals'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_oLQ2W8mBOMU/StDNvzuzg7I/AAAAAAAADjQ/GFCGoS95Kh4/s72-c/soaarch-2.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-4555161438077515779</id><published>2009-10-03T08:34:00.000-07:00</published><updated>2009-11-09T18:51:39.078-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>JBoss ESB - Right Answer to SOA</title><content type='html'>Just finished watching presentation from  Mark Little presentation at Devoxx 08. It was quite knowledgeable session to know everything about SOA and JBoss ESB offerings. Here is my understanding of their platform.&lt;br /&gt;&lt;br /&gt;Choice of ESB as a strategy for SOA has many reasoning:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Everything in ESB is service&amp;nbsp;&lt;/li&gt;&lt;li&gt;All services are message driven.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Message are contract between client and server.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Message are transport and carrier independent &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;ESB Messages:&lt;/b&gt;&lt;br /&gt;Provides two types of communications.  One way and Request/Response. ESB message has appropriate mapping with SOAP messages &lt;br /&gt;&lt;ul&gt;&lt;li&gt;SOAP Message - Attachment/Body/Context/Header &lt;/li&gt;&lt;li&gt;ESB Message - Payload/Payload/Session/Routing &lt;/li&gt;&lt;/ul&gt;These message representation can be tailored on the wire appropriately. XML is preferred choice as it keeps the parties decoupled. But Java serialization can be considered but it violates SOA of tech decoupling principles.&amp;nbsp; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Each message&amp;nbsp;&lt;/li&gt;&lt;li&gt;WS-address - EPR&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Message Protocol - Req/Req or One way&amp;nbsp;&lt;/li&gt;&lt;li&gt;Reply address - EPR&amp;nbsp;&lt;/li&gt;&lt;li&gt;Message Relationship info&amp;nbsp;&lt;/li&gt;&lt;li&gt;Fault Address&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Proposed SOA solution around JBoss ESB:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_oLQ2W8mBOMU/SsbOSTGlnRI/AAAAAAAADf8/kmSBFpSP4i4/s1600-h/soaarch.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_oLQ2W8mBOMU/SsbOSTGlnRI/AAAAAAAADf8/kmSBFpSP4i4/s400/soaarch.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;JBoss Components in SOA solution &lt;/b&gt;&lt;br /&gt;There is nothing like &lt;i&gt;&lt;b&gt;SOA Product&lt;/b&gt;&lt;/i&gt; but it is a collection components. JBoss has thrown his R**Hat into the ring with their collection, but I must admit it is impressive. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;JBoss ESB &lt;/li&gt;&lt;li&gt;Drools&lt;/li&gt;&lt;li&gt;JBossWS&lt;/li&gt;&lt;li&gt;JBossTS&lt;/li&gt;&lt;li&gt;JBoss Messaging&lt;/li&gt;&lt;li&gt;jBPM&amp;nbsp;&lt;/li&gt;&lt;li&gt;JBossAS + Hibernate&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Three part to complete SOA solution. &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Event Listener and Actions - To provide transport mediation &lt;/li&gt;&lt;li&gt;Pluggable Architeture - To integrate infrastructure services &lt;/li&gt;&lt;li&gt;Business Services - To implement business logic to run in a container or standalone.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Event Listener and Actions: &lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Transport&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;There is a wide variety transport support to bring a service request in and out.&amp;nbsp; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;    FTP/EMail &lt;/li&gt;&lt;li&gt;JMS&lt;/li&gt;&lt;li&gt;SQL/DB/Hibernate &lt;/li&gt;&lt;li&gt;SOAP&lt;/li&gt;&lt;li&gt;Socket &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Pluggable Architeture:&lt;/b&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;&lt;service, eprs=""&gt;Content Based Routing &lt;/service,&gt;(CBR)&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;CBR is an intermediate service which can redirect message based on content and rules set for them. It allows the federation of services by routing the right request to right service. Also provides the fault tolerance by filtering and applying the rules before passing it to the service. CBR can also provide status about availability of  web service in system and apply rules to route further requests.&lt;br /&gt;&lt;i&gt;JBoss ESB Support - JBossRules/Xpath&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;&lt;service, eprs=""&gt;  Message Transformation &lt;/service,&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;b&gt;&lt;service, eprs=""&gt;&lt;/service,&gt;&lt;/b&gt;In enterprise, different services can communicate in different vocabularies and languages. And each service may not want to handle this translation so it becomes important to  abstract this transformation at infra level. It also allow greater decoupling and standardization in service implementation. . &amp;nbsp; &lt;br /&gt;&lt;i&gt;JBoss ESB Support: &lt;/i&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Transformation Tool - XSLT/Smooks &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt; Added &lt;/i&gt;&lt;i&gt;Graphical &lt;/i&gt;&lt;i&gt;Transformation Tool &lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;&lt;b&gt;Security - Identity Management&amp;nbsp;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;With maturity in SOA architecture, security becomes another important criteria for adaptation. Authentication and authorization is provided at method and service level accesses. &lt;service, eprs=""&gt;It is driven by policy based  service registration.&amp;nbsp; &lt;br /&gt;&lt;/service,&gt;&lt;br /&gt;&lt;i&gt;&lt;service, eprs=""&gt;JBoss ESB Support - OpenSSL and more on the way &lt;/service,&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Management - Governance&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;Governance is biggest challenge in distributed env due mutli-party involvement to agree on types of contract and SLAs as well as no one party control on infra and no notion of trust. Governance  involves decision at org level about failures, network partitioning etc. ESB needs to monitor and manage all the activities on bus to regulate them on agreed protocol and standards. &lt;br /&gt;&lt;i&gt;JBoss ESB - Provide JBoss Organization Network console &lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Service Registry &lt;/b&gt;&lt;/i&gt;&lt;br /&gt;Registry is a place to register and look-up for all available service.  Each service is associated with their EPR (EndPoint Ref). &lt;service epr="" name,=""&gt; . One service can have multiple registration which translates to multiple EPR for a service. This is a practice to do load balancing and addressing wide variety of clients.&amp;nbsp;&lt;/service&gt;&lt;br /&gt;&lt;i&gt;JBoss ESB - jUDDI service&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;i&gt;&lt;b&gt;Message Store&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;Message store records ESB messages  for audit trail, debuging and replay purposes. This may look like extra load but sometime necessary when local laws enforce this requirement for audits and tracking. Backend of this store can be any database as it has been designed using JCA adopter. &lt;br /&gt;&lt;i&gt; JBoss ESB - JDBC adopter&amp;nbsp; &lt;service, eprs=""&gt;&lt;/service,&gt;&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;i&gt;&lt;b&gt;Orchestration Engine &lt;/b&gt;&lt;/i&gt;&lt;br /&gt;Orchestration engine makes web services to collaborate with each other to achieve SOA objectives. BPEL(Business Process Execution Language) is an XML-based language for process interaction between Active Endpoints in distributed env like ESB  A BPEL process consists of activities. It controls the invocation of services as messages flow through the infra. BPEL supports primitive and structure activities. Primitive activities represent basic constructs and are used for common tasks, such as those listed below: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Invoking Web services, using &lt;code&gt;&lt;invoke&gt;&lt;/invoke&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Waiting for the request, using &lt;code&gt;&lt;receive&gt;&lt;/receive&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Manipulating data variables, using &lt;code&gt;&lt;assign&gt;&lt;/assign&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Indicating faults and exceptions, using &lt;code&gt;&lt;throw&gt;&lt;/throw&gt;&lt;/code&gt;, etc.                         &lt;/li&gt;&lt;/ul&gt;&lt;i&gt;JBoss ESB - Support jBPL(graphical tool) and WS-BEPL &lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;i&gt;&lt;service, eprs=""&gt;&lt;b&gt; Process Store - Repository&amp;nbsp; &lt;/b&gt;&lt;/service,&gt;&lt;/i&gt;&lt;br /&gt;It is a federated repository of service metadate which is important for contract definitions for governance. viewpoint.It stores message structure and service binaries. &lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Event Notification&lt;/b&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;System can receive notification from external component to trigger a service or an event as well it can generate to notify external partners about system events.&lt;br /&gt;&lt;i&gt;Jboss ESB Supported -  FTP/Email&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Custom Action&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;From infrastructure viewpoint, designers still want extra set of action and behaviors. Custom Action can be applied to any communication done using BPEL or through CBR.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Business Services:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Business logic and front end application cant be a part of ESB solution. It stays in Application/Web Servers and interface with ESB with adopters.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;service, eprs=""&gt;&lt;/service,&gt;&lt;br /&gt;JBoss ESB can be deployed in three ways. &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;JBoss ESB Server &lt;br /&gt;&lt;/li&gt;&lt;li&gt;JBoss ESB + Existing Application server&lt;/li&gt;&lt;li&gt;JBoss ESB Standalone &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;service, eprs=""&gt; &lt;/service,&gt;&lt;br /&gt;&lt;b&gt;Conclusion&lt;/b&gt;&amp;nbsp; &lt;br /&gt;&lt;i&gt;JBoss SOA solution brings a comprehensive Message Oriented, Loosely Coupled, Course Grained and Contract Based solution with Sync/Async Invokable, Reusable suitable and Orchestrable web services. &lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;&lt;service, eprs=""&gt;References:&amp;nbsp;&lt;/service,&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;service, eprs=""&gt;&lt;a href="http://www.parleys.com/display/PARLEYS/Home#slide=32;talk=35651588;title=The%20JBoss%20SOA%20Platform"&gt;Mark Little Presentation at Devoxx 08&lt;/a&gt;&lt;/service,&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://labs.jboss.com/jbossesb"&gt;Jboss esb&amp;nbsp;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.parleys.com/display/PARLEYS/Home#slide=27;talk=8186;title=Open%20Source%20SOA%20"&gt; Open Source SOA &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.parleys.com/display/PARLEYS/Home#slide=1;talk=16285764;title=SOA%20Development%20using%20JBossESB"&gt;SOA Development using JBossESB&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/web/library/wa-soaesb/"&gt;http://www.ibm.com/developerworks/web/library/wa-soaesb/&lt;/a&gt; (ToDo)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9175922468413083208-4555161438077515779?l=saurabhkaushikin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurabhkaushikin.blogspot.com/feeds/4555161438077515779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/10/jboss-esb-right-answer-to-soa.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4555161438077515779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9175922468413083208/posts/default/4555161438077515779'/><link rel='alternate' type='text/html' href='http://saurabhkaushikin.blogspot.com/2009/10/jboss-esb-right-answer-to-soa.html' title='JBoss ESB - Right Answer to SOA'/><author><name>Saurabh Kaushik</name><uri>http://www.blogger.com/profile/06079349267053642609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_oLQ2W8mBOMU/ShV9jBZ6zuI/AAAAAAAABuw/nU7k6psoKDM/S220/Image(501).jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_oLQ2W8mBOMU/SsbOSTGlnRI/AAAAAAAADf8/kmSBFpSP4i4/s72-c/soaarch.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9175922468413083208.post-5212250471245895413</id><published>2009-09-29T02:48:00.001-07:00</published><updated>2011-11-22T19:26:41.190-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mobile'/><title type='text'>Java ME and my exp</title><content type='html'>I have been associated with Android for last six months. Wanted to know why original Samurai who brought Java to mobile platform lost the game. Here is my understanding of Java ME as developer platform.&lt;br /&gt;&lt;br /&gt;Java ME, first released in 1998, was design to run in constrained processing, memory and screen size (or even without it) for the purpose of running it on setup box, mobile phone etc.&lt;br /&gt;&lt;br /&gt;Developing application on this platform requires many changes approach from traditional server/desktop app development. Few of them would be:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Java ME Stack:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Java ME has two main components for application development.&lt;br /&gt;&lt;b&gt;Profile: &lt;/b&gt;&lt;br /&gt;There are two type of profile:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Configuration:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;CDC - Connected Device Configuration &lt;br /&gt;&lt;/li&gt;&lt;li&gt;CDLC - Connected Device Limited Configuration &lt;/li&gt;&lt;/ul&gt;CDC is super-set &lt;br /&gt;&lt;b&gt;Virtual Machine: &
