<?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-647873832741754631</id><updated>2012-01-24T07:21:30.491-08:00</updated><category term='SOAP'/><category term='Map'/><category term='SaaS'/><category term='JAX-RPC'/><category term='ETL'/><category term='SAAJ'/><category term='Cloud Computing'/><category term='Server Migration'/><category term='JAXB'/><category term='ESB'/><category term='BI'/><category term='Java Rich Client'/><category term='JAX-WS'/><category term='Data Warehouse'/><category term='DB Migration'/><category term='Oracle RAC'/><category term='SOA'/><category term='Tech Forum'/><category term='Web Service'/><category term='BPEL'/><category term='Enterprise Architecture'/><title type='text'>Li Hai Tao's Blog</title><subtitle type='html'>PMP,SCEA &amp;amp; TOGAF 8 Certified Enterprise Architect, Vice Chair of Professional Development, SPMI. Many years of experience in enterprise application implementation &amp;amp; solution for insurance &amp;amp; financial company and government agencies. Extensive project and team management experience including project &amp;amp; resource monitoring and map resource and project timeline to assure smooth and successful project execution and closure. My interest is on Cloud Computing, SOA, CMS and Open Source.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>79</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-7180225126093474989</id><published>2011-06-08T19:14:00.000-07:00</published><updated>2011-06-08T19:22:39.803-07:00</updated><title type='text'>Oracle Universal Content Management (UCM) aka Stellent</title><content type='html'>Original post from &lt;a href="http://www.club-oracle.com/articles/oracle-universal-content-management-ucm-aka-stellent-242/"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Oracle Universal Content management or UCM is what was erstwhile Stellent Content Server. It is an enterprise wide content management, revisioning and controlling system. &lt;br /&gt;&lt;br /&gt;In layman's terms the idea is to organize the documents of your company on a central server maintaining informations (metadata) about the documents and tracking the progress of the documents through revisioning and version control. Users would be able to upload (check in) documents based on their permission levels (through security groups and accounts) and before the document is released for everyone to view and download (check out), an approval heirarchy (workflow) can be set. &lt;br /&gt;&lt;br /&gt;This simple concept brings in an amazing level of order in the chaos that can be in an enterprise's document management requirements. &lt;br /&gt;&lt;br /&gt;Other than simply checking in and checking out documents, the list of functionalities that come with UCM are manyfold. Your companies website can be hosted through UCM where users simply check in their contribution as word documents and instantly the content appears on the website in a predefined template. Project documents of your company are handled by Collaboration Projects component of UCM where "on the fly" access and document management can be handled.&lt;br /&gt;&lt;br /&gt;This brings me to the important part of components in UCM (stellent). UCM is an extensible content management system which means that through installing custom components, functionalities can be added or modified. Notable components are folders, dynamic convertor, pdf convertor, threaded discussions, collaboration projects, extranetLook, folios etc and many others.&lt;br /&gt;&lt;br /&gt;Architecture of Stellent or Universal Content Management&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-1RpA5b5jr-U/TfAtE6S4ZSI/AAAAAAAAAHQ/3FFErPGJBSY/s1600/basic_architecture.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 216px; height: 320px;" src="http://2.bp.blogspot.com/-1RpA5b5jr-U/TfAtE6S4ZSI/AAAAAAAAAHQ/3FFErPGJBSY/s320/basic_architecture.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5616038297722184994" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Main players in the working of UCM are&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Web Browser&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;A user interacts with the content server through a web browser. Even though through the Desktop Integration Component (DIS) windows explorer can be used as an interface, however the simple web browser is the default interface. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Web Server&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Obviously, a web server will be handling the request sent by the web browser to the content server. Microsoft IIS, Apache, Oracle iAS can all be used as a web server of choice. Installing with IIS is actually the easiest.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Content Server&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Content Server is the core service which provides all the functionalities. At it's core Content Server consists of Java Applications that require a Java Runtime environment installed on your server.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Vault and Web Layout&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;When users check-in content, they are stored in a folder on the server called vault in their "native format". However, if you have installed the dynamic convertor a web layout directory stores the html conversions of your native files.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Search Index and Search Engine&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Searching is the most useful and the most necessary feature of the content server. Users can search for content by querying on the metadata or use a Full Text Searching provided you have dynamic convertor installed.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Oracle Database&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Oracle UCM runs on DB2, Microsoft SQL server in addition to Oracle. When installing UCM you will need to create a user for Content Server to use to connect to the database. &lt;br /&gt;&lt;br /&gt;So these were the principal components of Oracle UCM. An image is attached which shows gives a graphical representation of the architecture.&lt;br /&gt;&lt;br /&gt;To get to know more, read following documents on &lt;a href="http://www.club-oracle.com/forums/oracle-ucm-stellent-site-studio-documentation-t683/"&gt;Club-Oracle&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;•Oracle UCM or stellent Beginner's Documents and tutorials&lt;br /&gt;•Installing Stellent or Oracle Universal Content Management&lt;br /&gt;•Steps to install Site Studio and other components&lt;br /&gt;•How to create a Dependent Choice list in Oracle UCM (Stellent)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-7180225126093474989?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/7180225126093474989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=7180225126093474989' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7180225126093474989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7180225126093474989'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2011/06/oracle-universal-content-management-ucm.html' title='Oracle Universal Content Management (UCM) aka Stellent'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-1RpA5b5jr-U/TfAtE6S4ZSI/AAAAAAAAAHQ/3FFErPGJBSY/s72-c/basic_architecture.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-6211763470785588834</id><published>2011-05-25T00:48:00.000-07:00</published><updated>2011-05-25T00:50:26.639-07:00</updated><title type='text'>Hyperion Reporting and Analysis Architecture</title><content type='html'>Various components of Hyperion (&lt;a href="http://businessintelligencedw.blogspot.com/2008/07/hyperion-reporting-and-analysis.html"&gt;source&lt;/a&gt;):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-TcTN--fla-Q/TdyzCxGQqJI/AAAAAAAAAB8/UIKP0uGo5os/s1600/Hyperion_Architecture.bmp"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5610556095917500562" border="0" alt="" src="http://2.bp.blogspot.com/-TcTN--fla-Q/TdyzCxGQqJI/AAAAAAAAAB8/UIKP0uGo5os/s400/Hyperion_Architecture.bmp" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Workspace is a common window to view the contents of all Hyperion components.&lt;br /&gt;Hyperion Reporting and Analysis:&lt;br /&gt;&lt;br /&gt;One zero-footprint Web-based thin client provides users with access to content:&lt;br /&gt;● Financial reporting for scheduled or on-demand highly formatted financial and operational reporting from most data sources including Hyperion Planning – System 9 and Hyperion Financial Management – System 9&lt;br /&gt;● Interactive reporting for ad hoc relational queries, self-service reporting and dashboards against ODBC data sources&lt;br /&gt;● SQR Production reporting for high volume enterprise-wide production reporting.&lt;br /&gt;● Web analysis for interactive ad hoc analysis, presentation, and reporting of multidimensional data.&lt;br /&gt;&lt;br /&gt;Hyperion Reporting and Analysis Architecture&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-WJbLHRB7k5Y/Tdyzl7YL8lI/AAAAAAAAACE/RrEBko6teE0/s1600/detail-architecture.bmp"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 302px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5610556699972465234" border="0" alt="" src="http://1.bp.blogspot.com/-WJbLHRB7k5Y/Tdyzl7YL8lI/AAAAAAAAACE/RrEBko6teE0/s400/detail-architecture.bmp" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Client: The client tools consist of&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Workspace: It is a DHTML Zero footprint web client and provide the user interface for viewing and interacting with the reports created using Authoring studios.&lt;br /&gt;Authoring Studios: These are the client interfaces to create the reports and includes-&lt;br /&gt;&lt;br /&gt;(a) Hyperion Interactive Reporting Studio: Windows client where you can connect to different data sources including the flat files and build very interactive presentation reports like reports in simple tabular format, pivot reports, graphs and charts with drill anywhere feature which means that you don’t have to define the hierarchy or drill path and slicing and dicing and Dashboards with many features like hyperlinks to the details reports and embedded browser which can be used to view any other web application to open within the Dashboards.&lt;br /&gt;&lt;br /&gt;(b) Hyperion Financial Reporting Studio: Windows client where you can connect to the multidimentional data sources and create highly formatted financial reports by simply dragging and dropping rows and columns and defining page breaks.&lt;br /&gt;&lt;br /&gt;(c) Hyperion SQR Reporting Studio: Windows client where you can connect to wide range of data sources and produce high volume pixel perfect operational reports and can be scheduled.&lt;br /&gt;&lt;br /&gt;(d) Hyperion Web Analysis: Java applet where you can connect to different data sources using JDBC and build interactive reports and dashboards.&lt;br /&gt;Smart view for office: This is a tight integration with Microsoft Office tools where ou can do analysis like drill downs, keep only and remove only options, POV manager, data refresh, copying data cells and pasting to MS Word and Powerpoint which automatically gets refreshed if the data changes in the source etc. There is one more component in smart wiew which is Hyperion Visual Explorer(HVE), where again you can view the data in presentable interactive graphs and charts.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Application Layer: It consists of two parts :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. Web Tier: It consists of two parts (a) Web server- to send and receives content from the web clients. (b) Application server- it is a J2EE application server.&lt;br /&gt;Web server and application server are connected using an HTTP connector.&lt;br /&gt;The web Tier hosts the web applications like workspace, web analysis, interactive , SQR and financial reporting applications.&lt;br /&gt;&lt;br /&gt;2. Services Tier: It contains services and servers that controls the functionality of the web applications and clients. Core services handles repository information, authorization, session information, documents publication.&lt;br /&gt;&lt;br /&gt;More to read:&lt;br /&gt;&lt;br /&gt;http://www.youtube.com/watch?v=j5REDY8cpiM&amp;NR=1&lt;br /&gt;http://download.oracle.com/docs/cd/E12032_01/doc/nav/portal_1.htm&lt;br /&gt;http://businessintelligence.ittoolbox.com/groups/technical-functional/hyperion-admin-l/ir-92-hyperion-biservice-is-not-accessible-1543368&lt;br /&gt;http://businessintelligence.ittoolbox.com/groups/technical-functional/brio-l/hyperion-system-93-adding-additional-bi-service-memory-exhausted-4039255&lt;br /&gt;http://businessintelligence.ittoolbox.com/groups/technical-functional/brio-l/active-x-client-hyperion-931-out-of-memory-on-db2-2288146&lt;br /&gt;http://businessintelligence.ittoolbox.com/groups/technical-functional/brio-l/hyperion-out-of-memory-error-2099199&lt;br /&gt;http://businessintelligence.ittoolbox.com/groups/technical-functional/hyperion-bi-l/hyperion-designer-85-out-of-memory-for-large-queries-1332854&lt;br /&gt;http://essbase.ru/archives/wiki/obiee-11gr1-architecture-and-use-of-weblogic-server&lt;br /&gt;https://www.packtpub.com/toc/business-analysts-guide-oracle-hyperion-interactive-reporting-11-table-contents&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-6211763470785588834?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/6211763470785588834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=6211763470785588834' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/6211763470785588834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/6211763470785588834'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2011/05/hyperion-reporting-and-analysis.html' title='Hyperion Reporting and Analysis Architecture'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-TcTN--fla-Q/TdyzCxGQqJI/AAAAAAAAAB8/UIKP0uGo5os/s72-c/Hyperion_Architecture.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-1215667600464734774</id><published>2011-05-23T00:44:00.000-07:00</published><updated>2011-05-23T01:11:26.588-07:00</updated><title type='text'>Portlets &amp; Portal</title><content type='html'>&lt;a href="http://www.developer.com/print.php/3366111"&gt;Introduction&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.slideshare.net/holdorph/developing-jsr-286-portlets"&gt;JSR 168 Vs JSR 286 &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.novell.com/documentation/extend52/Docs/help/Director/books/pgPortletsAbout.html#1050954"&gt;Portlets Vs Servlets&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Portlet Lifecycle&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-GRKVeK24BYY/TdoWIbAX_iI/AAAAAAAAAG0/i_mHnlpGNt0/s1600/TEMPLATE_image002.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 241px;" src="http://1.bp.blogspot.com/-GRKVeK24BYY/TdoWIbAX_iI/AAAAAAAAAG0/i_mHnlpGNt0/s320/TEMPLATE_image002.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5609820619787468322" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-1215667600464734774?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/1215667600464734774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=1215667600464734774' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1215667600464734774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1215667600464734774'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2011/05/portlets-portal.html' title='Portlets &amp; Portal'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-GRKVeK24BYY/TdoWIbAX_iI/AAAAAAAAAG0/i_mHnlpGNt0/s72-c/TEMPLATE_image002.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-7067165039515896131</id><published>2011-05-19T03:30:00.000-07:00</published><updated>2011-05-19T03:37:20.987-07:00</updated><title type='text'>Penetration Test and Scanner Benchmark</title><content type='html'>Introduction (source from &lt;a href="http://www.penetration-testing.com/"&gt;Corsaire&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Penetration testing is an often confused term. Through this guide Corsaire, a world leader in information security, provides a broad overview of what it means, why you would want it, and how to get the most out of the process. &lt;br /&gt;&lt;br /&gt;What is a penetration test?&lt;br /&gt;Why conduct penetration testing?&lt;br /&gt;What can be tested?&lt;br /&gt;What should be tested?&lt;br /&gt;What do you get for the money?&lt;br /&gt;What to do to ensure the project is a success&lt;br /&gt;What is a penetration test?&lt;br /&gt;Much of the confusion surrounding penetration testing stems from the fact it is a relatively recent and rapidly evolving field. Additionally, many organisations will have their own internal terminology (one man's penetration test is another's vulnerability audit or technical risk assessment). &lt;br /&gt;&lt;br /&gt;At its simplest, a penetration-test (actually, we prefer the term security assessment) is the process of actively evaluating your information security measures. Note the emphasis on 'active' assessment; the information systems will be tested to find any security issues, as opposed to a solely theoretical or paper-based audit. &lt;br /&gt;&lt;br /&gt;The results of the assessment will then be documented in a report, which should be presented at a debriefing session, where questions can be answered and corrective strategies can be freely discussed. &lt;br /&gt;&lt;br /&gt;Why conduct a penetration test?&lt;br /&gt;From a business perspective, penetration testing helps safeguard your organisation against failure, through: &lt;br /&gt;&lt;br /&gt;Preventing financial loss through fraud (hackers, extortionists and disgruntled employees) or through lost revenue due to unreliable business systems and processes. &lt;br /&gt;Proving due diligence and compliance to your industry regulators, customers and shareholders. Non-compliance can result in your organisation losing business, receiving heavy fines, gathering bad PR or ultimately failing. At a personal level it can also mean the loss of your job, prosecution and sometimes even imprisonment. &lt;br /&gt;Protecting your brand by avoiding loss of consumer confidence and business reputation. &lt;br /&gt;From an operational perspective, penetration testing helps shape information security strategy through: &lt;br /&gt;&lt;br /&gt;Identifying vulnerabilities and quantifying their impact and likelihood so that they can be managed proactively; budget can be allocated and corrective measures implemented. &lt;br /&gt;What can be tested?&lt;br /&gt;All parts of the way that your organisation captures, stores and processes information can be assessed; the systems that the information is stored in, the transmission channels that transport it, and the processes and personnel that manage it. Examples of areas that are commonly tested are: &lt;br /&gt;&lt;br /&gt;Off-the-shelf products (operating systems, applications, databases, networking equipment etc.) &lt;br /&gt;Bespoke development (dynamic web sites, in-house applications etc.) &lt;br /&gt;Telephony (war-dialling, remote access etc.) &lt;br /&gt;Wireless (WIFI, Bluetooth, IR, GSM, RFID etc.) &lt;br /&gt;Personnel (screening process, social engineering etc.) &lt;br /&gt;Physical (access controls, dumpster diving etc.) &lt;br /&gt;What should be tested?&lt;br /&gt;Ideally, your organisation should have already conducted a risk assessment, so will be aware of the main threats (such as communications failure, e-commerce failure, loss of confidential information etc.), and can now use a security assessment to identify any vulnerabilities that are related to these threats. If you haven't conducted a risk assessment, then it is common to start with the areas of greatest exposure, such as the public facing systems; web sites, email gateways, remote access platforms etc. &lt;br /&gt;&lt;br /&gt;Sometimes the 'what' of the process may be dictated by the standards that your organisation is required to comply with. For example, a credit-card handling standard (like PCI) may require that all the components that store or process card-holder data are assessed. &lt;br /&gt;&lt;br /&gt;What do you get for the money?&lt;br /&gt;While a great deal of technical effort is applied during the testing and analysis, the real value of a penetration test is in the report and debriefing that you receive at the end. If they are not clear and easy to understand, then the whole exercise is of little worth. &lt;br /&gt;&lt;br /&gt;Ideally the report and debriefing should be broken into sections that are specifically targeted at their intended audience. Executives need the business risks and possible solutions clearly described in layman's terms, managers need a broad overview of the situation without getting lost in detail, and technical personnel need a list of vulnerabilities to address, with recommended solutions. &lt;br /&gt;&lt;br /&gt;What to do to ensure the project is a success&lt;br /&gt;Defining the scope&lt;br /&gt;&lt;br /&gt;The scope should be clearly defined, not only in the context of the components to be (or not to be) assessed and the constraints under which testing should be conducted, but also the business and technical objectives. For example penetration testing may be focussed purely on a single application on a single server, or may be more far reaching; including all hosts attached to a particular network. &lt;br /&gt;&lt;br /&gt;Choosing a security partner&lt;br /&gt;&lt;br /&gt;Another critical step to ensure that your project is a success is in choosing which supplier to use. &lt;br /&gt;&lt;br /&gt;As an absolute fundamental when choosing a security partner, first eliminate the supplier who provided the systems that will be tested. To use them will create a conflict of interest (will they really tell you that they deployed the systems insecurely, or quietly ignore some issues). &lt;br /&gt;&lt;br /&gt;Detailed below are some questions that you might want to ask your potential security partner: &lt;br /&gt;&lt;br /&gt;Is security assessment their core business? &lt;br /&gt;How long have they been providing security assessment services? &lt;br /&gt;Do they offer a range of services that can be tailored to your specific needs? &lt;br /&gt;Are they vendor independent (do they have NDAs with vendors that prevent them passing information to you)? &lt;br /&gt;Do they perform their own research, or are they dependent on out-of-date information that is placed in the public domain by others? &lt;br /&gt;What are their consultant's credentials? &lt;br /&gt;How experienced are the proposed testing team (how long have they been testing, and what is their background and age)? &lt;br /&gt;Do they hold professional certifications, such as PCI, CISSP, CISA, and CHECK? &lt;br /&gt;Are they recognised contributors within the security industry (white papers, advisories, public speakers etc)? &lt;br /&gt;Are the CVs available for the team that will be working on your project? &lt;br /&gt;How would the supplier approach the project? &lt;br /&gt;Do they have a standardised methodology that meets and exceeds the common ones, such as OSSTMM, CHECK and OWASP? &lt;br /&gt;Can you get access to a sample report to assess the output (is it something you could give to your executives; do they communicate the business issues in a non-technical manner)? &lt;br /&gt;What is their policy on confidentiality? &lt;br /&gt;Do they outsource or use contractors? &lt;br /&gt;Are references available from satisfied customers in the same industry sector? &lt;br /&gt;Is there a legal agreement that will protect you from negligence on behalf of the supplier? &lt;br /&gt;Does the supplier maintain sufficient insurance cover to protect your organisation? &lt;br /&gt;Standards compliance&lt;br /&gt;There are a number of good standards and guidelines in relation to information security in general, for penetration tests in particular, and for the storage of certain types of data. Any provider chosen should at least have a working knowledge of these standards and would ideally be exceeding their recommendations. &lt;br /&gt;&lt;br /&gt;Notable organisations and standards include: &lt;br /&gt;&lt;br /&gt;PCI&lt;br /&gt;The Payment Card Industry (PCI) Data Security Requirements were established in December 2004, and apply to all Members, merchants, and service providers that store, process or transmit cardholder data. As well as a requirement to comply with this standard, there is a requirement to independently prove verification. &lt;br /&gt;&lt;br /&gt;ISACA&lt;br /&gt;ISACA was established in 1967 and has become a pace-setting global organization for information governance, control, security and audit professionals. Its IS Auditing and IS Control standards are followed by practitioners worldwide and its research pinpoints professional issues challenging its constituents. CISA, the Certified Information Systems Auditor is ISACA's cornerstone certification. Since 1978, the CISA exam has measured excellence in the area of IS auditing, control and security and has grown to be globally recognized and adopted worldwide as a symbol of achievement. &lt;br /&gt;&lt;br /&gt;CHECK&lt;br /&gt;The CESG IT Health Check scheme was instigated to ensure that sensitive government networks and those constituting the GSI (Government Secure Intranet) and CNI (Critical National Infrastructure) were secured and tested to a consistent high level. The methodology aims to identify known vulnerabilities in IT systems and networks which may compromise the confidentiality, integrity or availability of information held on that IT system. In the absence of other standards, CHECK has become the de-facto standard for penetration testing in the UK. This is mainly on account of its rigorous certification process. Whilst good it only concentrates on infrastructure testing and not application. However, open source methodologies such as the following are providing viable and comprehensive alternatives, without UK Government association. It must also be noted that CHECK consultants are only required when the assessment is for HMG or related parties, and meets the requirements above. If you want a CHECK test you will need to surrender your penetration testing results to CESG. &lt;br /&gt;&lt;br /&gt;OSSTMM&lt;br /&gt;The aim of The Open Source Security Testing Methodology Manual (OSSTMM) is to set forth a standard for Internet security testing. It is intended to form a comprehensive baseline for testing that, if followed, ensures a thorough and comprehensive penetration test has been undertaken. This should enable a client to be certain of the level of technical assessment independently of other organisation concerns, such as the corporate profile of the penetration-testing provider. &lt;br /&gt;&lt;br /&gt;OWASP&lt;br /&gt;The Open Web Application Security Project (OWASP) is an Open Source community project developing software tools and knowledge based documentation that helps people secure web applications and web services. It is an open source reference point for system architects, developers, vendors, consumers and security professionals involved in designing, developing, deploying and testing the security of web applications and Web Services. &lt;br /&gt;&lt;br /&gt;The key areas of relevance are the forthcoming Guide to Testing Security of Web Applications and Web Services and the testing tools under the development projects. The Guide to Building Secure Web Applications not only covers design principals, but also is a useful document for setting out criteria by which to assess vendors and test systems.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Scanner Benchmark &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sectooladdict.blogspot.com/2010/12/web-application-scanner-benchmark.html"&gt;Check it out&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some userful tools:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.owasp.org/index.php/Category:OWASP_Live_CD_Project"&gt;OWASP Live CD&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.owasp.org/index.php/Category:OWASP_WebScarab_Project"&gt;WebScarab&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-7067165039515896131?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/7067165039515896131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=7067165039515896131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7067165039515896131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7067165039515896131'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2011/05/penetration-test-and-scanner-benchmark.html' title='Penetration Test and Scanner Benchmark'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-4258117403414342821</id><published>2011-05-17T21:01:00.000-07:00</published><updated>2011-05-17T21:15:00.434-07:00</updated><title type='text'>Caching and Frameworks</title><content type='html'>&lt;a href="http://javalandscape.blogspot.com/2009/01/cachingcaching-algorithms-and-caching.html"&gt;Intro to caching and caching frameworks.&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;What Are the Trade-Offs Involved in Caching?&lt;br /&gt;&lt;br /&gt;Caching is always based on compromise; a trade-off between performance, scalability, and accuracy using the various resources available. Ease of configuration is an important secondary consideration. We should consider how we balance these factors to achieve the best performance possible.&lt;br /&gt;&lt;br /&gt;Application performance depends on efficient data distribution. It's crucial to ensure fast data access for maximum application performance. It pays to build a cache and avoid unnecessary round-trips to the datastore. By reducing traffic between the different layers of an application, you can substantially diminish the size and cost of the installation and greatly enhance the system's responsiveness.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.javabeat.net/articles/37-introduction-to-hibernate-caching-1.html"&gt;Hibernate Caching&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ehcache.org/documentation/distributed_caching.html"&gt;Distributed and Replicated Caching&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://java.sys-con.com/node/37551"&gt;Using JCache&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://java-source.net/open-source/cache-solutions"&gt;Open Source Cache Solutions in Java&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-4258117403414342821?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/4258117403414342821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=4258117403414342821' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/4258117403414342821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/4258117403414342821'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2011/05/caching-and-frameworks.html' title='Caching and Frameworks'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-3912121276424109975</id><published>2011-05-12T03:30:00.000-07:00</published><updated>2011-05-13T13:22:13.397-07:00</updated><title type='text'>SecureCI</title><content type='html'>A VM containing a turn-key solution for continuous integration with source code control, build management, automated testing, security analysis, defect tracking, and project management, all using open source tools.&lt;br /&gt;&lt;br /&gt;Check &lt;a href="http://www.coveros.com/research/research_stack.php"&gt;it&lt;/a&gt; out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-3912121276424109975?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/3912121276424109975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=3912121276424109975' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/3912121276424109975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/3912121276424109975'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2011/05/secureci.html' title='SecureCI'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-2412621309891201360</id><published>2011-05-12T03:23:00.000-07:00</published><updated>2011-05-13T13:22:13.232-07:00</updated><title type='text'>Open Source Application Server Comparison</title><content type='html'>Things to consider when choosing open source application servers&lt;br /&gt;&lt;br /&gt;•Load balancing: random; minimum load; round-robin; weighted round-robin; performance-based; load-based; dynamic algorithm based; dynamic registration. &lt;br /&gt;•Clustering &amp; HA. Additionally: distributed transaction management; in-memory replication of session state information; no single point of failure. &lt;br /&gt;•Connection pooling. &lt;br /&gt;•Caching. JNDI caching. Distributed caching with synchronization. &lt;br /&gt;•Thread pooling. &lt;br /&gt;•Configurable user Quality of Service. &lt;br /&gt;•Analysis tools. &lt;br /&gt;•Low system/memory requirements. &lt;br /&gt;•Optimized subsystems (RMI, JMS, JDBC drivers, JSP tags &amp; cacheable page fragments). &lt;br /&gt;•Optimistic transaction support. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Comparison_of_application_servers#Java_EE"&gt;Wikipedia&lt;/a&gt; Comparision &lt;br /&gt;&lt;br /&gt;Openlogic (&lt;a href="http://olex.openlogic.com/package_versions/docpage/16"&gt;Summary&lt;/a&gt; | &lt;a href="http://olex.openlogic.com/package_versions/docpage/17"&gt;Full&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-2412621309891201360?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/2412621309891201360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=2412621309891201360' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/2412621309891201360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/2412621309891201360'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2011/05/open-source-application-server.html' title='Open Source Application Server Comparison'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-7874711263226113582</id><published>2011-05-12T03:18:00.000-07:00</published><updated>2011-05-13T13:22:13.350-07:00</updated><title type='text'>Web Application and App Server Performance Tunning Tips</title><content type='html'>&lt;a href="http://www.javaperformancetuning.com/tips/appservers.shtml"&gt;Source&lt;/a&gt; content is from Java Performance Tuning&lt;br /&gt;&lt;br /&gt;The following pages have their detailed tips extracted below &lt;br /&gt;&lt;br /&gt;•J2EE Application server performance &lt;br /&gt;•Tuning IBM's WebSphere product &lt;br /&gt;•WebSphere V3 Performance Tuning Guide &lt;br /&gt;•Weblogic tuning (generally applicable Java tips extracted) &lt;br /&gt;•Overview of common application servers &lt;br /&gt;•Web application scalability. &lt;br /&gt;•J2EE Application servers &lt;br /&gt;•Load Balancing Web Applications &lt;br /&gt;•J2EE clustering &lt;br /&gt;•"EJB2 clustering with application servers" &lt;br /&gt;•Choosing an application server &lt;br /&gt;•Choosing a J2EE application server, emphasizing the importance of performance issues &lt;br /&gt;•Implementing clustering on a J2EE web server (JBoss+Jetty) &lt;br /&gt;•Tuning tips intended for Sun's "Web Server" product, but actually generally applicable. &lt;br /&gt;•Various tips &lt;br /&gt;•iPlanet Web Server guide to servlets, with a section at the end on "Maximizing Servlet Performance". &lt;br /&gt;•Sun community chat on iPlanet &lt;br /&gt;•Article on high availability architecture &lt;br /&gt;&lt;br /&gt;--------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;The following detailed tips have been extracted from the raw tips page &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;J2EE Application server performance (Page last updated April 2001, Added 2001-04-20, Author Misha Davidson, Publisher Java Developers Journal). Tips:&lt;/strong&gt; &lt;br /&gt;•Good performance has sub-second latency (response time) and hundreds of (e-commerce) transactions per second. &lt;br /&gt;•Avoid n-way database joins: every join has a multiplicative effect on the amount of work the database has to do. The performance degradation may not be noticeable until large datasets are involved. &lt;br /&gt;•Avoid bringing back thousands of rows of data: this can use a disproportionate amount of resources. &lt;br /&gt;•Cache data when reuse is likely. &lt;br /&gt;•Avoid unnecessary object creation. &lt;br /&gt;•Minimize the use of synchronization. &lt;br /&gt;•Avoid using the SingleThreadModel interface for servlets: write thread-safe code instead. &lt;br /&gt;•ServletRequest.getRemoteHost() is very inefficient, and can take seconds to complete the reverse DNS lookup it performs. &lt;br /&gt;•OutputStream can be faster than PrintWriter. JSPs are only generally slower than servlets when returning binary data, since JSPs always use a PrintWriter, whereas servlets can take advantage of a faster OutputStream. &lt;br /&gt;•Excessive use of custom tags may create unnecessary processing overhead. &lt;br /&gt;•Using multiple levels of BodyTags combined with iteration will likely slow down the processing of the page significantly. &lt;br /&gt;•Use optimistic transactions: write to the database while checking that new data is not be overwritten by using WHERE clauses containing the old data. However note that optimistic transactions can lead to worse performance if many transactions fail. &lt;br /&gt;•Use lazy-loading of dependent objects. &lt;br /&gt;•For read-only queries involving large amounts of data, avoid EJB objects and use JavaBeans as an intermediary to access manipulate and store the data for JSP access. &lt;br /&gt;•Use stateless session EJBs to cache and manage infrequently changed data. Update the EJB occasionally. &lt;br /&gt;•Use a dedicated session bean to perform and cache all JNDI lookups in a minimum number of requests. &lt;br /&gt;•Minimize interprocess communication. &lt;br /&gt;•Use clustering (multiple servers) to increase scalability. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Tuning IBM's WebSphere product. White paper: "Methodology for Production Performance Tuning". Only non-product specific Java tips have been extracted here. (Page last updated September 2000, Added 2001-01-19, Author Gennaro (Jerry) Cuomo, Publisher IBM). Tips: &lt;/strong&gt;&lt;br /&gt;•A size restricted queue (closed queue) allows system resources to be more tightly managed than an open queue. &lt;br /&gt;•The network provides a front-end queue. A server should be configured to use the network queue as its bottleneck, i.e. only accept a request from the network when there are sufficient resources to process the request. This reduces the load on an app server. However, sufficient requests should be accepted to ensure that the app server is working at maximum capacity, i.e. try not to let a component sit idle while there are still requests that can be accepted even if other components are fully worked. &lt;br /&gt;•Try to balance the workload of the various components. &lt;br /&gt;•[Paper shows a nice throughput curve giving recommended scaling behavior for an server] &lt;br /&gt;•The desirable target bottleneck is the CPU, i.e. a server should be tuned until the CPU is the remaining bottleneck. Adding CPUs is a simple remedy to this. &lt;br /&gt;•Use connection pools and cached prepared statements for database access. &lt;br /&gt;•Object memory management is particularly important for server applications. Typically garbage collection could take between 5% and 20% of the server execution time. Garbage collection statistics provide a useful monitor to determine the server's "health". Use the verbosegc flag to collect basic GC statistics. &lt;br /&gt;•GC statistcs to monitor are: total time spent in GC (target less than 15% of execution time); average time per GC; average memory collected per GC; average objects collected per GC. &lt;br /&gt;•For long lived server processes it is particularly important to eliminate memory leaks (references retained to objects and never released). &lt;br /&gt;•Use -ms and -mx to tune the JVM heap. Bigger means more space but GC takes longer. Use the GC statistics to determine the optimal setting, i.e the setting which provides the minimum average overhead from GC. &lt;br /&gt;•The ability to reload classes is typically achieved by testing a filesystem timestamp. This check should be done at set intermediate periods, and not on every request as the filesystem check is an expensive operation. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;WebSphere V3 Performance Tuning Guide (Page last updated March 2000, Added 2001-01-19, Authors Ken Ueno, Tom Alcott, Jeff Carlson, Andrew Dunshea, Hajo Kitzhöfer, Yuko Hayakawa, Frank Mogus, Colin D. Wordsworth, Publisher IBM). Tips: &lt;/strong&gt;&lt;br /&gt;•[The Red book lists and discusses tuning parameters available to Websphere] &lt;br /&gt;•Run an application server and any database servers on separate server machines. &lt;br /&gt;•JVM heap size: -mx, -ms [-Xmx, -Xms]. As a starting point for a server based on a single JVM, consider setting the maximum heap size to 1/4 the total physical memory on the server and setting the minimum to 1/2 of the maximum heap. Sun recommends that ms be set to somewhere between 1/10 and 1/4 of the mx setting. They do not recommend setting ms and mx to be the same. Bigger is not always better for heap size. In general increasing the size of the Java heap improves throughput to the point where the heap no longer resides in physical memory. Once the heap begins swapping to disk, Java performance drastically suffers. Therefore, the mx heap setting should be set small enough to contain the heap within physical memory. Also, large heaps can take several seconds to fill up, so garbage collection occurs less frequently which means that pause times due to GC will increase. Use verbosegc to help determine the optimum size that minimizes overall GC. &lt;br /&gt;•In some cases turning off asynchronous garbage collection ("-noasyncgc", not always available to all JVMs) can improve performance. &lt;br /&gt;•Setting the JVM stack and native thread stack size (-oss and -ss) too large (e.g. greater than 2MB) can significantly degrade performance. &lt;br /&gt;•When security is enabled (e.g. SSL, password authentication, security contexts and access lists, encryption, etc) performance is degraded by significant amounts. &lt;br /&gt;•One of the most time-consuming procedures of a database application is establishing a connection to the database. Use connection pooling to minimize this overhead. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Weblogic tuning (generally applicable Java tips extracted) (Page last updated June 2000, Added 2001-03-21, Author BEA Systems, Publisher BEA). Tips: &lt;/strong&gt;&lt;br /&gt;•Response time is affected by: contention and wait times, particularly for shared resources; and software and hardware component performance, i.e. the amount of time that resources are needed. &lt;br /&gt;•A well-designed application can increase performance by simply adding more resources (for instance, an extra server). &lt;br /&gt;•Use clustered or multi-processing machines; use a JIT-enabled JVM; use Java 2 rather than JDK 1.1; &lt;br /&gt;•Use -noclassgc. Use the maximum possible heap size that also is small enough to avoid the JVM from swapping (e.g. 80% of RAM left over after other required processes). Consider starting with minimum initial heap size so that the garbage collector doesn't suddenly encounter a full heap with lots of garbage. Benchmarkers sometimes like to set the heap as high as possible to completely avoid GC for the duration of the benchmark. &lt;br /&gt;•Distributing the application over several server JVMs means that GC impact will be spread in time, i.e. the various JVMs will most likely GC at different times from each. &lt;br /&gt;•On Java 1.1 the most effective heap size is that which limits the longest GC incurred pause to the longest acceptable pause in processing time. This will typically require a reduction in the maximum heap size. &lt;br /&gt;•Too many threads causes too much context switching. Too few threads may underutilize the system. If n=number of threads, k=number of CPUs, then: (n &lt; k) results in an under utilized CPU; (n == k) is theoretically ideal, but each CPU will probably be under utilized; (n &gt; k) by a "moderate amount of threads" is practically ideal; (n &gt; k) by "many threads" can lead to significant performance degradation from context switching. Blocked threads count for less in the previous formulae. &lt;br /&gt;•Symptoms of too few threads: CPU is waiting to do work, but there is work that could be done; Can not get 100% CPU; All threads are blocked [on i/o] and runnable when you do an execution snapshot. &lt;br /&gt;•Symptoms of too many threads: An execution snapshot shows that there is a lot of context switching going on in your JVM; Your performance increases as you decrease the number of threads. &lt;br /&gt;•If many client connections are dropped or refused, the TCP listen queue may be too short. &lt;br /&gt;•Try to avoid excessive cycling (creation/deletion or activation/passivation) of beans. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Overview of common application servers. I've extracted the performance related features (Page last updated October 2001, Added 2001-10-22, Author Pieter Van Gorp, Publisher Van Gorp). Tips: &lt;/strong&gt;&lt;br /&gt;•Load balancing: random; minimum load; round-robin; weighted round-robin; performance-based; load-based; dynamic algorithm based; dynamic registration. &lt;br /&gt;•Clustering. Additionally: distributed transaction management; in-memory replication of session state information; no single point of failure. &lt;br /&gt;•Connection pooling. &lt;br /&gt;•Caching. JNDI caching. Distributed caching with synchronization. &lt;br /&gt;•Thread pooling. &lt;br /&gt;•Configurable user Quality of Service. &lt;br /&gt;•Analysis tools. &lt;br /&gt;•Low system/memory requirements. &lt;br /&gt;•Optimized subsystems (RMI, JMS, JDBC drivers, JSP tags &amp; cacheable page fragments). &lt;br /&gt;•Optimistic transaction support. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Web application scalability. (Page last updated June 2000, Added 2001-05-21, Author Billie Shea, Publisher STQE Magazine). Tips: &lt;/strong&gt;&lt;br /&gt;•Web application scalability is the ability to sustain the required number of simultaneous users and/or transactions, while maintaining adequate response times to end users. &lt;br /&gt;•The first solution built with new skills and new technologies will always have room for improvement. &lt;br /&gt;•Avoid deploying an application server that will cause embarrassment, or that could weaken customer confidence and business reputation [because of bad response times or lack of calability]. &lt;br /&gt;•Consider application performance throughout each phase of development and into production. &lt;br /&gt;•Performance testing must be an integral part of designing, building, and maintaining Web applications. &lt;br /&gt;•There appears to be a strong correlation between the use of performance testing tools and the likelihood that a site would scale as required. &lt;br /&gt;•Automated performance tests must be planned for and iteratively implemented to identify and remove bottlenecks. &lt;br /&gt;•Validate the architecture: decide on the maximum scaling requirements and then performance test to validate the necessary performance is achievable. This testing should be done on the prototype, before the application is built. &lt;br /&gt;•Have a clear understanding of how easily your configurations of Web, application, and/or database servers can be expanded. &lt;br /&gt;•Factor in load-balancing software and/or hardware in order to efficiently route requests to the least busy resource. &lt;br /&gt;•Consider the effects security will have on performance: adding a security layer to transactions will impact response times. Dedicate specific server(s) to handle secure transactions. &lt;br /&gt;•Select performance benchmarks and use them to quantify the scalability and determine performance targets and future performance improvements or degradations. Include all user types such as "information-gathering" visitors or "transaction" visitors in your benchmarks. &lt;br /&gt;•Perform "Performance Regression Testing": continuously re-test and measure against the established benchmark tests to ensure that application performance hasn?t been degraded because of the changes you?ve made. &lt;br /&gt;•Performance testing must continue even after the application is deployed. For applications expected to perform 24/7 inconsequential issues like database logging can degrade performance. Continuous monitoring is key to spotting even the slightest abnormality: set performance capacity thresholds and monitor them. &lt;br /&gt;•When application transaction volumes reach 40% of maximum expected volumes, it is time to start executing plans to expand the system &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;J2EE Application servers (Page last updated April 2001, Added 2001-04-20, Authors Christopher G. Chelliah and Sudhakar Ramakrishnan, Publisher Java Developers Journal). Tips: &lt;/strong&gt;&lt;br /&gt;•A scalable server application probably needs to be balanced across multiple JVMs (possibly pseudo-JVMs, i.e. multiple logical JVMs running in the same process). &lt;br /&gt;•Performance of an application server hinges on caching, load balancing, fault tolerance, and clustering. &lt;br /&gt;•Application server caching should include web-page caches and data access caches. Other caches include caching servers which "guard" the application server, intercepting requests and either returning those that do not need to go to the server, or rejecting or delaying those that may overload the app server. &lt;br /&gt;•Application servers should use connection pooling and database caching to minimize connection overheads and round-trips. &lt;br /&gt;•Load balancing mechanisms include: round-robin DNS (alternating different IP-addresses assigned to a server name); and re-routing mechanisms to distribute requests across multiple servers. By maintaining multiple re-routing servers and a client connection mechanism that automatically checks for an available re-routing server, fault tolerance is added. &lt;br /&gt;•Using one thread per user can become a bottleneck if there are a large number of concurrent users. &lt;br /&gt;•Distributed components should consider the proximity of components to their data (i.e., avoid network round-trips) and how to distribute any resource bottlenecks (i.e., CPU, memory, I/O) across the different nodes. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Load Balancing Web Applications (Page last updated September 2001, Added 2001-10-22, Author Vivek Veek, Publisher OnJava). Tips: &lt;/strong&gt;&lt;br /&gt;•DNS round-robin sends each subsequent DNS lookup request to the next entry for that server name. This provides a simple machine-level load-balancing mechanism, but is only appropriate for session independent or shared-session servers. &lt;br /&gt;•DNS round-robin has no server load measuring mechanisms, so requests can still go to overloaded servers, i.e. the load balancing can be very unbalanced. &lt;br /&gt;•Hardware load-balancers solve many of the problems of DNS round-robin, but introduce a single point of failure. &lt;br /&gt;•A web server proxy can also provide load-balancing by redirecting requests to multiple backend webservers. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;J2EE clustering (Page last updated August 2001, Added 2001-08-20, Author Abraham Kang, Publisher JavaWorld). Tips: &lt;/strong&gt;&lt;br /&gt;•Consider cluster-related and load balancing programming issues from the beginning of the development process. &lt;br /&gt;•Load balancing has two non-application options: DNS (Domain Name Service) round robin or hardware load balancers. [Article discusses the pros and cons]. &lt;br /&gt;•To support distributed sessions, make sure: all session referenced objects are serializable; store session state changes in a central repository. &lt;br /&gt;•Try to keep multiple copies of objects to a minimum. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;"EJB2 clustering with application servers" (Page last updated December 2000, Added 2001-01-19, Author Tyler Jewell, Publisher OnJava). Tips: &lt;/strong&gt;&lt;br /&gt;•[Article discusses multiple independent ways to load balance EJBs] &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Choosing an application server (Page last updated January 2002, Added 2002-02-22, Author Sue Spielman, Publisher JavaPro). Tips: &lt;/strong&gt;&lt;br /&gt;•A large-scale server with lots of traffic should make performance its top priority. &lt;br /&gt;•Performance factors to consider include: connection pooling; types of JDBC drivers; caching features, and their configurability; CMP support. &lt;br /&gt;•Inability to scale with reliable performance means lost customers. &lt;br /&gt;•Scaling features to consider include failover support, clustering capabilities, and load balancing. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Choosing a J2EE application server, emphasizing the importance of performance issues (Page last updated February 2001, Added 2001-02-21, Author Steve Franklin, Publisher DevX). Tips:&lt;/strong&gt; &lt;br /&gt;•Application server performance is affected by: the JDK version; connection pooling availability; JDBC version and optimized driver support; caching support; transactional efficiency; EJB component pooling mechanisms; efficiency of webserver-appserver connection; efficiency of persistence mechanisms. &lt;br /&gt;•Your application server needs to be load tested with scaling, to determine suitability. &lt;br /&gt;•Always validate the performance of the app server on the target hardware with peak expected user numbers. &lt;br /&gt;•Decide on what is acceptable downtime for your application, and ensure the app server can deliver the required robustness. High availability may require: transparent fail-over; clustering; load balancing; efficient connection pooling; caching; duplicated servers; scalable CPU support. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Implementing clustering on a J2EE web server (JBoss+Jetty) (Page last updated September 2001, Added 2001-10-22, Author Bill Burke, Publisher OnJava). Tips: &lt;/strong&gt;&lt;br /&gt;•Clustering includes synchronization, load-balancing, fail-over, and distributed transactions. &lt;br /&gt;•[article discusses implementing clustering in an environment where clustering was not previously present]. &lt;br /&gt;•The different EJB commit options affect database traffic and performance. Option 'A' (read-only local caching) has the smallest overhead. &lt;br /&gt;•Hardware load balancers are a simple and fast solution to distributing HTTP requests to clustered servers. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Tuning tips intended for Sun's "Web Server" product, but actually generally applicable. (Page last updated 1999, Added 2000-10-23, Author ? - a Sun document, Publisher Aikido). Tips: &lt;/strong&gt;&lt;br /&gt;•Use more server threads if multiple connections have high latency. &lt;br /&gt;•Use keep-alive sockets for higher throughput. &lt;br /&gt;•Increase server listen queues for high load or high latency servers. &lt;br /&gt;•Avoid or reduce logging. &lt;br /&gt;•Buffer logging output: use less than one real output per log. &lt;br /&gt;•Avoid reverse DNS lookups. &lt;br /&gt;•Write time stamps rather than formatted date-times. &lt;br /&gt;•Separate paging and application files. &lt;br /&gt;•A high VM heap size may result in paging, but could avoid some garbage collections. &lt;br /&gt;•Occasional very long GCs makes the VM hang for that time, leading to variability in service quality. &lt;br /&gt;•Doing GC fairly often and avoiding paging is more efficient. &lt;br /&gt;•Security checks consume CPU resources. You will get better performance if you can turn security checking off. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Various tips. For web servers? (Page last updated 2000, Added 2000-10-23, Author ?, Publisher ?). Tips: &lt;/strong&gt;&lt;br /&gt;•Test multiple VMs. &lt;br /&gt;•Tune the heap and stack sizes [by trial and error], using your system memory as a guide to upper limits. &lt;br /&gt;•Keep the system file cache large. [OS/Product tuning, not Java] &lt;br /&gt;•Compression uses significant system resources. Don't use it on a server unless necessary. &lt;br /&gt;•Monitor thread utilization. Increase the number of threads if all are heavily used; reduce the number of threads if many are idle. &lt;br /&gt;•Empirically test for the optimal number of database connections. &lt;br /&gt;&lt;br /&gt;iPlanet Web Server guide to servlets, with a section at the end on "Maximizing Servlet Performance". (Page last updated July 2000, Added 2001-02-21, Author ?, Publisher Sun). Tips: &lt;br /&gt;&lt;br /&gt;•Try to optimize the servlet loading mechanism, e.g. by listing the servlet first in loading configurations. &lt;br /&gt;•Tune the heap size. &lt;br /&gt;•Keep the classpath short. &lt;br /&gt;&lt;br /&gt;Sun community chat on iPlanet (Page last updated November 2001, Added 2001-12-26, Author Edward Ort, Publisher Sun). Tips: &lt;br /&gt;&lt;br /&gt;•Optimal result caching (caching pages which have been generated) needs tuning, especially the timeout setting. Make sure the timeout is not too short. &lt;br /&gt;&lt;br /&gt;Article on high availability architecture. If the system isn't up when you need it, its not performing. (Page last updated November 1998, Added 2000-10-23, Author Sam Wong, Publisher Sun). Tips: &lt;br /&gt;&lt;br /&gt;•Eliminate all potential single-points-of-failure, basically with redundancy and automatic fail-over. &lt;br /&gt;•Consider using the redundant components to improve performance, with a component failure causing decreased performance rather system failure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-7874711263226113582?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/7874711263226113582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=7874711263226113582' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7874711263226113582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7874711263226113582'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2011/05/web-application-and-app-server.html' title='Web Application and App Server Performance Tunning Tips'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-36838196060933354</id><published>2011-05-10T20:11:00.000-07:00</published><updated>2011-05-10T20:13:02.775-07:00</updated><title type='text'>Where are the differences between JVMs</title><content type='html'>•JRockit&lt;br /&gt;•IBM JVM&lt;br /&gt;•SUN JVM&lt;br /&gt;•Open JDK&lt;br /&gt;•Blackdown &lt;br /&gt;•Kaffe&lt;br /&gt;&lt;br /&gt;JVM implementations can differ in the way they implement JIT compiling, optimizations, garbage collection, platforms supported, version of Java supported, etc. They all must meet set of features and behaviors so that it will execute Java bytecodes correctly.&lt;br /&gt;&lt;br /&gt;The major difference tends to be in licensing. Other non-technical differences tend to be in free/paid support options, integration with other technologies (usually J2EE servers), and access to source code.&lt;br /&gt;&lt;br /&gt;Note, While a J2EE server runs on the JVM, some servers have integrated tools for monitoring, analyzing, and tweaking JVM performance.&lt;br /&gt;&lt;br /&gt;As far as technical differences, those have grown less siginificant over the years. Once upon a time, the IBM and JRockit JVM's had far supierior performance to the reference Sun implementation. This was due to significant differences in the types of runtime optiizations, differences in garbage collection, and differences in native-code (and how much native code various classes uses). These performance differences aren't as significant anymore.&lt;br /&gt;&lt;br /&gt;Some JVM's also include or integrate with diagnostics and monitoring tools. JRockit includes a set of tools for monitoring your JVM performance. Sun provides various JMX-based tools with overlapping features to do the same. IBM Websphere once upon a time included a similar set of tools for their whole J2EE application server, not sure if they still do.&lt;br /&gt;&lt;br /&gt;Some of the open source JVM's tend to have a little slower performance because they have been redeveloped from the ground up. As such, they've got a bit more catching up to do. Some say Blackdown was significantly slower than the Sun JVM and  was also a bit behind of supported versions of Java.&lt;br /&gt;&lt;br /&gt;Why JRockit is More Recommended for Production Environments ?&lt;br /&gt;&lt;br /&gt;- It Has More diagnostic tools than other JDKs such as JRA&lt;br /&gt;- Management console with no overhead on performance (JRMC)…which is available inside &lt;JROCKIT_HOME&gt;\bin directory.&lt;br /&gt;- Better performance on Intel architectures than other JVMs&lt;br /&gt;- Higher memory usage for better performance&lt;br /&gt;- Great code Optimization Stretegy. (Can be Disabled using -Xnoopt is you dont want optimization)&lt;br /&gt;&lt;br /&gt;Oracle recommends that you use JRockit JDK with your Oracle products because it has a Enhanced Garbage Collection Strategies, It have a JRMC tool inbuilt to Monitor the JVM Activities in the Runtime with very less Burden on the Server/JVM.&lt;br /&gt;&lt;br /&gt;There are some tools allowed you to know what is the JVM doing at runtime&lt;br /&gt;&lt;br /&gt;jdb – the debugger&lt;br /&gt;jps – the process status tool, which displays process information for current Java processes&lt;br /&gt;javap – the class file disassembler&lt;br /&gt;javah – the C header and stub generator, used to write native methods&lt;br /&gt;extcheck – a utility which can detect JAR-file conflicts&lt;br /&gt;apt – the annotation-processing tool [1]&lt;br /&gt;jhat – (experimental) Java heap analysis tool&lt;br /&gt;jstack – (experimental) utility which prints Java stack traces of Java threads&lt;br /&gt;jstat – (experimental) Java Virtual Machine statistics monitoring tool&lt;br /&gt;jstatd – (experimental) jstat daemon&lt;br /&gt;jinfo – (experimental) This utility gets configuration information from a running Java process or crash dump.&lt;br /&gt;jmap – (experimental) This utility outputs the memory map for Java and can print shared object memory maps or heap memory details of a given process or core dump.&lt;br /&gt;idlj – the IDL-to-Java compiler. This utility generates Java bindings from a given Java IDL file.&lt;br /&gt;VisualVM – visual tool integrating several command-line JDK tools and lightweight[clarification needed] performance and memory profiling capabilities&lt;br /&gt;jrunscript – Java command-line script shell.&lt;br /&gt;&lt;br /&gt;There is nice &lt;a href="http://blogs.oracle.com/jamesbayer/entry/open_the_black_box_-_oracle_jr"&gt;post&lt;/a&gt; about "Open the Black Box (JVM)" with tools from different JDK vendor.&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/747360/difference-between-jvm-implementations"&gt;Difference between JVM implementations&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://middlewaremagic.com/weblogic/?p=2908"&gt;Why and How Oracle JRockit?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.oracle.com/jamesbayer/entry/open_the_black_box_-_oracle_jr"&gt;Open the Black Box - Oracle JRockit, Sun Hotspot and IBM J9 JVM Tools &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-36838196060933354?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/36838196060933354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=36838196060933354' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/36838196060933354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/36838196060933354'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2011/05/where-are-differences-between-jvms.html' title='Where are the differences between JVMs'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-8139762826065589728</id><published>2011-04-17T08:02:00.000-07:00</published><updated>2011-05-10T20:11:39.175-07:00</updated><title type='text'>DB Index and 'LIKE-clause'  Tuning</title><content type='html'>&lt;a href="http://www.orafaq.com/node/1403"&gt;Understanding Indexes&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.orafaq.com/node/1420"&gt;Understanding Explain Plan&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dba-oracle.com/art_9i_indexing.htm"&gt;Turbocharge SQL with advanced Oracle indexing&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.orafaq.com/node/1918"&gt;Tuning a 'LIKE-clause' by using Oracle Text or Reverse Key Indexes&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-8139762826065589728?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/8139762826065589728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=8139762826065589728' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/8139762826065589728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/8139762826065589728'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2011/04/db-index-and-like-clause-tuning.html' title='DB Index and &apos;LIKE-clause&apos;  Tuning'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-2259053610336025781</id><published>2009-10-05T02:30:00.000-07:00</published><updated>2009-10-05T02:34:05.244-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Architecture'/><title type='text'>“Just enough &amp; in time” Enterprise Architecture - Oracle EA Framework</title><content type='html'>&lt;em&gt;“The real value of Enterprise Architecture is not in making better architectures…it’s in making better enterprise.”&lt;/em&gt;— Gary Doucet, Chief Architect, Government of Canada Treasury Board of Canada Secretariat GC&lt;br /&gt;&lt;br /&gt;"In the early days of computing, technology simply automated manual processes with greater efficiency. As technology evolved, new innovations enabled new capabilities and processes in the enterprise that were driven by IT. Gradually, IT changed the business but not necessarily in alignment with the business strategy. This lack of alignment resulted in significant waste of resources and missed opportunities, and placed the organization in a competitive disadvantage in the market."&lt;br /&gt;&lt;br /&gt;"To align the strategies of business with IT, a new approach for managing IT has been developed called Enterprise Architecture. Just as architecture provides a blueprint for constructing a building, Enterprise Architecture provides a blueprint and roadmap for aligning business strategy with IT."&lt;br /&gt;&lt;br /&gt;"Enterprise Architecture (EA) is a method and an organizing principle that aligns functional business objectives and strategies with an IT strategy and execution plan. The Enterprise Architecture provides a guide to direct the evolution and transformation of enterprises with technology. This in turn makes IT a more strategic asset for successfully implementing a modern business strategy."&lt;br /&gt;&lt;br /&gt;"An Enterprise Architecture typically produces deliverables such as:&lt;br /&gt;&lt;br /&gt;·  Current-state Enterprise Architecture model&lt;br /&gt;·  Future-State Enterprise Architecture reference model that is needed to execute on the proposed business strategy&lt;br /&gt;·  Gap analysis that identifies the shortfalls of the current state in terms of its ability to support the objectives and strategies of the business&lt;br /&gt;·  Architecture Roadmap that defines the initiatives required to migrate from the current state into the future state."&lt;br /&gt;&lt;br /&gt;"By taking an enterprisewide perspective across business services, business processes, information, applications, and technology, an EA ensures the enterprise goals and objectives are addressed in a holistic way across all IT projects."&lt;br /&gt;&lt;br /&gt;"To be successful, an Enterprise Architecture needs to be woven into the enterprise’s culture, not treated as a closed-scope project. The value of an EA is greatly enhanced when it is organically embedded into the lifecycle of the organization, including capital planning, project management, asset management, resource allocation, and strategy formulation."&lt;br /&gt;&lt;br /&gt;"Enterprise Architecture is a journey not a project. It evolves over time and needs to maintain the flexibility required to adjust to changing market conditions, strategy shifts, and new innovations in technology."&lt;br /&gt;&lt;br /&gt;"A number of EA frameworks exist in the industry with the goal of addressing the basic challenge of assessing, aligning, and organizing business objectives with technical requirements and strategies. Examples include the Zachman Framework (IBM framework from 1980s), The Open Group Architecture Framework (TOGAF), OMB Federal Enterprise Architecture (FEA), The Gartner Methodology (formerly the Meta Framework), and the DoD Architecture Framework (DoDAF)."&lt;br /&gt;&lt;br /&gt;"In an effort to provide effective framework to help customers align their IT and business strategies, Oracle extracted aspects from several industry frameworks, including TOGAF and FEA, to build a simple yet practical and prescriptive framework called the Oracle Enterprise Architecture Framework (OEAF). The OEAF is complementary to other EA frameworks, with clear mappings to TOGAF and FEA, such that customers can use the EA framework of their choice. The intent of building the OEAF was to leverage the strengths of the different industry frameworks and marry that with Oracle’s experience in developing enterprise solutions."&lt;br /&gt;&lt;br /&gt;"Oracle emphasizes a “just enough” and “just in time” practical approach to Enterprise Architecture, which may be used standalone or as a complement a customer’s selected EA methodology."&lt;br /&gt;&lt;br /&gt;So, what is "just enough" &amp; "just in time", listen to this &lt;a href="http://streaming.oracle.com/ebn/podcasts/A2A/media/8231836_oea_framework_part_1_093009.mp3"&gt;podcast&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To know more about OEAF, check out the Oracle EA whitepaper (http://www.oracle.com/technology/architect/entarch/pdf/oea_framework.pdf) from &lt;a href="http://www.oracle.com/technology/architect/entarch/index.html"&gt;Oracle EA Center&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-2259053610336025781?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/2259053610336025781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=2259053610336025781' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/2259053610336025781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/2259053610336025781'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2009/10/just-enough-in-time-enterprise.html' title='“Just enough &amp; in time” Enterprise Architecture - Oracle EA Framework'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-4462108360933520713</id><published>2009-10-04T23:44:00.000-07:00</published><updated>2009-10-04T23:53:43.005-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle RAC'/><title type='text'>Not able to afford Oracle RAC - Scale out low end / cost DB with Open Source Technology Stack - Tungsten</title><content type='html'>Open-source middleware maker released a database scale-out stack called Tungsten, which support open-source databases like MySQL as well as proprietary ones from the likes of Oracle.&lt;br /&gt;&lt;br /&gt;The stack's capabilities include a failure protection function that keeps extra database replicas in the event the master fails, and can automatically promote a slave to master status when needed. It also enables users to maintain and replicate database copies at a number of locations to aid disaster recovery.&lt;br /&gt;&lt;br /&gt;Scale-out works by spreading data across multiple, independent database servers connected through a network. The model offers an incremental approach to solving the following database problems:&lt;br /&gt;&lt;br /&gt;    * Preventing data loss though up-to-date replica databases and coordinated backups  &lt;br /&gt;    * Increasing overall application availability by providing rapid database failover   &lt;br /&gt;    * Raising performance and through-put by dispatching read traffic to replicas   &lt;br /&gt;    * Integrating data between heterogenous systems, for example to support scaling of commercial databases using low-cost open source databases.&lt;br /&gt;&lt;br /&gt;Scale-out implementation involves a number of complexities, including creating and maintaining replicas, managing resources spread across many hosts, and working around important problems such as maintaining data consistency when databases are spread over multiple hosts.&lt;br /&gt;&lt;br /&gt;Tungsten offers a set of components that address these problems in a systematic way.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Tungsten Replicator&lt;br /&gt;Implements database-neutral, master/slave replication.&lt;br /&gt;&lt;br /&gt;Tungsten Manager&lt;br /&gt;Group-communication based framework for managing cluster resources. &lt;br /&gt;&lt;br /&gt;Tungsten Connector&lt;br /&gt;A proxy for MySQL and PostgreSQL client programs.  The Connector serves as a "front door" to clustering logic implemented in JDBC drivers.&lt;br /&gt;&lt;br /&gt;Tungsten SQL-Router&lt;br /&gt;A JDBC wrapper that adds high-performance and transparent failover, load-balancing, and partitioning to native JDBC drivers.&lt;br /&gt;&lt;br /&gt;Tungsten Monitor&lt;br /&gt;A pluggable monitoring service that checks and broadcasts state of individual resources in the cluster.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Tungsten claimed it isn't trying to supplant high-end Oracle Real Application Clusters (RAC), but instead hopes to provide a potential incremental scale-out offering for customers using low-end databases and hardware that either can't afford or don't want to buy into the whole Oracle RAC architecture.&lt;br /&gt;&lt;br /&gt;However, it did provide an alternative low end / cost open source RAC solution for potential Oracle RAC customer and attract some eyeballs over.&lt;br /&gt;&lt;br /&gt;Some reflection is What if oracle or its well known competitor come out &amp;amp; buy over similar technology to bridge &amp;amp; guide the smooth transition from low end to high end. Who will be the winner in this arena?&lt;br /&gt;&lt;br /&gt;Further readings:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.continuent.com/community/tungsten-overview"&gt;What Is Tungsten&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://scale-out-blog.blogspot.com/"&gt;The Scale-Out Blog&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-4462108360933520713?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/4462108360933520713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=4462108360933520713' title='58 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/4462108360933520713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/4462108360933520713'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2009/10/not-able-to-afford-oracle-rac-scale-out.html' title='Not able to afford Oracle RAC - Scale out low end / cost DB with Open Source Technology Stack - Tungsten'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>58</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-1820986580998279369</id><published>2009-09-08T02:51:00.000-07:00</published><updated>2009-09-12T04:30:53.971-07:00</updated><title type='text'>Addressing Challenge, Design, Build &amp; Provisioning Saas with Open Source Software Stack</title><content type='html'>&lt;strong&gt;Challenges &amp;amp; How to Address&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;When design &amp;amp; build SaaS application, there are some common technical challenges we have to address:&lt;br /&gt;&lt;br /&gt;- Multi-tenancy&lt;br /&gt;- Enable a unique user experience.&lt;br /&gt;- Data isolation for SaaS application, either isolated DB or a shared DB, e.g. shared tables&lt;br /&gt;- Security, authentication, authorization and access control of application users &amp;amp; application modules&lt;br /&gt;&lt;br /&gt;Check out this &lt;a href="http://www.ibm.com/developerworks/offers/lp/demos/summary/saasmid.html"&gt;demo &lt;/a&gt;and learn how IBM tackle them and you will have idea of how you can do it with IBM and other similar technologies.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Build SaaS application with Open Source Software Stack (OSSS)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This sample multi-tenant SaaS application run on a single instance of WAS (Community Edition), DB2 Express-C and openLDAP with a different look-and-feel and access control.&lt;br /&gt;&lt;br /&gt;Check out this &lt;a href="http://www.ibm.com/developerworks/offers/lp/demos/summary/saasworkstream.html"&gt;demo&lt;/a&gt; and learn how IBM people build it and you will have idea of how you can do it in your own way.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Provisioning SaaS with ANT &amp;amp; OSSS&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This &lt;a href="http://www.ibm.com/developerworks/offers/lp/demos/summary/wesd-saasprovision.html"&gt;demo&lt;/a&gt; focuses on the ease of provisioning new tenant SaaS application through the use of Apache ANT scripts. A new virtual host and security realm are provisioned through ANT scripts invoked from a new service provider administrator portlet. A new openLDAP user database is created and new LDAP Data Interchange Format (LDIF) files imported through another ANT script. The portal for the new tenant application is customized through a tenant administrator portlet by modifying style sheets, providing tenant specific images and uploading and deploying these to the running application. Custom fields are added to other portlets which use XML columns defined in DB2® Express-C V9 through simple configuration steps in a tenant administrator portlet.&lt;br /&gt;&lt;br /&gt;Resources&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www-304.ibm.com/jct01005c/isv/marketing/saas/demo_series.html"&gt;IBM SaaS Solutions &amp;amp; Demonstration Series&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www-304.ibm.com/jct01005c/isv/marketing/saas/index.html"&gt;IBM Software as a Service (SaaS) Community&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/views/websphere/libraryview.jsp?end_no=100&amp;amp;lcl_sort_order=desc&amp;amp;type_by=Demos&amp;amp;sort_order=desc&amp;amp;show_all=false&amp;amp;sort_by=Relevance&amp;amp;count=100&amp;amp;product_by=&amp;amp;search_by=Software+as+a+Service&amp;amp;topic_by=All+topics&amp;amp;search_flag=true&amp;amp;show_abstract=false"&gt;IBM SaaS Technical Library&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.salesforce.com/services-training/training_certification/online/"&gt;SalesForce Online Training&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-1820986580998279369?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/1820986580998279369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=1820986580998279369' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1820986580998279369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1820986580998279369'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2009/09/addressing-challenge-design-build.html' title='Addressing Challenge, Design, Build &amp; Provisioning Saas with Open Source Software Stack'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-855403124726907961</id><published>2009-08-24T04:34:00.000-07:00</published><updated>2009-08-27T18:52:57.051-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Service'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='SaaS'/><title type='text'>How to Tackle the SaaS Integration Problem</title><content type='html'>This article is written by &lt;a class="jiveTT-hover-user jive-username-link" id="jive-3njmIL7J3pM1cBG0" onmouseover="quickuserprofile.getUserProfileTooltip(3138);" onmouseout="quickuserprofile.cancelTooltip();" href="http://www.itbusinessedge.com/cm/people/LoraineLawson"&gt;Loraine Lawson&lt;/a&gt; from &lt;a href="http://www.itbusinessedge.com/cm/blogs/lawson/how-to-tackle-the-saas-integration-problem/?cs=15955"&gt;itbusinessedge&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;"&lt;/em&gt;&lt;a class="jive-link-external-small" href="http://www.itbusinessedge.com/item/?ci=32591"&gt;&lt;em&gt;Integration Issues May Hinder SaaS Adoption&lt;/em&gt;&lt;/a&gt;&lt;em&gt;," from CIOUpdate, reminds us of the integration problems created by buying "best of breed" applications in the 1980s and '90s. No doubt, you remember it well. And yet the same thing is now happening as companies opt for more software-as-a-service applications.&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;Just like with those proprietary best-of-breed solutions, this is code that you can't customize. How can you integrate SaaS offerings? Here's an abbreviated version of the options outlined in the article:&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;br /&gt;&lt;em&gt;Use middleware, sold either as an appliance (Cast Iron Systems) or as an application integration platform, (e.g., Tibco).&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;em&gt;Use Web services, which brings challenges with security, data models, business processes and workflow, according to the article.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;em&gt;Buy pre-integrated suites from one vendor. Microsoft, SAP and Salesforce.com are among those migrating to this approach, which relies on a "core" to provide integration for products from the vendor and its partners. For example, SAP's core is Netweaver platform. Oracle's is Fusion. Salesforce.com hopes to leverage AppExchange platform into its core. The article doesn't specify Microsoft's core, but my guess would be Sharepoint server. If you're thinking "Surely companies won't fall for that kind of lock-in," remember: This is what most companies opted to do in the '90s instead of integrating in-house applications.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;em&gt;Buy an EAI solution from a third-party.&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;em&gt;Of course, SOA doesn't solve the underlying data definitions problem, as the piece points out. This is where &lt;/em&gt;&lt;a class="jive-link-external-small" href="http://www.itbusinessedge.com/item/?ci=31753"&gt;&lt;em&gt;Master Data Management&lt;/em&gt;&lt;/a&gt;&lt;em&gt; comes into play.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;The full article fleshes out the problem and the possible solutions, as well as issuing advice about what IT departments can do now to encourage vendor integration, (yeah, right), and what to do if that doesn't work out.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Here are three related resources to help you learn more:&lt;/em&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;br /&gt;&lt;em&gt;SaaS integration is a problem that will impact all sizes of IT organizations. Small and mid-sized companies treated SaaS applications as silos from the start, according to integration and SOA consultant and columnist David Linthicum. See what he recommends these businesses do now to remedy the SaaS integration problem by reading "&lt;/em&gt;&lt;a class="jive-link-external-small" href="http://www.itbusinessedge.com/item/?ci=30287"&gt;&lt;em&gt;SMBs Need to Tackle SaaS Integration&lt;/em&gt;&lt;/a&gt;&lt;em&gt;," from Intelligent Enterprise.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;em&gt;Informatica offers an integration solution for organizations using Salesforce.com. Its On Demand Data Replicator allows businesses to easily replicate SaaS-related data to their databases. Learn more by reading, "&lt;/em&gt;&lt;a class="jive-link-external-small" href="http://www.itbusinessedge.com/item/?ci=30290"&gt;&lt;em&gt;Service Integrates SaaS Data On Demand&lt;/em&gt;&lt;/a&gt;&lt;em&gt;," on the blog THINK IT Services.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;em&gt;Find out what's driving Master Data Management adoption and learn how the two breeds of MDM solutions may begin to merge functionalities in our Executive Briefing, "&lt;/em&gt;&lt;a class="jive-link-external-small" href="http://www.itbusinessedge.com/blogs/exb/?p=132"&gt;&lt;em&gt;What's Next for Master Data Management?&lt;/em&gt;&lt;/a&gt;&lt;em&gt;" &lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Case Study &amp;amp; More:&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.zdnet.com/SAAS/?p=325"&gt;Appirio’s eat-your-own-dogfood SaaS integration&lt;/a&gt;&lt;a title="permanent link" href="http://www.appirio.com/blog/2007/03/building-business-on-virtual.html"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.informationweek.com/news/services/saas/showArticle.jhtml?articleID=208802478"&gt;Three Startups To Solve SaaS Integration Problems &lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a title="Permanent Link to SaaS integration without the lock-in" href="http://blogs.zdnet.com/SAAS/?p=327" rel="bookmark"&gt;SaaS integration without the lock-in&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a title="permanent link" href="http://www.appirio.com/blog/2007/03/building-business-on-virtual.html"&gt;Building a Business on Virtual Infrastructure, Using Google and salesforce.com &lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Videos&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;There are list of videos available from YouTube regarding Saas integration, check out some of &lt;a href="http://www.youtube.com/results?search_query=saas+integration&amp;amp;search_type=&amp;amp;aq=f"&gt;them&lt;/a&gt; at your spare time.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-855403124726907961?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/855403124726907961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=855403124726907961' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/855403124726907961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/855403124726907961'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2009/08/how-to-tackle-saas-integration-problem.html' title='How to Tackle the SaaS Integration Problem'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-5124693413224585215</id><published>2009-08-24T02:43:00.000-07:00</published><updated>2009-09-08T03:49:46.574-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SaaS'/><category scheme='http://www.blogger.com/atom/ns#' term='Cloud Computing'/><title type='text'>Cloud Computing , SaaS and Prospects</title><content type='html'>Cloud computing is a style of computing in which dynamically scalable and often virtualized resources are provided as a service over the Internet. Users need not have knowledge of, expertise in, or control over the technology infrastructure in the "cloud" that supports them.&lt;br /&gt;&lt;br /&gt;The concept generally incorporates combinations of the following:&lt;br /&gt;* infrastructure as a service (IaaS)&lt;br /&gt;* platform as a service (PaaS)&lt;br /&gt;* software as a service (SaaS)&lt;br /&gt;* Other recent (ca. 2007–09) technologies that rely on the Internet to satisfy the computing needs of users.&lt;br /&gt;&lt;br /&gt;Cloud computing services often provide common business applications online that are accessed from a web browser, while the software and data are stored on the servers.&lt;br /&gt;&lt;br /&gt;The term cloud is used as a metaphor for the Internet, based on how the Internet is depicted in computer network diagrams and is an abstraction for the complex infrastructure it conceals.&lt;br /&gt;&lt;br /&gt;Cloud computing users can avoid capital expenditure (CapEx) on hardware, software, and services when they pay a provider only for what they use. Consumption is usually billed on a utility (e.g. resources consumed, like electricity) or subscription (e.g. time based, like a newspaper) basis with little or no upfront cost. (from&lt;strong&gt; &lt;/strong&gt;&lt;a href="http://en.wikipedia.org/wiki/Cloud_computing"&gt;&lt;strong&gt;wikipedia&lt;/strong&gt;&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Late 2008, market research group IDC surveyed IT professionals and concluded that 4% of enterprises already have implemented some form of cloud computing, although it's often in the form of software as a service (SaaS). That number will more than double by 2012, to 9% of enterprises, said Frank Gens, senior VP of IDC, as he opened the Cloud Computing Forum in San Francisco&lt;br /&gt;&lt;br /&gt;Impact of cloud computing will far exceed those modest figures, he added. Applications designed to run in the cloud "will represent 25% of the net new growth in IT spending," versus spending for on-premises IT, he predicted. SaaS by itself is projected to nearly double from $9 billion to $17 billion in that time period, Gens said.&lt;br /&gt;&lt;br /&gt;Joseph Tobolski, director of cloud computing at Accenture's Technology Labs, pointed out that "Achieving a 5% to 9% adoption rate through 2012 might be understating it", He said Accenture's cloud consulting services are growing, and it's even produced an enterprise service bus to make it easier for its clients to link their data centers to cloud services. IT managers should be trying to make their internal operations function more as an enterprise cloud. (from&lt;strong&gt; &lt;/strong&gt;&lt;a href="http://www.informationweek.com/news/services/saas/showArticle.jhtml?articleID=214502033"&gt;&lt;strong&gt;InformationWeek&lt;/strong&gt;&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;In current an uncertain economy, An AMI-Partners survey finds SMB are focusing more on software as a service (SAAS) and managed services solutions as IT budgets tighten.&lt;br /&gt;The study’s focus was to analyze how the economy is impacting SMBs’ perceptions, usage and purchasing behaviors related to IT. Among key changes identified in the study was the drastic increase of SMBs worldwide now showing strong interest in managed services and SAAS and dramatic increases in midmarket companies’ plans to outsource specific IT needs such as storage, security and telecommunications.&lt;br /&gt;&lt;br /&gt;The study, released this summer, found that most SMBs feel the economy is starting to stabilize, however, businesses are still seeking ways to significantly reduce costs and increase revenues. This includes exploring IT products and services that can directly and immediately help ease exaggerated pain points like restricted cash flow and limited access to credit. “Solutions like SAAS and managed services offer flexible payment options and usage-based models that are very attractive to SMBs right now, as they struggle to overcome the credit crunch and very tight IT budgets,” said AMI Vice President of Marketing Chad Thompson. (from&lt;strong&gt; &lt;/strong&gt;&lt;a href="http://www.eweek.com/c/a/IT-Management/Economy-Ignites-Interest-in-Managed-Services-and-SaaS-Repor"&gt;&lt;strong&gt;eWeek&lt;/strong&gt;&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;A SaaS Summit 2009, organized in Bangalore has also echoed &amp;amp; presented the trends of SaaS adoption in the current uncertain economy.&lt;br /&gt;&lt;br /&gt;"SaaS is the new reality, which enterprises are facing," said M S Krishnan, professor of Business Information Technology at the Ross School of Business, University of Michigan.&lt;br /&gt;&lt;br /&gt;"Recession has taught a lesson for restructuring of businesses as the market becomes more and more competing and giving way for newer technologies like SaaS. The social demand for these models have increased which are going to transform the business models," he added.&lt;br /&gt;&lt;br /&gt;Balka Baruah Aggarwal, Manager, Syndicated Research, Springboard Research said IT department in enterprises have begun to move to the back-end and the focus is turning on the large scale business goals.&lt;br /&gt;&lt;br /&gt;"IT has become the secondary focus," she said. "SaaS plays a vital role in this fundamental shift of enterprises looking at their technology investments, as it allows them to keep the focus on their business without worrying about the technology as well as successfully tweaks into your business process."&lt;br /&gt;&lt;br /&gt;The event witnessed the delivery of ERP on a SaaS model as the emerging trend. With no initial investment costs, affordable pricing models as well as flexibility to customization, ERP on SaaS was seen as the next innovative technology by the speakers of the Summit.&lt;br /&gt;&lt;br /&gt;Highlighting as an example, A vice president from Indian metal products compay, said, "One of our purposes is not to have any IT team in our company, that is why we went for a web-hosted ERP model. We also realized that the model can be quickly implemented and also scale our future requirements without any huge investments." (from&lt;strong&gt; &lt;/strong&gt;&lt;a href="http://www.ciol.com/Enterprise/News-Reports/SaaS-gaining-grounds-in-downturn/17709122468/0/"&gt;&lt;strong&gt;CIOL&lt;/strong&gt;&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Resources&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gridasia.ngp.org.sg/"&gt;Grid Asia&lt;/a&gt; - 2009&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gridasia.ngp.org.sg/2009/programs_cloudsg.php#basic_intro_cloud"&gt;Basic Introduction to Cloud Computing Applications &amp;amp; Systems&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ngp.org.sg/events/2009/Datacraft%20CXO%20Luncheon%20v5.pdf"&gt;Developing a Cloud Ecosystem in Singapore&lt;/a&gt; - Singapore IDA's Approach&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Cloud_computing"&gt;Cloud computing&lt;/a&gt; - WIKIPEDIA&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.informationweek.com/news/services/saas/showArticle.jhtml?articleID=214502033"&gt;Cloud Implementation To Double By 2012&lt;/a&gt; - InformationWeek&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.eweek.com/c/a/IT-Management/Economy-Ignites-Interest-in-Managed-Services-and-SaaS-Repor"&gt;Economy Ignites Interest in Managed Services and SAAS&lt;/a&gt; - eWeek&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ciol.com/Enterprise/News-Reports/SaaS-gaining-grounds-in-downturn/17709122468/0/"&gt;SaaS gaining grounds in downturn&lt;/a&gt; - CIOL&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sun.com/offers/docs/cloud_computing_primer.pdf"&gt;Getting Startedwith Cloud Computing&lt;/a&gt; - Sun&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-5124693413224585215?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/5124693413224585215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=5124693413224585215' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/5124693413224585215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/5124693413224585215'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2009/08/cloud-computing-saas-and-prospects.html' title='Cloud Computing , SaaS and Prospects'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-1146144722787505798</id><published>2009-03-24T02:36:00.000-07:00</published><updated>2009-03-24T02:53:23.805-07:00</updated><title type='text'>Microsoft Operations Framework</title><content type='html'>The goal of MOF is to provide guidance to IT organizations to help them create, operate, and support IT services while ensuring that the investment in IT delivers expected business value at an acceptable level of risk. &lt;br /&gt;&lt;br /&gt;MOF’s purpose is to create an environment where business and IT can work together toward operational maturity, using a proactive model that defines processes and standard procedures to gain efficiency and effectiveness. MOF promotes a logical approach to decision-making and communication and to the planning, deployment, and support of IT services.&lt;br /&gt;&lt;br /&gt;The MOF IT service lifecycle encompasses all of the activities and processes involved in managing an IT service: its conception, development, operation, maintenance, and—ultimately—its retirement. MOF organizes these activities and processes into Service Management Functions (SMFs), which are grouped together in lifecycle phases. Each SMF is anchored within a lifecycle phase and contains a unique set of goals and outcomes supporting the objectives of that phase. The SMFs can be used as stand-alone sets of processes, but it is when SMFs are used together that they are most effective in ensuring service delivery at the desired quality and risk levels.&lt;br /&gt;&lt;br /&gt;MOF 4.0: it is designed to help IT professionals quickly access useful, relevant content. It contains practical guidance—not just theory—and its streamlined approach makes it possible to use either the entire framework or one process from a particular service management function (SMF).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=457ED61D-27B8-49D1-BACA-B175E8F54C0C&amp;amp;displaylang=en"&gt;MOF Job Aids&lt;/a&gt;: These templates, worksheets, and tools help IT pros apply MOF 4.0 guidance to specific scenarios and challenges.IT Pro Quick Start Kit. Save time and money by learning more about MOF 4.0.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=457ED61D-27B8-49D1-BACA-B175E8F54C0C&amp;amp;displaylang=en"&gt;The IT Pro Quick Start Kit&lt;/a&gt;: it gives an overview of MOF 4.0 and provides the tools to start using it today. The kit includes links to presentations and data sheets, information on MOF, compliance, and training and certification, ready-to-use graphics, and supporting materials.&lt;br /&gt;&lt;br /&gt;To learn more, visit &lt;a href="http://www.microsoft.com/MOF"&gt;www.microsoft.com/MOF&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Further reading&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;ITIL vs. MOF:&lt;br /&gt;&lt;a href="http://www.searchsmbasia.com/content/itil-vs-mof-find-best-it-framework-option-midmarket?page=0%2C0"&gt;Find the best IT framework option for the midmarket&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-1146144722787505798?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/1146144722787505798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=1146144722787505798' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1146144722787505798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1146144722787505798'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2009/03/microsoft-operations-framework.html' title='Microsoft Operations Framework'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-7239536162182602974</id><published>2009-02-15T04:57:00.000-08:00</published><updated>2009-02-15T05:21:36.629-08:00</updated><title type='text'>Product Lifecycle Management (PLM)</title><content type='html'>&lt;span style="font-weight: bold;"&gt;What is PLM? - (&lt;/span&gt;&lt;a style="font-weight: bold;" href="http://plmtechnologyguide.com/site/?page_id=435"&gt;Excerpt from PLM Technology Guide&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;)&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;Product lifecycle management or PLM is an all-encompassing approach for innovation, new product development and introduction (NPDI) and product information management from ideation to end of life. &lt;a href="http://plmtechnologyguide.com/site/?page_id=27" target="_blank"&gt;PLM Systems&lt;/a&gt; as an enabling technology for PLM integrate people, data, processes, and business systems and provide a product information backbone for companies and their extended enterprise.&lt;/span&gt;  &lt;p class="body"&gt;&lt;strong&gt;Business Drivers&lt;/strong&gt;&lt;/p&gt; &lt;p class="body"&gt;Innovation and new product development are essential for most companies to sustain future revenue growth. Customers demand more new products in shorter time intervals, often customized to their own needs. They want more attractive designs, better performance, better quality, lower prices, and instant availability. To meet these needs companies have to be able to collaborate closely within their own organization and with partners and suppliers located in various parts of the world. At the same time companies have to manage increasing product and manufacturing complexities due to a quickly growing number of environmental and regulatory rules and requirements.&lt;/p&gt; &lt;p class="boldbody"&gt;&lt;strong&gt;The Problem&lt;/strong&gt;&lt;/p&gt; &lt;p class="body"&gt;Accelerating innovation and increasing the number of successful new product introductions is a huge challenge for most organizations today because of their traditionally serial, fragmented, manual, and paper based processes. The result is that many companies suffer from NPDI practices that are slow, resource intensive, costly, inflexible, provide little visibility, and are difficult to manage and control.&lt;/p&gt; &lt;p class="body" style="text-align: center;"&gt;&lt;a href="http://plmtechnologyguide.com/site/wp-content/uploads/2008/10/plm_serial_process.gif"&gt;&lt;img class="size-full wp-image-436 aligncenter" style="border: 0pt none ;" title="plm_serial_process" src="http://plmtechnologyguide.com/site/wp-content/uploads/2008/10/plm_serial_process.gif" alt="" width="288" height="142" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p class="boldbody"&gt;&lt;strong&gt;The Solution – PLM &lt;/strong&gt;&lt;/p&gt; &lt;p class="body"&gt;Through their ability to integrate all product related data and processes and to eliminate boundaries in the value chain, &lt;a href="http://plmtechnologyguide.com/site/?page_id=27" target="_blank"&gt;PLM Systems&lt;/a&gt; can significantly reduce non-value added activities and enable stakeholders to collaborate in real time using a consistent set of information throughout the entire product lifecycle.&lt;/p&gt; &lt;p class="body" style="text-align: center;"&gt;&lt;a href="http://plmtechnologyguide.com/site/wp-content/uploads/2008/10/plm_collaboration.gif"&gt;&lt;img class="size-full wp-image-437 aligncenter" style="border: 0pt none ;" title="plm_collaboration" src="http://plmtechnologyguide.com/site/wp-content/uploads/2008/10/plm_collaboration.gif" alt="" width="216" height="153" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p class="body"&gt; &lt;/p&gt;&lt;p class="body"&gt;As a result, &lt;em&gt;productivity                         improvements of over 60%&lt;/em&gt; in NPDI-related activities have been achieved through PLM-enabled, enterprise-wide data and process optimization and integration that have allowed companies to:&lt;/p&gt; &lt;ul&gt;&lt;li class="body"&gt;Drive innovation&lt;/li&gt;&lt;li class="body"&gt;Accelerate Revenues&lt;/li&gt;&lt;li class="body"&gt;Increase Productivity&lt;/li&gt;&lt;li class="body"&gt;Reduce Costs&lt;/li&gt;&lt;li class="body"&gt;Improve Quality&lt;/li&gt;&lt;li class="body"&gt;Ensure Compliance&lt;/li&gt;&lt;li class="body"&gt;Shorten Time-to-Market&lt;/li&gt;&lt;/ul&gt; &lt;p class="body"&gt;In today’s highly competitive, fast-paced and global business environment, well-designed and implemented PLM practices, processes and technologies that support an organization’s strategies for innovation and growth can afford companies a real competitive advantage.&lt;/p&gt;&lt;p class="body"&gt;Reference URLs:&lt;/p&gt;&lt;span&gt;&lt;a href="http://plmtechnologyguide.com/site/"&gt;PLM Technology Guide&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.meta-fore.com/education/wpreg.php"&gt;&lt;span class="boldbody"&gt;10 Best Practices for Successful                           PLM Evaluations &lt;/span&gt;&lt;/a&gt;&lt;span class="body"&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Product_Lifecycle_Management"&gt;&lt;br /&gt;PLM from Wikipedia&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.zdnetasia.com/news/software/0,39044164,62013317,00.htm"&gt;Oralce Accquire PLM Company&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="body"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-7239536162182602974?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/7239536162182602974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=7239536162182602974' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7239536162182602974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7239536162182602974'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2009/02/product-lifecycle-management-plm.html' title='Product Lifecycle Management (PLM)'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-4806910552351990925</id><published>2009-02-09T00:56:00.000-08:00</published><updated>2009-02-15T02:27:53.050-08:00</updated><title type='text'>Unified Process vs Agile Process</title><content type='html'>What is UP? Definition from Wikipedia - &lt;a href="http://en.wikipedia.org/wiki/IBM_Rational_Unified_Process"&gt;IBM RUP&lt;/a&gt;&lt;br /&gt;What is Agile? Definition from Wikipedia - &lt;a href="http://en.wikipedia.org/wiki/Agile_software_development"&gt;&lt;span style="font-size:85%;"&gt;Agile software development&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Comparison of UP &amp;amp; Agile &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Software development processes define a list of activities to undertake, what order the activities should proceed in, what the inputs and outputs of each activity should be, etc.  What few software process specifies is when to stop.  It’s often too easy to overuse a process, and continue to produce system designs, resulting in a heavyweight, document centric process.  Essentially, process is followed for process sake, rather than adding value to the stakeholders of the project.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Although UP is iterative, it follows the general phases of inception, elaboration, construction, and transition in a more or less linear fashion.  As the development proceeds less time is spent on requirements and analysis, and more time is spent on construction, testing, and transition.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Agile processes on the other hand, spend time on each activity in each iteration.  During each iteration (usually 2-4 weeks) a little of all steps (requirements, analysis, design, development, test, etc.) are undertaken.  The goal is to have stable software which could be shipped at the end of each iteration.  At the beginning of each iteration, all stakeholders meet to reorganise requirements and their priorities, while at the end of the iteration, working software is demonstrated to the stakeholders.  This ensures that customer value is being added at all times, and that progress is being made on what matters, working software.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;UP and its relative the Rational Unified Process (RUP) are quire comprehensive, and were designed to be modified to suit the project being developed.  This adds another layer of complexity to the development effort, as the process has first to be modified before being implemented.  While this allows for the flexibility to use UP on any project, it requires teams to have access to UP experts to ensure that the process is being defined and used properly.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Agile on the other hand tends to be used for small to medium sized projects involving teams up to 10 closely knit developers.  Once teams become bigger than this, agile methodologies begin to fail, as they don’t scale to large teams, or teams spread across geographies." &lt;/span&gt;- from &lt;a href="http://ccollins.wordpress.com/about/"&gt;chris&lt;/a&gt; &lt;a href="http://ccollins.wordpress.com/2008/06/11/unified-process-vs-agile-processes/"&gt;blog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Which one is better and which one to use?&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;like what chris said in his blog "&lt;span style="font-style: italic;"&gt;there is no silver bullet, or one size fits all approach. You need to tailor the process to the project and your individual circumstances. &lt;/span&gt;"  Agile strike a good balance between process and productivity, but there is some project out there where agile may be an inappropriate process of choice.  RUP is great, but you have to have experienced people doing RUP projects as you don't want to overload everyone with documentation, but also have to carefully look at what the customer wants.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;One important difference (from &lt;a href="http://bloggingabout.net/blogs/dennis/archive/2005/04/20/agile-vs-rup.aspx"&gt;dennis&lt;/a&gt;) between UP &amp;amp; Agile is that communication in UP is more through documents where as in Agile it's face to face communcation between the customer and the entire team.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SCRUM&lt;/span&gt; - What is SCRUM? Definition from Wikipedia - &lt;span style="font-size:85%;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Scrum_%28development%29"&gt;SCRUM&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Scrum is an iterative incremental process of software development commonly used with agile software development.&lt;br /&gt;&lt;br /&gt;Although Scrum was intended to be for management of software development projects, it can be used in running software maintenance teams, or as a program management approach.&lt;br /&gt;&lt;br /&gt;Scrum is a process skeleton that includes a set of practices and predefined roles. The main roles in Scrum are the "ScrumMaster" who maintains the processes and works similarly to a project manager, the "Product Owner" who represents the stakeholders, and the "Team" which includes the developers.&lt;br /&gt;&lt;br /&gt;During each "sprint", typically a 2–4 week period (length decided by the team), the team creates an increment of usable software. The set of features that go into a sprint come from the product "backlog", which is a prioritized set of high level requirements of work to be done.&lt;br /&gt;&lt;br /&gt;Scrum enables the creation of self-organizing teams by encouraging co-location of all team members, and verbal communication across all team members and disciplines that are involved in the project.&lt;br /&gt;&lt;br /&gt;A key principle of Scrum is its recognition that during a project the customers can change their minds about what they want and need (often called requirements churn), and that unpredicted challenges cannot be easily addressed in a traditional predictive or planned manner. As such, Scrum adopts an empirical approach—accepting that the problem cannot be fully understood or defined, focusing instead on maximizing the team's ability to deliver quickly and respond to emerging requirements.&lt;br /&gt;&lt;br /&gt;There are several implementations of systems for managing the Scrum process which range from yellow stickers and whiteboards to software packages. One of Scrum's biggest advantages is that it is very easy to learn and requires little effort to start using.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Scrum Meetings&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Daily Scrum&lt;/span&gt;&lt;br /&gt;  Each day during the sprint, a project status meeting occurs. This is called a "scrum", or "the daily standup". The scrum has specific guidelines:&lt;br /&gt;&lt;br /&gt;      * The meeting starts precisely on time. Often there are team-decided punishments for tardiness (e.g. money, push-ups, hanging a rubber chicken around your neck)&lt;br /&gt;      * All are welcome, but only "pigs" may speak&lt;br /&gt;      * The meeting is timeboxed at 15 minutes regardless of the team's size&lt;br /&gt;      * All attendees should stand (it helps to keep meeting short)&lt;br /&gt;      * The meeting should happen at the same location and same time every day&lt;br /&gt;&lt;br /&gt;  During the meeting, each team member answers three questions:&lt;br /&gt;&lt;br /&gt;      * What have you done since yesterday?&lt;br /&gt;      * What are you planning to do by today?&lt;br /&gt;      * Do you have any problems preventing you from accomplishing your goal? (It is the role of the ScrumMaster to remember these impediments.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sprint Planning Meeting&lt;/span&gt;&lt;br /&gt;  At the beginning of the sprint cycle (every 15–30 days), a "Sprint Planning Meeting" is held.&lt;br /&gt;&lt;br /&gt;      * Select what work is to be done&lt;br /&gt;      * Prepare the Sprint Backlog that details the time it will take to do that work&lt;br /&gt;      * 8 hour limit&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sprint Review Meeting&lt;/span&gt;&lt;br /&gt;  At the end of a sprint cycle, two meetings are held: the "Sprint Review Meeting" and the "Sprint Retrospective"&lt;br /&gt;&lt;br /&gt;      * Review the work that was completed and not completed&lt;br /&gt;      * Present the completed work to the stakeholders (a.k.a. "the demo")&lt;br /&gt;      * Incomplete work cannot be demonstrated&lt;br /&gt;      * 4 hour time limit&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sprint Retrospective&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;      * All team members reflect on the past sprint.&lt;br /&gt;      * Make continuous process improvement.&lt;br /&gt;      * Two main questions are asked in the sprint retrospective: What went well during the sprint? What could be improved in the next sprint?&lt;br /&gt;      * 3 hour time limit&lt;br /&gt;&lt;br /&gt;      Please refer to wikipedia for more about &lt;span style="font-weight: bold;"&gt;role, artifaces&lt;/span&gt; in scrum&lt;br /&gt;   &lt;br /&gt;      Scrum is kind of adaptive project management and here are some general practices of Scrum:&lt;br /&gt;&lt;br /&gt;  * Customers become a part of the development team (i.e. the customer must be genuinely interested in the output.)&lt;br /&gt;  * Scrum has frequent intermediate deliveries with working functionality, like all other forms of agile software processes. This enables the customer to get working software earlier and enables the project to change its requirements according to changing needs.&lt;br /&gt;  * Frequent risk and mitigation plans are developed by the development team itself—risk mitigation, monitoring and management (risk analysis) occurs at every stage and with commitment.&lt;br /&gt;  * Transparency in planning and module development—let everyone know who is accountable for what and by when.&lt;br /&gt;  * Frequent stakeholder meetings to monitor progress—balanced dashboard updates (delivery, customer, employee, process, stakeholders)&lt;br /&gt;  * There should be an advance warning mechanism, i.e. visibility to potential slippage or deviation ahead of time.&lt;br /&gt;  * No problems are swept under the carpet. No one is penalized for recognizing or describing any unforeseen problem.&lt;br /&gt;  * Workplaces and working hours must be energized—"Working more hours" does not necessarily mean "producing more output."&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reference URLs:&lt;br /&gt;&lt;span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;a href="http://www.agilemodeling.com/essays/agileModelingRUP.htm"&gt;&lt;span style="font-size:85%;"&gt;Agile Modeling and the Rational Unified Process        (RUP)&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;h2 class="pageTitle"&gt;&lt;a href="http://bloggingabout.net/blogs/dennis/archive/2005/04/20/agile-vs-rup.aspx"&gt;&lt;span style="font-size:85%;"&gt;Agile vs. RUP&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h2 class="pageTitle"&gt;&lt;span style="font-size:85%;"&gt;&lt;a style="font-weight: normal;" href="http://ccollins.wordpress.com/2008/06/11/unified-process-vs-agile-processes/"&gt;Unified Process vs Agile Processes&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/h2&gt;&lt;a href="http://video.google.com/videoplay?docid=-7230144396191025011&amp;amp;hl=en"&gt;&lt;span style="display: inline;" id="long-desc"&gt;Google Tech Talks - Srcum&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-4806910552351990925?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/4806910552351990925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=4806910552351990925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/4806910552351990925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/4806910552351990925'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2009/02/unified-process-vs-agile-process.html' title='Unified Process vs Agile Process'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-6473006029435336634</id><published>2009-02-06T03:02:00.000-08:00</published><updated>2009-02-06T03:16:59.841-08:00</updated><title type='text'>EclipseLink</title><content type='html'>&lt;p&gt;&lt;b&gt;EclipseLink&lt;/b&gt; is an &lt;a href="http://en.wikipedia.org/wiki/Open_source" title="Open source"&gt;open source&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Object-relational_mapping" title="Object-relational mapping"&gt;object-relational mapping&lt;/a&gt; package for &lt;a href="http://en.wikipedia.org/wiki/Java_%28programming_language%29" title="Java (programming language)"&gt;Java&lt;/a&gt; developers. It provides a powerful and flexible framework for storing Java objects in a relational database or for converting Java objects to XML documents.&lt;/p&gt; &lt;p&gt;EclipseLink's original contribution came from the &lt;a href="http://en.wikipedia.org/wiki/Oracle_Corporation" title="Oracle Corporation"&gt;Oracle&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/TopLink" title="TopLink"&gt;TopLink&lt;/a&gt; product in 2006.&lt;/p&gt; &lt;p&gt;EclipseLink supports several standard persistence related APIs including:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Java_Persistence_API" title="Java Persistence API"&gt;Java Persistence API (JPA)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/JAXB" title="JAXB" class="mw-redirect"&gt;Java XML Binding (JAXB)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Service_Data_Objects" title="Service Data Objects"&gt;Service Data Objects (SDO)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;EclipseLink provides support for:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Object relational mapping (ORM)&lt;/li&gt;&lt;li&gt;Object XML mapping (OXM)&lt;/li&gt;&lt;li&gt;Object persistence to Enterprise Information Systems (EIS)&lt;/li&gt;&lt;li&gt;Database web services&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Sun_Microsystems" title="Sun Microsystems"&gt;Sun Microsystems&lt;/a&gt; has selected the EclipseLink project to be the &lt;a href="http://en.wikipedia.org/wiki/Reference_implementation" title="Reference implementation" class="mw-redirect"&gt;reference implementation&lt;/a&gt; for JPA 2.0.&lt;sup id="cite_ref-jpa2.0_ref_impl_0-0" class="reference"&gt;&lt;a href="http://en.wikipedia.org/wiki/EclipseLink#cite_note-jpa2.0_ref_impl-0" title=""&gt;&lt;span&gt;[&lt;/span&gt;1&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;Reference List:&lt;br /&gt;&lt;br /&gt;Webnar: http://live.eclipse.org/node/490&lt;br /&gt;Wikipedia: http://en.wikipedia.org/wiki/EclipseLink&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/java/library/j-sdo/"&gt;Introduction of SDO&lt;/a&gt;&lt;br /&gt;&lt;a href="http://java.dzone.com/articles/introducing-eclipselink?page=0,0"&gt;&lt;span style="font-size:85%;"&gt;Introducing EclipseLink&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://eclipselink.blogspot.com/"&gt;EclipseLink Team Blog&lt;/a&gt;&lt;br /&gt;&lt;h1 class="firstHeading"&gt;&lt;a href="http://wiki.eclipse.org/EclipseLink/UserGuide"&gt;&lt;span style="font-size:85%;"&gt;EclipseLink/UserGuide&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-6473006029435336634?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/6473006029435336634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=6473006029435336634' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/6473006029435336634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/6473006029435336634'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2009/02/eclipselink.html' title='EclipseLink'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-9076107363738180904</id><published>2009-01-05T03:14:00.002-08:00</published><updated>2009-02-08T20:39:21.309-08:00</updated><title type='text'>Java Optical Character Recognition</title><content type='html'>&lt;p style="font-style: italic;"&gt;&lt;b&gt;Optical character recognition&lt;/b&gt;, usually abbreviated to &lt;b&gt;OCR&lt;/b&gt;, is the &lt;a href="http://en.wikipedia.org/wiki/Mechanical" title="Mechanical"&gt;mechanical&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Electronics" title="Electronics"&gt;electronic&lt;/a&gt; translation of &lt;a href="http://en.wikipedia.org/wiki/Image" title="Image"&gt;images&lt;/a&gt; of handwritten, typewritten or printed text (usually captured by a &lt;a href="http://en.wikipedia.org/wiki/Image_scanner" title="Image scanner"&gt;scanner&lt;/a&gt;) into machine-editable text.&lt;/p&gt; &lt;p style="font-style: italic;"&gt;OCR is a field of research in &lt;a href="http://en.wikipedia.org/wiki/Pattern_recognition" title="Pattern recognition"&gt;pattern recognition&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Artificial_intelligence" title="Artificial intelligence"&gt;artificial intelligence&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Machine_vision" title="Machine vision"&gt;machine vision&lt;/a&gt;. Though academic research in the field continues, the focus on OCR has shifted to implementation of proven techniques. Optical character recognition (using optical techniques such as mirrors and lenses) and digital character recognition (using scanners and computer algorithms) were originally considered separate fields. Because very few applications survive that use true optical techniques, the OCR term has now been broadened to include &lt;a href="http://en.wikipedia.org/wiki/Digital_image_processing" title="Digital image processing"&gt;digital image processing&lt;/a&gt; as well.&lt;/p&gt; &lt;p style="font-style: italic;"&gt;Early systems required training (the provision of known samples of each character) to read a specific &lt;a href="http://en.wikipedia.org/wiki/Typeface" title="Typeface"&gt;font&lt;/a&gt;. "Intelligent" systems with a high degree of recognition accuracy for most fonts are now common. Some systems are even capable of reproducing formatted output that closely approximates the original scanned page including images, columns and other non-textual components. (excerpt from wikipedia)&lt;br /&gt;&lt;/p&gt;My understanding for Java OCR implmentation so far is that there is no pure java implementation and most of implementation available in the market is a java porting / wrapper from existing implementation from other language (e.g. c / c++).&lt;br /&gt;&lt;br /&gt;You can find list of available softwares from &lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Optical_character_recognition"&gt;ocr page&lt;/a&gt; from wikipedia&lt;br /&gt;&lt;br /&gt;Reference List:&lt;br /&gt;&lt;h1 style="font-weight: normal; font-family: arial;" class="titleHeader"&gt;&lt;span style="font-size:78%;"&gt;&lt;a href="http://www.experts-exchange.com/Programming/Languages/Java/Q_21582299.html"&gt;Optical Character Recognition&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 style="font-weight: normal; font-family: arial;" class="titleHeader"&gt;&lt;span style="font-size:78%;"&gt;&lt;a href="http://java.sun.com/developer/technicalArticles/Programming/robotics/"&gt;Futurama: Using Java Technology to Build Robots That Can See, Hear Speak, and Move&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 style="font-weight: normal; font-family: arial;"&gt;&lt;span style="font-size:78%;"&gt;&lt;a href="http://www.javalobby.org/java/forums/m91807685.html"&gt;Optical Character Recognition(OCR) &lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;span style="font-size:78%;"&gt;&lt;a style="font-family: arial;" href="http://www.velocityreviews.com/forums/t126795-java-ocr-.html"&gt;Java OCR&lt;/a&gt;&lt;/span&gt; &lt;h1 style="font-weight: normal; font-family: arial;"&gt;&lt;span style="font-size:78%;"&gt;&lt;a href="http://schmidt.devlib.org/java/libraries-pdf.html"&gt;Java libraries to read and write PDF files&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;http://www.gnome.sk/&lt;br /&gt;&lt;br /&gt;http://asprise.com/home/&lt;br /&gt;&lt;br /&gt;http://www.sane-project.org/&lt;br /&gt;&lt;h1&gt;&lt;br /&gt;&lt;a href="http://www.velocityreviews.com/forums/t126795-java-ocr-.html"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-9076107363738180904?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/9076107363738180904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=9076107363738180904' title='189 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/9076107363738180904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/9076107363738180904'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2009/01/java-optical-character-recognition.html' title='Java Optical Character Recognition'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>189</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-7248466670308995196</id><published>2009-01-05T03:14:00.001-08:00</published><updated>2009-02-08T20:16:32.370-08:00</updated><title type='text'>JDesktop Integration Components (JDIC)</title><content type='html'>JDIC provides Java applications with access to functionalities and facilities provided by the   native desktop. It consists of a collection of Java packages and tools. JDIC supports a variety of features such as embedding the native browser, launching the desktop applications, creating tray icons on the desktop, registering file type associations, creating JNLP installer packages, etc (the project supports features such as embedding the native                          HTML browser, programmatically opening the native mail                          tool, using registered file-type viewers, and packaging                          JNLP applications as RPM, SVR4, and MSI installer packages.                          As a bonus, an SDK for developing platform-independent                          screensavers is included).&lt;br /&gt;&lt;br /&gt;Many new features are contributed as &lt;a href="https://jdic.dev.java.net/#incubator"&gt; incubator projects&lt;/a&gt; from the community.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reference urls:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://jdic.dev.java.net/"&gt;&lt;strong&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;J&lt;/span&gt;&lt;/strong&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;b&gt;D&lt;/b&gt;&lt;/span&gt;esktop   &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;b&gt;I&lt;/b&gt;&lt;/span&gt;ntegration &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;b&gt;C&lt;/b&gt;&lt;/span&gt;omponents   (&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;b&gt;JDIC&lt;/b&gt;&lt;/span&gt;) project&lt;/a&gt;&lt;br /&gt;&lt;a href="http://javadesktop.org/articles/jdic/"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="font-family:Arial,Helvetica,sans-serif;"&gt;Introducing                      &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-family:Arial,Helvetica,sans-serif;font-size:85%;"  &gt;&lt;b&gt;                      JDIC&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://workshop.evolutionzone.com/2008/09/06/multiple-jdic-browsers-in-processing-sketch/"&gt;Multiple JDIC browsers integrated into Processing sketch&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-7248466670308995196?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/7248466670308995196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=7248466670308995196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7248466670308995196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7248466670308995196'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2009/01/jdesktop-integration-components-jdic.html' title='JDesktop Integration Components (JDIC)'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-376846675516581392</id><published>2008-10-15T04:16:00.000-07:00</published><updated>2008-10-15T04:29:40.653-07:00</updated><title type='text'>Working with XML</title><content type='html'>When work with XML, most of time we start with a question of which technology or library should be used to speed up the development and also server the biz spec.&lt;br /&gt;&lt;br /&gt;One guy summarized it in an article and here is the excerpt:&lt;br /&gt;&lt;br /&gt;&lt;h3 style="font-style: italic;"&gt;Which tool should I pick?&lt;/h3&gt;  &lt;p style="font-style: italic;"&gt; If you're new to XML you might not quite understand the need for having several XML tools. You might think that an API that allows you to read and write an XML document would be sufficient. The need for several tools arises when you realize that XML can be used in a lot of very different situations. Some examples are: &lt;/p&gt; &lt;ul style="font-style: italic;"&gt;&lt;li&gt;configuration files--or parameter files--are often written in XML. They    typically contain technical data for systems like web servers.&lt;/li&gt;&lt;li&gt;XML files can be used when sending updates of business data to an    application. Think of a list of new customers, orders or exchange rates.&lt;/li&gt;&lt;li&gt;XML data sometimes have to be persisted on files or in databases, but more    often XML is only a format held in memory.&lt;/li&gt;&lt;li&gt;XML can be used as a description language for other types of XML    documents. An example is XML schemas that are used to validate other XML    documents.&lt;/li&gt;&lt;/ul&gt; &lt;p style="font-style: italic;"&gt; Let's look at some of the different situations where you need to read an XML document, for example from a file. &lt;/p&gt; &lt;p style="font-style: italic;"&gt; When reading a configuration file, you  need to get some or all of the parameters extracted from the file and then stored somewhere in your program. Digester is a great tool for this kind of operation. An introduction to Digester is "&lt;a href="http://javaboutique.internet.com/tutorials/digester/"&gt;Digesting XML documents&lt;/a&gt;". Digester is also a natural choice if you only want to read some of the data in an XML file. &lt;/p&gt; &lt;p style="font-style: italic;"&gt; If you want to read all the data in an XML file and then continue to do some processing with these data, then you need to convert the XML into some kind of Java object structure. The simplest way to do this is to convert into JavaBeans, since beans are simple to work with. My own favorite tools for converting between XML files and JavaBeans are Castor and XMLBeans. Two articles that give you more information are "&lt;a href="http://javaboutique.internet.com/tutorials/CastorXML/index.html"&gt; Converting XML documents to Java objects with Castor XML&lt;/a&gt;" and "&lt;a href="http://javaboutique.internet.com/reviews/xml_javabeans/"&gt;Converting XML to JavaBeans with XMLBeans&lt;/a&gt;". XMLBeans is currently my number one pick since it seems capable of handling even the most complex XML structures and automatically packs the generated JavaBeans into a jar-file. &lt;/p&gt; &lt;p style="font-style: italic;"&gt; Castor and XMLBeans can be used when your XML files have a known, fixed structure that doesn't change over time.  Castor and XMLBeans typically take the XML schemas that define the XML structures and generate beans for you. This is something you'll have to do manually, so you need an XML format that doesn't change too often. &lt;/p&gt; &lt;p style="font-style: italic;"&gt; If the format of your XML data is not fixed, you need to look for another tool. JDOM is such a tool, since it'll read any XML file and produce a tree-like structure in memory. This structure is very easy to work with for a Java programmer because of its simple API and its use of well-known Java objects like those implementing the &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/List.html"&gt;List&lt;/a&gt; interface. &lt;/p&gt;"&lt;br /&gt;&lt;br /&gt;For full article, read from &lt;a href="http://javaboutique.internet.com/tutorials/jdom&amp;amp;/article.html"&gt;here&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;Additional reading list:&lt;br /&gt;&lt;h1&gt;&lt;span style="font-size:78%;"&gt;&lt;a href="http://javaboutique.internet.com/tutorials/jdom&amp;amp;/article.html"&gt;Working with JDOM, XPath and XSLT&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;span style="font-size:78%;"&gt;&lt;a href="http://javaboutique.internet.com/tutorials/JDOM/"&gt;&lt;span style="font-weight: bold;"&gt;Java and JDOM: the perfect couple&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span id="intelliTxt"&gt;&lt;/span&gt;&lt;h2&gt; &lt;a href="http://www.onjava.com/pub/a/onjava/2005/01/12/xpath.html"&gt;&lt;span style="font-size:78%;"&gt;Parsing an XML Document with XPath&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-376846675516581392?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/376846675516581392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=376846675516581392' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/376846675516581392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/376846675516581392'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2008/10/working-with-xml.html' title='Working with XML'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-5201893714636375563</id><published>2008-10-14T02:15:00.000-07:00</published><updated>2008-10-14T02:26:26.456-07:00</updated><title type='text'>Java + Excel XLS</title><content type='html'>&lt;p&gt;Currently, I am doing a research on various solutions available for java &amp;amp; excel xls integration to be used for our next generation sales quotation tools. I found this &lt;a href="http://schmidt.devlib.org/java/libraries-excel.html"&gt;article&lt;/a&gt; already did some work and compile a list of solution available below:&lt;br /&gt;&lt;/p&gt;  &lt;table summary="A list of Java libraries to read or write Excel files." width="100%" border="1"&gt; &lt;tbody&gt;&lt;tr&gt;   &lt;th&gt;Library / package&lt;/th&gt;   &lt;th&gt;License&lt;/th&gt;   &lt;th&gt;Description&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="http://www.actuate.com/products/techzone/spreadsheettech/es_overview/eengine.asp"&gt;Actuate Spreadsheet Engine&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;Commercial, 30-day trial version available&lt;/td&gt;  &lt;td&gt;Write Excel (XLS) files.&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="http://alphaworks.ibm.com/alphabeans"&gt;ExcelAccessor&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;?&lt;br /&gt;&lt;/td&gt;  &lt;td&gt;Read and write Excel (XLS) files.&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="http://www.javaworld.com/javaworld/javaqa/2001-06/04-qa-0629-excel.html"&gt;ExcelReader&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;?&lt;/td&gt;  &lt;td&gt;JavaWorld article on how to read Microsoft Excel (XLS) files, including code.    Requires an installed Microsoft ODBC driver for Excel files, and Sun's ODBC-JDBC driver.  &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;   &lt;td&gt;&lt;a href="http://www.extentech.com/products/ExtenXLS/docs/intro3.jsp"&gt;ExtenXLS&lt;/a&gt;&lt;/td&gt;   &lt;td&gt;Commercial, 30-day trial version available&lt;/td&gt;   &lt;td&gt;Read and write Microsoft Excel (XLS) files.&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="http://jacob-project.sourceforge.net/wiki/index.php/Main_Page"&gt;JACOB project&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;LGPL&lt;/td&gt;  &lt;td&gt;Java COM bridge with examples to interface Excel.&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="http://www.andykhan.com/jexcelapi/index.html"&gt;Java Excel API&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;LGPL&lt;/td&gt;  &lt;td&gt;Read Excel (XLS) 97, 98 and 2000 files.&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a hreflang="de" href="http://www.heinerkuecker.de/Java2Excel_Sylk.html"&gt;Java to Excel conversion&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;?&lt;/td&gt;  &lt;td&gt;Write SYLK files, which Excel can import and export.&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="http://www.teamdev.com/jexcel/index.jsf"&gt;JExcel&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;Commercial&lt;/td&gt;  &lt;td&gt;Swing component to integrate Excel via JNI.&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="http://jxls.sourceforge.net/"&gt;jXLS&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;LGPL&lt;/td&gt;  &lt;td&gt;Create Excel files using XLS templates.&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="http://jakarta.apache.org/poi/"&gt;POI&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;a id="poi"&gt;Apache Software License 1.1&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;Read and write Microsoft OLE 2 compound document format files.     This includes MS Office files (DOC, XLS, PPT) written with Office versions that were released after 1997.&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="http://www.snowbound.com/format/excel.html"&gt;Snowbound&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;Commercial&lt;/td&gt;  &lt;td&gt;Read Excel files.&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="http://officewriter.softartisans.com/officewriter-240.aspx"&gt;SoftArtisans OfficeWriter&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;Commercial&lt;/td&gt;  &lt;td&gt;Write Word and Excel files.&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="http://www.ivistaportal.com/downloads/vp-jdbc.html"&gt;Vista JDBC&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;Commercial, 15-day trial version available&lt;/td&gt;  &lt;td&gt;JDBC driver to access MS Excel (XLS) files.&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="http://nilostep.com/"&gt;xlSQL&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;GPL&lt;/td&gt;  &lt;td&gt;JDBC driver to access MS Excel (XLS) and CSV files.&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt; In addition to this table, following links are viable choice for java &amp;amp; excel integration in the application.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.rgagnon.com/javadetails/java-0516.html"&gt;Handle Excel files&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://swik.net/excel+Java"&gt;Content Tagged with excel + Java&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.extentech.com/estore/product_detail.jsp?product_group_id=1"&gt;ExtenXLS Java Spreadsheet SDK&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://amateras.sourceforge.jp/cgi-bin/fswiki_en/wiki.cgi?page=XLSBeans"&gt;XLSBeans - mapping Excel sheets to POJOs&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jexcelapi.sourceforge.net/"&gt;Java Excel API&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/jacob-project/"&gt;JACOB - JAVA-COM Bridge to call COM components&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.javaworld.com/javaworld/javaqa/2001-08/02-qa-0824-excel2.html?page=1"&gt;The Java-Excel solution&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devx.com/Java/Article/17301/0/page/1"&gt;Read and Write Microsoft Excel Documents with Jakarta's POI&lt;/a&gt;  - (The Excel Document Model)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.xml.com/lpt/a/1096"&gt;Excel Reports with Apache Cocoon and POI&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.jxcell.net/features.htm"&gt;Jxcell&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://j-integra.intrinsyc.com/support/com/doc/excel_example.html"&gt;j-integra - Accessing Excel from Java&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.activexls.com/products/java_professional.aspx?gclid=CPS1m-CZppYCFRTuegodHiPF6w"&gt;ActiveXLS™ Professional for Java&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://poi.apache.org/"&gt;Apache POI - Java API To Access Microsoft Format Files&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jxls.sourceforge.net/"&gt;jXLS - generating Excel files using XLS templates&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-5201893714636375563?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/5201893714636375563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=5201893714636375563' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/5201893714636375563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/5201893714636375563'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2008/10/java-excel-xls.html' title='Java + Excel XLS'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-1215069213885983367</id><published>2008-06-12T20:25:00.000-07:00</published><updated>2008-09-04T07:19:56.188-07:00</updated><title type='text'>Cloudspace</title><content type='html'>As one of our project is looking for a open source, lightweight and stable database to be embedded into application, cloudspace has come into my eyes as its superior features and ready support of synchronization with various enterprise back ends, such as DB2 UDB™ or Informix® Dynamic Server.&lt;br /&gt;&lt;br /&gt;Cloudscape is the original zero-admin, embeddable, 100% Java relational database that entered the marketplace in 1996. In August 2004 IBM contributed Derby, a copy of its Cloudscape 10.0 relational database product, to the Apache Software Foundation (ASF) to help accelerate innovation around data-driven Java applications. IBM continues its Cloudscape commercial offering at no-charge, which adds features to the core Derby engine. The most current release is Cloudscape 10.1, which includes Apache Derby 10.1.&lt;br /&gt;&lt;br /&gt;Cloudscape- Key Features &lt;br /&gt;&lt;br /&gt;    * 100% Pure Java&lt;br /&gt;          o Completely portable to any hardware, any OS&lt;br /&gt;          o Only requires JVM (J2SE 1.3 or higher)&lt;br /&gt;    * Embeddable&lt;br /&gt;          o Can be installed as a JAR file (as part of a Java application)&lt;br /&gt;          o Can be started within an application&lt;br /&gt;          o Installation, startup and shutdown are invisible to user&lt;br /&gt;    * Fully-functional RDBMS&lt;br /&gt;&lt;br /&gt;    * Adheres to standards&lt;br /&gt;          o JDBC&lt;br /&gt;          o SQLJ&lt;br /&gt;          o ANSI SQL-92    *  "Zero" Administration&lt;br /&gt;          o No need for DBA at customer site&lt;br /&gt;          o Users may even be unaware that a database engine is present&lt;br /&gt;    * Lightweight&lt;br /&gt;          o Approx. 2MB “footprint”&lt;br /&gt;          o Can run on many “palm”-size devices (new feature!)&lt;br /&gt;    * Scales to Moderate Size&lt;br /&gt;          o No defined limits on table sizes&lt;br /&gt;          o Table size limit of 2GB in some environments (OS limit)&lt;br /&gt;          o Existing customer databases of &gt;10 GB working well&lt;br /&gt;    * Supports Disk Encryption&lt;br /&gt;          o Tested with IBM JCE&lt;br /&gt;&lt;br /&gt;    *  Easy for Application Developers to Use&lt;br /&gt;          o To set up, just copy Cloudscape JAR files and set Java CLASSPATH&lt;br /&gt;          o Database engine starts automatically when application attempts to connect to it&lt;br /&gt;    * Cloudscape databases are completely portable&lt;br /&gt;          o To move a Cloudscape database to another machine, just copy it!  (This works even if the machines have different OS or hardware!)&lt;br /&gt;    * Distributed transaction support (new!)&lt;br /&gt;          o Participates in XA transactions with other database systems&lt;br /&gt;&lt;br /&gt;Cloudscape is a Fully-Functional RDBMS &lt;br /&gt;&lt;br /&gt;    * Indexes&lt;br /&gt;    * Views&lt;br /&gt;    * Triggers and Stored Procedures&lt;br /&gt;    * Constraints (primary-key, foreign-key, unique, check)&lt;br /&gt;    * Concurrency Support&lt;br /&gt;          o Transactions (with crash recovery)&lt;br /&gt;          o Savepoints&lt;br /&gt;          o Row-level locking, with escalation&lt;br /&gt;          o JDBC isolation levels (including dirty-read)&lt;br /&gt;    * Scrollable Cursors (result sets)&lt;br /&gt;    * Cascading Delete&lt;br /&gt;    * Internationalization/Localization Support&lt;br /&gt;&lt;br /&gt;Reference List:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/db2/library/techarticle/dm-0503stumpf/"&gt;Synchronize IBM Cloudscape V10.0 and IBM DB2 Everyplace Sync Server V8.2&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://publib.boulder.ibm.com/infocenter/iwedhelp/v6r0/index.jsp?topic=/com.ibm.db2e.doc/dbeapc0601c.html"&gt;DB2 Everyplace Java Sync Client for IBM Cloudscape Version 10&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.iiug.org/waiug/present/Forum2005/Forum_presentations/Koconis_Cloudscape-Past_and_Present.ppt"&gt;Cloudscape Past and Present&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/db2/library/techarticle/dm-0408anderson/index.html#cs_cliserv"&gt;Cloudscape Version 10: A technical overview&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-1215069213885983367?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/1215069213885983367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=1215069213885983367' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1215069213885983367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1215069213885983367'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2008/06/cloudspace.html' title='Cloudspace'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-6881469390330901002</id><published>2008-06-12T19:51:00.000-07:00</published><updated>2008-06-12T19:57:36.410-07:00</updated><title type='text'>TPC - Transaction Processing Performance Council</title><content type='html'>An organization devoted to benchmarking transaction processing systems. In order to derive the number of transactions that can be processed in a given time frame, TPC benchmarks measure the total performance of the system, which includes the computer, operating system, database management system and any other related components involved in the transaction processing operation.&lt;br /&gt;&lt;br /&gt;Transactions&lt;br /&gt;The TPC-C benchmark yields transactions per minutes expressed in tpmC ratings. Earlier TPC-A and TPC-B benchmarks produced tpsA and tpsB ratings, which measured transactions per second.&lt;br /&gt;&lt;br /&gt;TPC-W is a Web benchmark, performed in a controlled Internet e-commerce scenario and reported as the number of Web interactions processed per second. Shopping, browsing and ordering are the three simulated profiles measured.&lt;br /&gt;&lt;br /&gt;Database Queries&lt;br /&gt;TPC-H carries an ad-hoc label and is used in environments where users do not know which queries will be executed against a database system. TPC-R analysis assumes pre-knowledge of a standard set of queries, and execution is very fast as a result. The earlier TPC-D benchmark based its results on the size of the database being queried and yielded a single-user Qppd Power metric and multiple-user QthD Throughput metric.&lt;br /&gt;&lt;br /&gt;TPC benchmarks are widely used today in evaluating the performance of computer systems; the results are published on the TPC web site.&lt;br /&gt;&lt;br /&gt;Reference &lt;br /&gt;&lt;br /&gt;&lt;a href="http://encyclopedia2.thefreedictionary.com/TPC"&gt;TPC Intro&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Transaction_Processing_Performance_Council"&gt;Wikipedia&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.tpc.org/"&gt;TPC Portal&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-6881469390330901002?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/6881469390330901002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=6881469390330901002' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/6881469390330901002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/6881469390330901002'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2008/06/tpc-transaction-processing-performance.html' title='TPC - Transaction Processing Performance Council'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-1137868114640623279</id><published>2008-06-11T18:11:00.000-07:00</published><updated>2008-06-11T18:13:20.958-07:00</updated><title type='text'>open source audit trail and logging component</title><content type='html'>The Inspektr project allows for non-intrusive auditing and logging by using annotations and aspects.&lt;br /&gt;&lt;br /&gt;It also includes a generic Grails-based web application to view statistics and audit logs stored in various data sources.&lt;br /&gt;&lt;br /&gt;Find out more from &lt;a href="http://code.google.com/p/inspektr/"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-1137868114640623279?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/1137868114640623279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=1137868114640623279' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1137868114640623279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1137868114640623279'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2008/06/open-source-audit-trail-and-logging.html' title='open source audit trail and logging component'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-1791010334677058985</id><published>2008-06-11T04:25:00.000-07:00</published><updated>2008-06-11T04:30:25.141-07:00</updated><title type='text'>Groovy, Java's New Scripting Language</title><content type='html'>Groovy is a new scripting language for the Java environment. Groovy scripts can be interpreted (for faster development: no compile cycle!) or compiled to Java bytecode (.class format) for faster execution. Groovy accepts most Java constructs but also quite a few of its own. &lt;br /&gt;&lt;br /&gt;    *  is an agile and dynamic language for the Java Virtual Machine&lt;br /&gt;    * builds upon the strengths of Java but has additional power features inspired by languages like Python, Ruby and Smalltalk&lt;br /&gt;    * makes modern programming features available to Java developers with almost-zero learning curve&lt;br /&gt;    * supports Domain-Specific Languages and other compact syntax so your code becomes easy to read and maintain&lt;br /&gt;    * makes writing shell and build scripts easy with its powerful processing primitives, OO abilities and an Ant DSL&lt;br /&gt;    * increases developer productivity by reducing scaffolding code when developing web, GUI, database or console applications&lt;br /&gt;    * simplifies testing by supporting unit testing and mocking out-of-the-box&lt;br /&gt;    * seamlessly integrates with all existing Java objects and libraries&lt;br /&gt;    * compiles straight to Java bytecode so you can use it anywhere you can use Java&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;See these links for complete information on Groovy:&lt;br /&gt;&lt;br /&gt;http://www.darwinsys.com/groovy/&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.onjava.com/pub/a/onjava/2004/09/29/groovy.html?page=1"&gt;Groovy Is Not Java&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://groovy.codehaus.org/Differences+from+Java"&gt;Differences from Java&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;http://groovy.codehaus.org/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-1791010334677058985?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/1791010334677058985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=1791010334677058985' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1791010334677058985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1791010334677058985'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2008/06/groovy-javas-new-scripting-language.html' title='Groovy, Java&apos;s New Scripting Language'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-1871072943293737437</id><published>2008-06-11T03:54:00.000-07:00</published><updated>2008-06-11T04:00:14.093-07:00</updated><title type='text'>Java on Grails ?</title><content type='html'>Java programmers needn't abandon their favorite language and existing development infrastructure to adopt a modern Web development framework. In the first installment of his new monthly series Get started with Grails, get introduced to Grails and demonstrates how to build your first Grails application.&lt;br /&gt;&lt;br /&gt;Grails is a modern Web development framework that mixes familiar Java technologies like Spring and Hibernate with contemporary practices like convention over configuration. Written in Groovy, Grails gives you seamless integration with your legacy Java code while adding the flexibility and dynamism of a scripting language. After you learn Grails, you'll never look at Web development the same way again.&lt;br /&gt;&lt;br /&gt;Find original post &lt;a href="http://www.ibm.com/developerworks/java/library/j-grails01158/?ca=dgr-lnxw16javagrails&amp;S_TACT=105AGX59&amp;S_CMP=GR"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-1871072943293737437?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/1871072943293737437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=1871072943293737437' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1871072943293737437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1871072943293737437'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2008/06/java-on-grails.html' title='Java on Grails ?'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-2200756200131721153</id><published>2008-06-11T03:49:00.000-07:00</published><updated>2008-06-11T03:51:19.262-07:00</updated><title type='text'>Run your web applications on Google's infrastructure!</title><content type='html'>Google App Engine lets you run your web applications on Google's infrastructure. App Engine applications are easy to build, easy to maintain, and easy to scale as your traffic and data storage needs grow. With App Engine, there are no servers to maintain: You just upload your application, and it's ready to serve your users.&lt;br /&gt;&lt;br /&gt;You can serve your app using a free domain name on the appspot.com domain, or use Google Apps to serve it from your own domain. You can share your application with the world, or limit access to members of your organization.&lt;br /&gt;&lt;br /&gt;App Engine costs nothing to get started. Sign up for a free account, and you can develop and publish your application for the world to see, at no charge and with no obligation. A free account can use up to 500MB of persistent storage and enough CPU and bandwidth for about 5 million page views a month.&lt;br /&gt;&lt;br /&gt;During the preview release of Google App Engine, only free accounts are available. In the near future, you will be able to purchase additional computing resources.&lt;br /&gt;&lt;br /&gt;Find more from &lt;a href="http://code.google.com/appengine/docs/whatisgoogleappengine.html"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-2200756200131721153?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/2200756200131721153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=2200756200131721153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/2200756200131721153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/2200756200131721153'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2008/06/run-your-web-applications-on-googles.html' title='Run your web applications on Google&apos;s infrastructure!'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-6522888800907319598</id><published>2008-04-10T19:38:00.000-07:00</published><updated>2008-06-02T23:48:59.990-07:00</updated><title type='text'>Make Windows Installer for your application</title><content type='html'>Recently, my project is using a window installer script called &lt;a href="http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System"&gt;NSIS&lt;/a&gt; to make windows executable exe file for product distribution which brings me to a post that comparing the similar products out there.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://my.opera.com/Pharaoh_Atem/blog/index.dml/tag/NSIS"&gt;&lt;/a&gt;"Many of you know that Windows Installer is the preferred method of distributing software, according to Microsoft. However, Windows Installer has the serious flaw of requiring the OS to support the Windows Installer Runtime. This can be a problem on older operating systems, such as Windows 95 Gold and Windows NT SP0-SP3.  ...  If your program is designed to work on &lt;i&gt;all&lt;/i&gt; Win32 systems, then you cannot use Windows Installer. You could use something such as Inno Setup or Nullsoft Scriptable Install System. Both are very good, but I believe that NSIS is much more versatile and expandable, due to its widespread support and many various plugins to make it more professional. The only thing NSIS is missing is Visual Studio plugins. At least for VS6 it would be good, since the InstallShield for VC++6 is very bad. Also, many installers that I built with that version of InstallShield do not work on XP due to the old structure of the installer. If you do not want to shell out $300+ for a good installer with universal support and still have a professional look, I recommend three things in combination: NSIS, HM NIS Edit, and ExperienceUI SDK. All three together allow you to build installers that look as good as the latest InstallShield installers, but with smaller overhead and much more flexibility. I see more good coming from open-source each day. NSIS is currently at 2.14 release, HM NIS Edit is at 2.0.3, and ExperienceUI SDK is at 1.1 release. The major advances in all three make things easier for the lower budgeted programmers to make nice installers for their projects. I think that Inno Setup should get its fair end of praise. Inno Setup is designed to be very similar in style to InstallShield, and does a good job of it. Inno Setup's ability to go silent install is very useful for automated runtime installs, making it as good as an automated Windows Installer installation. However, NSIS has advanced SILENT ONLY capabilities, forcing network install styles. Inno Setup already has 64-bit installations, while most others do not yet have this capability. I think NSIS may be able to be recompiled to build 64-bit installs, but I am not quite sure on that. InstallShield has one advantage that would make someone who needs this feature to shell out for it: The ability to make cross-platform installers. InstallShield can make RPMs for Linux apps and binary installers for Windows, MSI files for Windows Installer, and more. That would be the only reason I would shell out for it, if I had a program developed cross platform and need easy installer development. However, recently I came across another installer: InstallerBuilder Enterprise... This version does the one thing that would have tied me to InstallShield, ....&lt;br /&gt;"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;References&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Find the original post (&lt;a href="http://my.opera.com/Pharaoh_Atem/blog/show.dml/193552"&gt;1&lt;/a&gt; | &lt;a href="http://my.opera.com/Pharaoh_Atem/blog/index.dml/tag/NSIS"&gt;2&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;External Links:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://nsis.sourceforge.net/Docs/Contents.html"&gt;NSIS Users Manual&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.installsite.org/pages/en/msi/authoring.htm"&gt;Windows Installer Authoring Tools&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://unattended.sourceforge.net/installers.php"&gt;MSI / EXE UnAttended Installation &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-6522888800907319598?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/6522888800907319598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=6522888800907319598' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/6522888800907319598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/6522888800907319598'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2008/04/make-windows-installer-for-your.html' title='Make Windows Installer for your application'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-5747831901329684382</id><published>2008-01-17T23:10:00.000-08:00</published><updated>2008-01-17T23:11:03.568-08:00</updated><title type='text'>JTS Topology Suite &amp; GeoTools</title><content type='html'>Both are java open source tools for spatial data management.&lt;br /&gt;&lt;br /&gt;The Open Source Java GIS Toolkit&lt;br /&gt;&lt;br /&gt;The JTS Topology Suite is an API of 2D spatial predicates and functions. It has the following design goals:&lt;br /&gt;&lt;br /&gt;    * JTS conforms to the Simple Features Specification for SQL published by the Open GIS Consortium&lt;br /&gt;    * JTS provides a complete, consistent, robust implementation of fundamental 2D spatial algorithms&lt;br /&gt;    * JTS is fast enough for production use&lt;br /&gt;    * JTS is written in 100% pure JavaTM&lt;br /&gt;    * JTS is open source (under the LGPL license)&lt;br /&gt;&lt;br /&gt;Find more information, you can find it from &lt;a href="http://www.vividsolutions.com/jts/JTSHome.htm"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Geo  Tools is an open source (LGPL) Java code library which provides standards compliant methods for the manipulation of geospatial data, for example to implement  Geographic Information Systems (GIS)  . The Geo  Tools library implements  Open Geospatial Consortium   (OGC)  specifications   as they are developed, in close collaboration with the  GeoAPI   and  GeoWidgets   projects. The capabilities of Geotools are presented in the feature list.&lt;br /&gt;&lt;br /&gt;For more information, you can find it from here ( &lt;a href="http://geotools.codehaus.org/"&gt;1&lt;/a&gt;|&lt;a href="http://docs.codehaus.org/display/GEOTOOLS/Home"&gt;2&lt;/a&gt; ).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-5747831901329684382?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/5747831901329684382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=5747831901329684382' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/5747831901329684382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/5747831901329684382'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2008/01/jts-topology-suite-geotools.html' title='JTS Topology Suite &amp; GeoTools'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-2875173595674045610</id><published>2008-01-17T20:21:00.000-08:00</published><updated>2008-01-17T20:33:03.473-08:00</updated><title type='text'>Understanding insurance</title><content type='html'>Having this post is because i am working some projects for insurance and need to have the domain knowledge of insurance.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Term life insurance&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Term life insurance is the original form of life insurance and is considered to be pure insurance protection because it builds no cash value. This is in contrast to permanent life insurance such as whole life, universal life, and variable universal life.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Permanent life insurance &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Permanent life insurance is a form of life insurance such as whole life or endowment, where the policy is for the life of the insured, the payout is assured at the end of the policy (assuming the policy is kept current) and the policy accrues cash value.&lt;br /&gt;&lt;br /&gt;Here are the main characteristics of permanent life insurance:&lt;br /&gt;&lt;br /&gt;    * Permanent insurance protection.&lt;br /&gt;    * More expensive to own.&lt;br /&gt;    * Builds cash value.&lt;br /&gt;    * Loans are permitted against the policy.&lt;br /&gt;    * Favorable tax treatment of policy earnings.&lt;br /&gt;    * Level premiums.&lt;br /&gt;   &lt;br /&gt;There are three basic types of permanent insurance: whole life, variable life and universal life. The two most common are whole life and universal life. Whole life insurance provides lifetime protection, for which you pay a predetermined premium. Cash values usually have a minimum guaranteed rate of interest and the death benefit is a fixed amount. Whole life insurance is the most expensive life-insurance product available.&lt;br /&gt;&lt;br /&gt;Universal life insurance separates the investment and the death benefit portions. The investment choices available usually include some type of equity investments, which may make your cash value accumulate quicker. As the you can usually change your premiums and death benefits to suit your current budget.&lt;br /&gt;&lt;br /&gt;What i feel that variable and universal life insurance are all variation of whole life insurance policy and differences are:&lt;br /&gt;&lt;br /&gt;Variable life insurance policy is something like death benefit + flexible investment options and much more expensive and risky as there are investment risk.&lt;br /&gt;&lt;br /&gt;Universal life insurance  policy is something like death benefit + saving component + loan facility as insurer will pay fixed amount regularly against to the interest rate or certain managed fund. It is much cheaper than whole and variable life insurance policy.&lt;br /&gt;&lt;br /&gt;You can find more from &lt;a href="http://www.investopedia.com/articles/pf/05/012405.asp"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Participating Policy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;An insurance contract that pays dividends to the policy holder. Dividends are generated from the profits of the insurance company that sold the policy and are typically paid out on an annual basis over the life of the policy. Most policies also include a final or terminal payment that is paid out to the holder when the contract matures. Some participating policies may include a guaranteed dividend amount, which is determined at the onset of the policy.&lt;br /&gt;&lt;br /&gt;Also referred to as a "with-profits policy".&lt;br /&gt;&lt;br /&gt;Investopedia Says:&lt;br /&gt;Participating policies are typically life insurance contracts such as a whole life participating policy. The dividend received by the policy holder can be used in several different ways. First, the policy holder can apply the dividend proceeds to the insurance policy's premium payment. Second, the dividend can be kept with the insurance as a deposit in order to generate interest much like a savings account at a bank. Finally, the policy holder can simply receive the dividend payment in cash, much like a dividend payment on a stock.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Nonparticipating Life Insurance Policy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Life insurance policy that does not pay dividends. Policyholders thus do not participate in the interest, dividends, and capital gains earned by the insurer on premiums paid. In contrast, Participating Insurance Policies pay dividends to policyholders from earnings on investments.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Frequently used Insurance Term&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Term Life Insurance :: &lt;a href="http://www.investopedia.com/terms/t/termlife.asp"&gt;definition&lt;/a&gt;&lt;br /&gt;Noted, there is no cash value with this policy.&lt;br /&gt;&lt;br /&gt;Permanent Life Insurance :: &lt;a href="http://www.investopedia.com/terms/p/permanentlife.asp"&gt;definition&lt;/a&gt;&lt;br /&gt;There are cash values with this set of policies.&lt;br /&gt;&lt;br /&gt;Substandard Premium Rate  :: &lt;a href="http://www.answerfinancial.com/insurance-quote/life-insurance/glossary-terms/substandard-premium-rate.htm"&gt;definition&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is an extra premium (a substandard premium rate) charged a policy owner as a result of the insured being classified as having a higher-than-average risk of death. Reasons may include the person's physical condition, health, occupation and/or life-style. The premium rate charged is higher than a standard premium rate. &lt;br /&gt;&lt;br /&gt;Cash Surrender Value :: &lt;a href="http://www.investopedia.com/terms/c/cashsurrendervalue.asp"&gt;definition&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Indemnity :: &lt;a href="http://www.investopedia.com/terms/i/indemnity.asp"&gt;definition&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Long Term Care Insurance :: &lt;a href="http://www.investopedia.com/terms/l/ltcinsurance.asp"&gt;definition&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Projected Dividend&lt;br /&gt;&lt;br /&gt;Estimated future dividends to be paid by a Participating Insurance Policy. These dividend estimations cannot be part of the policy since they are not guaranteed. They are normally shown in a separate computer printout and are only as accurate as the basic interest rate assumptions made.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reference and recommended links&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.investopedia.com/articles/pf/07/life_insurance_rider.asp?partner=answers"&gt;Let Life Insurance Riders Drive Your Coverage&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.investopedia.com/articles/pf/07/five_policies.asp?partner=answers"&gt;Five Insurance Policies Everyone Should Have&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.investopedia.com/articles/pf/07/cutpolicies.asp?partner=answers"&gt;Fifteen Insurance Policies You Don't Need&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.investopedia.com/articles/pf/06/insurancecontracts.asp"&gt;Understand Your Insurance Contract&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.investopedia.com/articles/pf/06/advancedcontracts.asp"&gt;Exploring Advanced Insurance Contract Fundamentals&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Insurance Glossary (&lt;a href="http://www.ins.state.ny.us/consumer/life/cli_gloss.htm"&gt;1&lt;/a&gt; | &lt;a href="http://www2.prudential.com.my/index.php?fuseaction=main.page&amp;amp;menu_id=169"&gt;2&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-2875173595674045610?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/2875173595674045610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=2875173595674045610' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/2875173595674045610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/2875173595674045610'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2008/01/understanding-insurance.html' title='Understanding insurance'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-8853824807533572656</id><published>2007-11-20T00:26:00.000-08:00</published><updated>2009-02-20T22:33:37.816-08:00</updated><title type='text'>Why Wiki , Blogging &amp; Social Computing</title><content type='html'>&lt;p&gt;Blogging  and wiki is something about the knowledge management, one step further than the  information management. There are many ways of knowledge management, blogging  and wiki are just one of them.&lt;/p&gt;&lt;p&gt;why we bother to blog or wiki it rather than make a phone call, send a  email or book a meeting room? Like it or not, social computing is part of how  organization works today and an even larger part of how it will work tomorrow.  &lt;/p&gt;&lt;p&gt;Social computing is what happens when people selectively consume, produce,  and share online content in new ways. Technologies like blogs, peer-to-peer  networking, RSS, wikis, and other collaboration tools continue to grow, evolve,  and feed the demand for new methods of interaction. The challenges that you face  today as a result of access to online information, software, and communities  will intensify, with new challenges emerging over time. To maintain influence in  this new world, you must embrace social computing, not fight it. You must become  a facilitator for this kind of collaboration and a full member of the social  computing community.  &lt;/p&gt;&lt;p&gt;Develop your interest in using these forces to do your job more effectively,  rather than letting them just make your job more difficult. Instead of seeing  this as a new onslaught of back-door paths for unwanted change to reach your  organization, adopt a leadership role in using these tools to create a more  collaborative and productive organization.  &lt;/p&gt;&lt;p&gt;Don't fight this trend, embrace it. You should become an advocate and  facilitator for social computing. Make sure people can get what they need within  the organization so that they won't have to go elsewhere. Make yourself part of  the social computing community, and use that insider advantage to help the  organization succeed.  &lt;/p&gt;&lt;p&gt;As we take advantage of social computing, don't neglect traditional means of  communicating and promoting collaboration. Face-to-face idea sharing remains an  important tool in building and nurturing critical relationships, and we should  continue to use it for communication.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-8853824807533572656?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/8853824807533572656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=8853824807533572656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/8853824807533572656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/8853824807533572656'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/11/why-wiki-blogging-social-computing.html' title='Why Wiki , Blogging &amp; Social Computing'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-1121128039181432049</id><published>2007-11-20T00:19:00.000-08:00</published><updated>2007-11-20T00:25:00.018-08:00</updated><title type='text'>KM Tool - Wiki</title><content type='html'>Wikis are tools that allow for collaborative editing and publishing and hence the creation of user generated content.  Wikis are another example of social software - software that encourages people to work together.&lt;br /&gt;&lt;br /&gt;Wikis are a useful tool when you want people to collaborate and work together on creating a common document, e.g. a project document, a manual, and so on or to work on a common strategy or event, e.g. a conference programme.&lt;br /&gt;&lt;br /&gt;In corporate and general use they can be used to create collaborative documents, manuals e.g. WikiHow (a collaborative Manual)&lt;br /&gt;&lt;br /&gt;The most obvious and famous example of a wiki is of course   Wikipedia, which is an encyclopaedia that has been created by thousands of individuals. Every page in Wikipedia can be edited, which means it is constantly evolving and growing and can be kept up to date.&lt;br /&gt;&lt;br /&gt;In the commercial tools market there are a number of enterprise wiki tools available, for example, e.g. Confluence&lt;br /&gt;&lt;br /&gt;But there are also a number of free tools, for example:&lt;br /&gt;&lt;br /&gt;* MediaWiki is the software used for Wikipedia and the other Wikimedia Foundation websites. Compared to other wikis, it has an excellent range of features and support for high-traffic websites using multiple servers (Wikipedia peaks in the 2500+ requests per second range as of June 2005).&lt;br /&gt;* pbWiki is another hosted service and allows you to set up a wiki very quickly, as are Wikispaces and Wetpaint&lt;br /&gt;* If you are looking for a personal, notepad-type wiki to download onto your own computer, then TiddlyWiki is a useful tool&lt;br /&gt;&lt;br /&gt;Reference list&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.washington.edu/computing/web/publishing/mediawiki.html"&gt;Mediawiki Installation &amp;amp; File Upload HowTO&lt;/a&gt;&lt;br /&gt;http://www.washington.edu/computing/web/publishing/mediawiki.html&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.wikimatrix.org/show/MediaWiki"&gt;MediaWiki Comparison Matrix&lt;/a&gt;&lt;br /&gt;http://www.wikimatrix.org/show/MediaWiki&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ozzu.com/ftopic56303.html"&gt;How to install PHP and MySQL&lt;/a&gt;&lt;br /&gt;http://www.ozzu.com/ftopic56303.html&lt;br /&gt;&lt;a href="http://c4lpt.co.uk/handbook/wikis.html"&gt;&lt;br /&gt;Wikis - and how to create them quickly and easily&lt;/a&gt;&lt;br /&gt;http://c4lpt.co.uk/handbook/wikis.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-1121128039181432049?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/1121128039181432049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=1121128039181432049' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1121128039181432049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1121128039181432049'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/11/km-tool-wiki.html' title='KM Tool - Wiki'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-2955522082528066621</id><published>2007-11-05T22:21:00.000-08:00</published><updated>2009-03-29T01:17:58.686-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech Forum'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Service'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><title type='text'>SOA, Web Services &amp; BPEL - Tech Forum in Singapore</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ighNp6Wi0Zw/SZ-rhbTe3tI/AAAAAAAAAEI/rAXVbCHiSFQ/s1600-h/IMG_1582.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5305147476819238610" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 385px; CURSOR: pointer; HEIGHT: 250px" alt="" src="http://1.bp.blogspot.com/_ighNp6Wi0Zw/SZ-rhbTe3tI/AAAAAAAAAEI/rAXVbCHiSFQ/s400/IMG_1582.JPG" border="0" /&gt;&lt;/a&gt;Recently, i gave a talk and BPEL demo to singapore partners for Oracle BPEL &amp;amp; SOA suites. Introducing them idea of SOA, BPEL and Web Services and how to make use of oracle technology in their applications.&lt;br /&gt;&lt;br /&gt;SOA stands for service oriented architecture, it is a architecture model.&lt;br /&gt;&lt;br /&gt;Talk about architecture, we need to understand basic building block of each application and system.&lt;br /&gt;&lt;br /&gt;Like we build a real house, we use mortar and brick. Every application / system was built with business logic and process. Business process weaves all business logics into one application to achieve business goals. Process and logic weave seamlessly and hard coded into a monolithic application. Like we cook soup, we put all ingredients into water and hard for us to separate each out in the end, by which it reduce reusability of standard process and logics.&lt;br /&gt;&lt;br /&gt;In traditional application, when people wanna change the process or integrated with other application / system, especially it is a heterogeneous platform or technology integration, that will be very hard and time-consuming.&lt;br /&gt;&lt;br /&gt;For SOA applications, applications also build with process and so-called business logic (have been wrapped into self-contained services). Process and services are loosely coupled, people can easily add or remove services from process, not like traditional applications (process &amp;amp; logic fuse into one). Other than that, people can easily design &amp;amp; program the business process with a advanced IDE. Overall experience for process design and implementation will be a drag-and-drop exercise.&lt;br /&gt;&lt;br /&gt;SOA process should be standard, easily extensible and composable. When build an SOA application, we start from building a portfolio of services , follow with well-defined business process to orchestrate services to achieve business goal. This is where BPEL comes in for business process implementation and web service for business service implementation.&lt;br /&gt;&lt;br /&gt;Many people equate web services with Service-Oriented Architectures (SOA), but web services are just one element of SOA - they're about service invocation. SOA's scope is broader than just invocation. It's a complete software component architectural model, a way to organize, manage, deploy, discover, and expose software components, and to consume these over the Internet. From the software life-cycle perspective, in addition to the typical software development phases of design, development, and deployment, SOA defines web services-specific phases that include service publishing, discovery, binding and consumption, and management.&lt;br /&gt;&lt;br /&gt;Note, SOA != web service+bpel&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-2955522082528066621?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/2955522082528066621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=2955522082528066621' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/2955522082528066621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/2955522082528066621'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/11/soa-web-services-bpel.html' title='SOA, Web Services &amp; BPEL - Tech Forum in Singapore'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_ighNp6Wi0Zw/SZ-rhbTe3tI/AAAAAAAAAEI/rAXVbCHiSFQ/s72-c/IMG_1582.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-1557889462044643367</id><published>2007-11-05T02:22:00.000-08:00</published><updated>2008-09-04T08:05:49.325-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><title type='text'>ESB vs BPEL</title><content type='html'>&lt;span&gt;Both ESB and BPEL can be used for SOA implementation. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;ESB (Enterprise Service Bus) implement messaging to enable services to be integrated in a message-based paradigm: both synchronous and asynchronous styles. ESB moves data via different adaptors (WebServices, FTP,File,JDBC etc) and protocols (HTTP,JMS) and enriches and transform data using XSL &amp;amp; domain value mapping lookups.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Oracle BPEL provides a comprehensive, standards-based and easy to use solution for creating, deploying, and managing cross-application business processes with both automated and human workflow steps. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;ESB is good for routing messages to multiple destinations. It is also good for doing transformations that have little to no business rules. The footprint is much smaller and incurs minimal overhead therefore the performance is much better. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;BPEL is used for bringing together multiple services. There is much more functionality and allows implementation of complex business logic.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;• BPEL data transformations enrich and perform complex changes whereas ESB perform only simple transformations.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;• &lt;/span&gt;&lt;span&gt;BPEL can use Business rules, Human Workflow and Notifications, &lt;/span&gt;&lt;span&gt;exception handling can be done in BPEL.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Use ESB when you want a really low cost solution, Only need connectivity, simple transformations and routing.&lt;br /&gt;&lt;br /&gt;BPEL is primarily used for servies orchestration, data enrichment and human interaction.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Use BPEL+ESB when, You need to code complex business logic, integration with Workflow, &lt;/span&gt;&lt;span&gt;complex transforms potentially involving the database or having long running processes which may or may not be stateful.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;With an appropriately layered SOA architecture, one would look at ESB as a repository of services that BPEL orchestrates. At deployment time, this layered approach provides you the flexibility to dedicate servers to individual tiers (BPEL and ESB) and thereby maximize the resource usage for your particular use case. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-1557889462044643367?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/1557889462044643367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=1557889462044643367' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1557889462044643367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1557889462044643367'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/10/oracle-esb-vs-bpel.html' title='ESB vs BPEL'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-7677351591501076133</id><published>2007-11-02T00:33:00.000-07:00</published><updated>2007-11-02T00:41:18.893-07:00</updated><title type='text'>Io exception: The Network Adapter could not establish the connection</title><content type='html'>Recently, i did an RAC validation with our oracle partner and encountered this weird exception called "Io exception: The Network Adapter could not establish the connection".&lt;br /&gt;&lt;br /&gt;Two client machine were running same java code (using jdbc thin driver &amp;amp; oracle datasource) in the same LAN as RAC servers, but they came out with differen behaviour. One could connect to RAC database, the other one always got io exception mentioned above.&lt;br /&gt;&lt;br /&gt;The only difference between two machines was one of clients' host file having rac ip &amp;amp; hostname mapping entry, which is able to connect to oracle rac db.&lt;br /&gt;&lt;br /&gt;Something weird is that all db clients and servers were actually sitting in the same LAN. I could ping and telnet db rac with rac ip address (virtual and real ) from client machines, but when i use ip address in the java class to lookup the db connection, i could not get connected to db if rac ip &amp;amp; hostname mapping entries were not available in the client host file.&lt;br /&gt;&lt;br /&gt;Here is the sample Codes for RAC FCF connection:&lt;br /&gt;&lt;br /&gt;OracleDataSource ods = new OracleDataSource();&lt;br /&gt;OracleConnectionCacheManager occm = null;&lt;br /&gt;ods.setUser("user-name");&lt;br /&gt;ods.setPassword("password");&lt;br /&gt;String cacheName = "cache";&lt;br /&gt;String dbURL="jdbc:oracle:thin:@"+&lt;br /&gt;"(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=ON)" +&lt;br /&gt;"(ADDRESS=(PROTOCOL=TCP)" +&lt;br /&gt;"(HOST=rac1-vip-address)(PORT=1521))" +&lt;br /&gt;"(ADDRESS=(PROTOCOL=TCP)" +&lt;br /&gt;"(HOST=rac2-vip-address)(PORT=1521)))" +&lt;br /&gt;"(CONNECT_DATA=(SERVICE_NAME=orcl.abc.com)))";&lt;br /&gt;ods.setURL(dbURL); System.out.println("Url=" + dbURL ); ods.setConnectionCachingEnabled(true);&lt;br /&gt;Properties prop = new Properties();&lt;br /&gt;prop.setProperty("MinLimit", "5");&lt;br /&gt;prop.setProperty("MaxLimit", "40");&lt;br /&gt;prop.setProperty("InitialLimit", "10");&lt;br /&gt;prop.put (oracle.net.ns.SQLnetDef.TCP_CONNTIMEOUT_STR,"" + (5000)); // 5000ms ods.setConnectionCacheProperties(prop);&lt;br /&gt;ods.setFastConnectionFailoverEnabled(true);&lt;br /&gt;ods.setONSConfiguration("nodes=rac1-ip-address:6200,rac2-ip-address:6200"); ods.setConnectionCacheName(cacheName);&lt;br /&gt;//occm = OracleConnectionCacheManager.getConnectionCacheManagerInstance();&lt;br /&gt;Connection conn = ods.getConnection();&lt;br /&gt;&lt;br /&gt;It looks somewhere JDBC driver looking up db connection with rac hostname instead of ip address and I have to put the rac ip &amp;amp; hostname mapping in the client host file for jdbc driver to resolve them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-7677351591501076133?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/7677351591501076133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=7677351591501076133' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7677351591501076133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7677351591501076133'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/11/io-exception-network-adapter-could-not.html' title='Io exception: The Network Adapter could not establish the connection'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-2678004506891320434</id><published>2007-10-31T23:08:00.000-07:00</published><updated>2009-02-21T00:14:06.799-08:00</updated><title type='text'>Web service security &amp; clustering</title><content type='html'>The Oracle Web Services Manager (OWSM) secures Web services by using policy enforcement points. It has several types of policy enforcement points: Gateways, Web service client agents (client-Agents), and Web service agent (server-Agents). These policies are created, managed, and located in the OWSM Policy Manager, which is a centralized policy store.&lt;br /&gt;&lt;br /&gt;An example policy could be to require authentication and authorization to all services. This policy is centrally stored in the Policy Manager, and is consumed by all the agents and gateways deployed in the SOA.&lt;br /&gt;&lt;br /&gt;Gateway Use Case&lt;br /&gt;&lt;br /&gt;An Internet facing Web service can be protected by inserting a gateway in front of it. A gateway is similar to a web based proxy, it is a choke point where all Web service traffic is forced through. Gateways are SOAP/XML intermediaries that enforce Web services policies while intermediating Web services traffic between clients and services.&lt;br /&gt;&lt;br /&gt;This would be done using a WS-Security Username Token for authentication. Based on the credentials, the gateway should be able to authenticate and authorize access to the service.&lt;br /&gt;&lt;br /&gt;Alternatively, WS-Security SAML Token can be applied when business partners expose business processes to each other within a secure context.&lt;br /&gt;&lt;br /&gt;Agent Use Case&lt;br /&gt;&lt;br /&gt;A Web service agent is another useful policy enforcement point. Agents (client-Agents and server- Agents) are SOAP interceptors that enforce Web services policies from within the same Web application.&lt;br /&gt;&lt;br /&gt;Agents execute in the same process as the application, while Gateways run on separate processes and possibly on different servers. Gateways can manage services from multiple applications while agents control services belonging to the single application.&lt;br /&gt;&lt;br /&gt;Web service is not exposed over the internet, then using agents is a viable option to secure the business process. There can be other reasons for using agents. For example, if one wants end-to-end security where the data is secured from the beginning to the end of the process.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;OASIS WSS UsernameToken Profile  (User name and password)&lt;br /&gt;&lt;br /&gt;OASIS WSS X509 Token Profile 1.1 (certificate based)&lt;br /&gt;&lt;br /&gt;OASIS WSS SAML Token Profile 1.1 (Xml accertation token from accertation server for sso)&lt;br /&gt;&lt;br /&gt;OASIS WSS SWA Profile 1.1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://webservices.xml.com/pub/a/ws/2003/03/04/security.html?page=1"&gt;Web Services Security, Part 1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://webservices.xml.com/pub/a/ws/2003/04/01/security.html"&gt;Web Services Security, Part 2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.xml.com/pub/a/ws/2003/05/13/security.html?page=1"&gt;Web Services Security, Part 3&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://opensource.sys-con.com/node/125660"&gt;Apache WSS4J 1.1.0 Released&lt;/a&gt;&lt;br /&gt;&lt;h1&gt;&lt;a href="http://java.sun.com/developer/technicalArticles/WebServices/security/"&gt;&lt;span style="font-size:85%;"&gt;Securing Web Services and the Java WSDP 1.5 &lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;br /&gt;Tutorial&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.netbeans.org/kb/55/amsecurity.html"&gt;Securing Web Services Using the SAML or UserNameToken Profiles&lt;/a&gt;&lt;br /&gt;&lt;h1 style="font-weight: normal;"&gt;&lt;a href="http://developers.sun.com/appserver/reference/techart/load-balancing.html"&gt;&lt;span&gt;&lt;span style="font-size:100%;"&gt;Clustering  and Securing Web Applications: A Tutorial&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;br /&gt;Web Services Security (2003)&lt;br /&gt;&lt;br /&gt;http://www.xml.com/pub/a/ws/2003/03/04/security.html&lt;br /&gt;http://www.xml.com/pub/a/ws/2003/04/01/security.html&lt;br /&gt;&lt;h1 style="font-weight: normal;"&gt;&lt;a href="http://developers.sun.com/appserver/reference/techart/load-balancing.html"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-2678004506891320434?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/2678004506891320434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=2678004506891320434' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/2678004506891320434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/2678004506891320434'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/10/web-service-security-clustering.html' title='Web service security &amp; clustering'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-5572971198500101590</id><published>2007-10-31T02:43:00.000-07:00</published><updated>2009-02-21T00:15:23.987-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle RAC'/><title type='text'>Oracle TAF &amp; FCF</title><content type='html'>&lt;strong&gt;Transparent Application Failover (TAF)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Transparent Application Failover (TAF) is a feature of the Java Database Connectivity (JDBC) Oracle Call Interface (OCI) driver. It enables the application to automatically reconnect to a database, if the database instance to which the connection is made fails. In this case, the active transactions roll back.&lt;br /&gt;&lt;br /&gt;Transparent Application Failover (TAF) is a client-side feature that allows for clients to reconnect to surviving databases in the event of a failure of a database instance. Notifications are used by the server to trigger TAF callbacks on the client-side.&lt;br /&gt;&lt;br /&gt;TAF is configured using either client-side specified TNS connect string or using server-side service attributes. However, if both methods are used to configure TAF, the server-side service attributes will supersede the client-side settings. The server-side service attributes are the preferred way to set up TAF.&lt;br /&gt;&lt;br /&gt;TAF can operate in one of two modes, Session Failover and Select Failover. Session Failover will recreate lost connections and sessions. Select Failover will replay queries that were in progress.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/B19306_01/java.102/b14355/ocitaf.htm"&gt;Transparent Application Failover&lt;/a&gt;&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/B19306_01/network.102/b14212/advcfg.htm#i473297"&gt;Configuring Transparent Application Failover&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="http://download.oracle.com/docs/cd/B19306_01/java.102/b14355/fstconfo.htm#CIHJGCFE"&gt;Fast Connection Failover (FCF)&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Fast Connection Failover offers a driver-independent way for your Java Database Connectivity (JDBC) application to take advantage of the connection failover facilities offered by Oracle Database 10g. The Fast Connection Failover mechanism depends on the implicit connection cache feature. As a result, for Fast Connection Failover to be available, implicit connection caching must be enabled.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/B19306_01/java.102/b14355/fstconfo.htm#CIHJGCFE"&gt;FCF vs TAF&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;TAF is always active and does not have to be set, it does not work with the OCI Connection Pool.&lt;br /&gt;Oracle recommends not to use TAF and Fast Connection Failover in the same application&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-5572971198500101590?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/5572971198500101590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=5572971198500101590' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/5572971198500101590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/5572971198500101590'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/10/oracle-taf-fcf.html' title='Oracle TAF &amp; FCF'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-2697831408799703791</id><published>2007-10-26T00:14:00.000-07:00</published><updated>2007-10-26T01:48:17.523-07:00</updated><title type='text'>Web Services Protocol Stack</title><content type='html'>You may hear web services for many years and already get some ideas of it, but always get confused and lost in the set of protocol and technology in use and not sure how they are related to each other in the picture.&lt;br /&gt;&lt;br /&gt;Here, i would like to give another explanation of them from underlying protocol stack in use for web service so that you can organized, relate them properly in mind.&lt;br /&gt;&lt;br /&gt;The Web service protocol stack is a collection of computer networking protocols that are used to define, locate, implement, and make Web services interact with each other. The Web service protocol stack mainly comprises four areas (source:&lt;a href="http://en.wikipedia.org/wiki/Web_Services_Protocol_Stack"&gt;wikipedia&lt;/a&gt;):&lt;br /&gt;&lt;br /&gt;* Transport Protocol: responsible for transporting messages between network applications and includes protocols such as HTTP(s), SMTP, FTP, as well as the more recent Blocks Extensible Exchange Protocol (BEEP). Now, most common protocol in use is HTTP(S).&lt;br /&gt;&lt;br /&gt;* Messaging Protocol: responsible for encoding messages in a common XML format so that they can be understood at either end of a network connection. Currently, this area includes such protocols as XML-RPC, WS-Addressing, REST and SOAP, which is most common one in use today.&lt;br /&gt;&lt;br /&gt;* Description Protocol: used for describing the public interface to a specific web service. The WSDL interface format is typically used for this purpose.&lt;br /&gt;&lt;br /&gt;* Discovery Protocol: centralizes services into a common registry such that network web services can publish their location and description, and makes it easy to discover what services are available on the network. At present, the UDDI API is normally used for service discovery.&lt;br /&gt;&lt;br /&gt;Web service protocol stack also includes a whole range of recently defined protocols: BPEL, SOAP-DSIG.&lt;br /&gt;&lt;br /&gt;In general terms, a web service is a software component or service that has been published on the World Wide Web in one of several particular ways, but industry tends to use the term web services more specifically, to describe services that are exposed using SOAP, an XML-based message encoding that is typically transported using HTTP.&lt;br /&gt;&lt;br /&gt;XML-RPC&lt;br /&gt;&lt;br /&gt;XML-RPC is a remote procedure call protocol which uses XML to encode its calls and HTTP as a transport mechanism. XML-RPC is a very simple protocol, defining only a handful of data types and commands, and the entire description can be printed on two pages of paper. Some people still prefer XML-RPC to SOAP because of its simplicity, minimalism, and ease of use. (source:&lt;a href="http://en.wikipedia.org/wiki/XML-RPC"&gt;wikipedia&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;SOAP&lt;br /&gt;&lt;br /&gt;SOAP is a protocol for exchanging XML-based messages over computer networks, normally using HTTP/HTTPS. SOAP forms the foundation layer of the Web services stack, providing a basic messaging framework so that more abstract layers can build on.&lt;br /&gt;&lt;br /&gt;There are several different types of messaging patterns in SOAP, but by far the most common is the Remote Procedure Call (RPC) pattern, in which one network node (the client) sends a request message to another node (the server) and the server immediately sends a response message to the client.&lt;br /&gt;&lt;br /&gt;SOAP is the successor of XML-RPC, though it borrows its transport and interaction neutrality and the envelope/header/body from elsewhere, probably from WDDX (source:&lt;a href="http://en.wikipedia.org/wiki/SOAP"&gt;wikipedia&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;A SOAP message is an ordinary XML document containing the following elements:&lt;br /&gt;&lt;br /&gt;* A required Envelope element that identifies the XML document as a SOAP message&lt;br /&gt;* An optional Header element that contains header information&lt;br /&gt;* A required Body element that contains call and response information&lt;br /&gt;* An optional Fault element that provides information about errors that occurred while processing the message&lt;br /&gt;&lt;br /&gt;All the elements above are declared in the default namespace for the SOAP envelope (source: &lt;a href="http://www.w3schools.com/soap/soap_syntax.asp"&gt;w3schools&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;WSDL&lt;br /&gt;&lt;br /&gt;The Web Services Description Language (WSDL) is an XML-based language that provides a model for describing Web services.The current version of the specification is the 2.0. The WSDL defines services as collections of network endpoints, or ports. WSDL specification provides an XML format for documents for this purpose.A port is defined by associating a network address with a reusable binding, and a collection of ports define a service.&lt;br /&gt;&lt;br /&gt;WSDL is often used in combination with SOAP and XML Schema to provide web services over the Internet. A client program connecting to a web service can read the WSDL to determine what functions are available on the server. Any special datatypes used are embedded in the WSDL file in the form of XML Schema. The client can then use SOAP to actually call one of the functions listed in the WSDL.WSDL 1.2 was renamed WSDL 2.0 because of its substantial differences from WSDL 1.1. By accepting binding to all the HTTP request methods (not only GET and POST as in version 1.1) WSDL 2.0 specification offers a better support for RESTful web services, much simpler to implement by beginners. (source:wikipedia)&lt;br /&gt;&lt;br /&gt;A WSDL 1.1 document uses the following elements in the definition of network services:&lt;br /&gt;&lt;br /&gt;* Types– a container for data type definitions using some type system (such as XSD).&lt;br /&gt;* Message– an abstract, typed definition of the data being communicated.&lt;br /&gt;* Operation– an abstract description of an action supported by the service.&lt;br /&gt;* Port Type–an abstract set of operations supported by one or more endpoints.&lt;br /&gt;* Binding– a concrete protocol and data format specification for a (not more than one) particular port type.&lt;br /&gt;* Port– a single endpoint defined as a combination of a binding (not more than one) and a network address.&lt;br /&gt;* Service– a collection of related endpoints (port).&lt;br /&gt;&lt;br /&gt;WSDL 2.0 is different from WSDL 1.1 check out the example of a structured WSDL 2.0 document from &lt;a href="http://en.wikipedia.org/wiki/Web_Services_Description_Language"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;UDDI&lt;br /&gt;&lt;br /&gt;Universal Description, Discovery and Integration (UDDI) is a platform-independent, XML-based registry for businesses worldwide to list themselves on the Internet. UDDI is a cross-industry effort driven by all major platform and software providers like Dell, Fujitsu, HP, Hitachi, IBM, Intel, Microsoft, Oracle, SAP, and Sun, as well as a large community of marketplace operators, and e-business leaders.&lt;br /&gt;&lt;br /&gt;JAX-RPC&lt;br /&gt;Check out my previous two posts (&lt;a href="http://haitaoblog.blogspot.com/2007/10/jax-rpc-vs-jax-ws.html"&gt;1&lt;/a&gt;|&lt;a href="http://haitaoblog.blogspot.com/2007/10/xml-rpc-vs-jax-rpc.html"&gt;2&lt;/a&gt;) in this blog.&lt;br /&gt;&lt;br /&gt;JAXR&lt;br /&gt;&lt;br /&gt;Java API for XML Registries (JAXR) defines a standard API for Java platform applications to access and programmatically interact with various kinds of metadata registries. JAXR provides a uniform and standard Java API for accessing different kinds of XML-based metadata registry.&lt;br /&gt;&lt;br /&gt;Current implementations of JAXR support &lt;span style="font-weight: bold;"&gt;ebXML Registry version 2.0&lt;/span&gt;, and &lt;span style="font-weight: bold;"&gt;UDDI version 2.0&lt;/span&gt;. More such registries could be defined in the future.&lt;br /&gt;&lt;br /&gt;The JAXR API insulates application code from the underlying registry mechanism. When writing a JAXR based client to browse or populate a registry, the code does not have to change if the registry changes, for instance from UDDI to ebXML.&lt;br /&gt;&lt;br /&gt;WS-I&lt;br /&gt;The WS-I Basic Profile (official abbreviation is BP), a specification from the Web Services Interoperability industry consortium (WS-I), provides interoperability guidance for core Web Services specifications such as SOAP, WSDL, and UDDI. The profile uses Web Services Description Language (WSDL) to enable the description of services as sets of endpoints operating on messages. BP complied web service means smooth internal operability (messaging, description and registry) between web services regardless of underlying implementation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-2697831408799703791?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/2697831408799703791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=2697831408799703791' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/2697831408799703791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/2697831408799703791'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/10/web-services-protocol-stack.html' title='Web Services Protocol Stack'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-8610555493090346284</id><published>2007-10-25T23:14:00.000-07:00</published><updated>2007-10-25T23:17:37.550-07:00</updated><title type='text'>Open Source Tool for JDBC Debugging and Monitoring</title><content type='html'>P6Spy is a open source framework to intercept and debug JDBC interaction with a database and optionally modify database statements. It's a wrapper of all JDBC elements ( Connection, PreparedStatement, ResultSet... ) and it has a powerful feature in order to log all informations about those interactions. P6Spy includes P6Log, an application that intercepts and logs the database statements of any application that uses JDBC.&lt;br /&gt;&lt;br /&gt;This application is particularly useful for developers to monitor the SQL statements produced by EJB servers, enabling the developer to write code that achieves maximum efficiency on the server.&lt;br /&gt;&lt;br /&gt;You can also use it together with spring and hibernate for performance tuning as well.&lt;br /&gt;&lt;br /&gt;Reference List:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=8337"&gt;&lt;/a&gt;&lt;a href="http://www.oreillynet.com/pub/d/1309"&gt;P6Spy&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.p6spy.com/index.html"&gt;P6Spy Official Home&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://templth.blogspot.com/2004/11/integrate-p6spy-with-spring.html"&gt;Integrate P6Spy with Spring&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.informit.com/articles/article.aspx?p=353736&amp;amp;rl=1"&gt;Improving Hibernate's Performance&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=8337"&gt;P6Spy released: automatic logging of your database/EJB queries&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-8610555493090346284?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/8610555493090346284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=8610555493090346284' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/8610555493090346284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/8610555493090346284'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/10/open-source-tool-for-jdbc-debugging-and.html' title='Open Source Tool for JDBC Debugging and Monitoring'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-7341449273094337343</id><published>2007-10-25T03:04:00.000-07:00</published><updated>2007-10-25T03:09:51.577-07:00</updated><title type='text'>XML-RPC vs JAX-RPC</title><content type='html'>XML-RPC&lt;br /&gt;&lt;br /&gt;XML-RPC is a remote procedure call protocol which uses XML to encode its calls and HTTP as a transport mechanism. XML-RPC is a very simple protocol, defining only a handful of data types and commands, and the entire description can be printed on two pages of paper. Some people still prefer XML-RPC to SOAP because of its simplicity, minimalism, and ease of use. (source &lt;a href="http://en.wikipedia.org/wiki/XML-RPC"&gt;wikipedia&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;The original XML-RPC uses only a few data types and does not require namespaces. It achieves considerable flexibility by defining &lt;struct&gt; and &lt;array&gt; types which can contain other values. Responses are also simple XML with  as the root element with either  or  as the child element. The contrast with complex SOAP responses is striking.&lt;br /&gt;&lt;br /&gt;For xml-rpc, wsdl and uddi is not involved for client to invoke the web service.&lt;br /&gt;&lt;br /&gt;Implementations of XML-RPC:&lt;br /&gt;&lt;br /&gt;There are five Implementations in Java list at xmlrpc.com  as of December 2003. However, many of these projects appear to be inactive. The project hosted by the Apache Web Services Project is active. It looks like the Apache Web Services Project is on the right track with version 3, so keep an eye open on it if you are interested in an open-source XML-RPC solution.&lt;br /&gt;&lt;br /&gt;JAX-RPC - The Java API for XML-based RPC&lt;br /&gt;&lt;br /&gt;Instead of using xml-rpc protocol, JAX-RPC make used of SOAP protocol for messaging which enable web service a industry standard. &lt;br /&gt;&lt;br /&gt;SOAP&lt;br /&gt;&lt;br /&gt;SOAP is a protocol for exchanging XML-based messages over computer networks,normally using HTTP/HTTPS. SOAP forms the foundation layer of the Web services stack, providing a basic messaging framework so that more abstract layers can build on.&lt;br /&gt;&lt;br /&gt;There are several different types of messaging patterns in SOAP, but by far the most common is the Remote Procedure Call (RPC) pattern, in which one network node (the client) sends a request message to another node (the server) and the server immediately sends a response message to the client. SOAP is the successor of XML-RPC, though it borrows its transport and interaction neutrality and the envelope/header/body from elsewhere, probably from WDDX. (Source: &lt;a href="http://en.wikipedia.org/wiki/SOAP"&gt;wikipedia&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;WSDL is involved for client to invoke the web service when use JAX-RPC.&lt;br /&gt;&lt;br /&gt;Is XML-RPC Still Useful?&lt;br /&gt;&lt;br /&gt;The complexity of the JAX-RPC implementation has caused somewhat of a backlash among programmers. It seems you should consider XML-RPC over JAX-RPC if:&lt;br /&gt;&lt;br /&gt;* Your application uses relatively simple requests&lt;br /&gt;* You control both server and client sides and/or you don't need to publish a WSDL&lt;br /&gt;* You want to keep client-side parsing simple (as in AJAX applications)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-7341449273094337343?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/7341449273094337343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=7341449273094337343' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7341449273094337343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7341449273094337343'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/10/xml-rpc-vs-jax-rpc.html' title='XML-RPC vs JAX-RPC'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-7841768571672712926</id><published>2007-10-24T03:12:00.000-07:00</published><updated>2007-10-26T01:55:08.810-07:00</updated><title type='text'>Architecture Chaos of Web 2.0 Application</title><content type='html'>Struts, Spring, Seam, JSF, Hibernate, iBatis, Ajax and EJB, there are so many java technology, my question is which one should go for to mix and match out a wonderful J2EE Web 2.0 architecture for new project.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Model layer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Spring+Hibernate&lt;br /&gt;Spring+iBatis (With skillful DBA or developers with advnaced sql skill)&lt;br /&gt;EJB 3.0, forget about the EJB 2.1 (with developers expert in JDK 1.5 and annotation)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;View &amp;amp; Controller layer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Struts1 + Ajax (zk/echo/gwt) + Tile (templating)&lt;br /&gt;Spring MVC + Ajax (zk /echo/gwt) + Tile (templating)&lt;br /&gt;JSF+Icefaces/Zk(AJAX)+Facelet / Tile(templating)&lt;br /&gt;RichFaces / AJAX4JSF&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Integration Layer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Web services&lt;br /&gt;BPEL process (a collection of inter-related web services)&lt;br /&gt;Enterprise Service Bus&lt;br /&gt;JMS &amp;amp; MOM&lt;br /&gt;&lt;br /&gt;Other than suggestion above, JBoss seam and Oracle ADF and Webcenter come with full technology stack for web 2.0 architecture.&lt;br /&gt;&lt;br /&gt;As for which technology and plaftform should be used in the development, not only it depends on the value and benefits technology bring to the project, but available tools and people to support and accelerate the development play a part as well.&lt;br /&gt;&lt;br /&gt;Only with good tools (development &amp;amp; testing) and big pool of talent people/developer, project can be delivered on time.&lt;br /&gt;&lt;br /&gt;So, which tools should be chosen for the project development? Again, there are many open tools available in each phase of SDLC.&lt;br /&gt;&lt;br /&gt;Someone can use a combination of tools below:&lt;br /&gt;&lt;br /&gt;Eclipse with Checkstyle, PMD, Mylar, Subversion (Subclipse), JUnit plug-ins&lt;br /&gt;Subversion version control&lt;br /&gt;maven2&lt;br /&gt;Jira issue tracking&lt;br /&gt;Confluence wiki&lt;br /&gt;Cobertura test coverage&lt;br /&gt;QuickBuild Continuous Integration system&lt;br /&gt;Enterprise Architect for requirements and design in UML, and document generation&lt;br /&gt;&lt;br /&gt;But it may not fit your project and you will need to figure out your own tool set with some R&amp;amp;D work on it.&lt;br /&gt;&lt;br /&gt;Here, i would like to suggest a  book (not-yet-published, but coming-soon) called "&lt;a href="http://www.javapowertools.com/"&gt;Java power tools&lt;/a&gt;".  It maintain a comprehensive open tools and I believe with this book, people can shorten the R&amp;amp;D work for development tools findings.&lt;br /&gt;&lt;br /&gt;So, what is your voice for this confusion and chaos?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-7841768571672712926?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/7841768571672712926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=7841768571672712926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7841768571672712926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7841768571672712926'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/10/confusion-and-chaos-from-too-many.html' title='Architecture Chaos of Web 2.0 Application'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-8416821075888239193</id><published>2007-10-22T20:37:00.000-07:00</published><updated>2007-10-25T01:51:11.362-07:00</updated><title type='text'>JAXM &amp; Messaging</title><content type='html'>&lt;span style="font-weight: bold;"&gt;JAXM Definition&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;JAXM, the Java API for XML Messaging, defines a lightweight Java API for composing, processing, sending, and receiving XML documents.  It supports both synchronous (HTTP) and asynchronous (SMTP) messaging and “Out-of-the-box” support for ebXML messaging.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Fundamental Elements&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;The JAXM Service&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A JAXM service consumes JAXM messages sent by a JAXM client. To develop a JAXM service, developers extend the class javax.xml.messaging.JAXMServlet and implement either the javax.xml.messaging.OnewayListener or javax.xml.messaging.ReqRespListener interface. The choice of interface depends upon whether the interaction between the client and the server is asynchronous (OnewayListener) or synchronous (ReqRespListener) in nature.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;The JAXM Client&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Clients exchange messages with JAXM services. JAXM clients can either interact directly with a JAXM service or go through a JAXM provider. JAXM clients that interact directly with a JAXM service can only participate in synchronous interactions. JAXM clients that use a messaging provider can participate in asynchronous as well as synchronous interactions with the JAXM service.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;The JAXM Messaging Provider&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A JAXM messaging provider is responsible for managing the routing of messages for a JAXM client. Besides providing a degree of separation between a JAXM client and service, a provider can also offer additional services like reliable messaging, security, and transaction support. Currently, clients that want to interact asynchronously with a JAXM service have to use a provider.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;The JAXM Message&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;All JAXM messages conform to the SOAP 1.1 and SOAP with Attachments standards. JAXM messages also support the concept of higher-level protocols like ebXML through the concept of messaging profiles. A messaging profile defines the messaging contract between two parties. A JAXM client and service that share a message profile like ebXML can conduct business by exchanging ebXML messages.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JAXM &amp;amp; Messaging &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* JAXM is an synchronous / asynchronous (queue-based) messaging API&lt;br /&gt;* Not part of J2EE 1.4&lt;br /&gt;* Uses queues on either side&lt;br /&gt;* Doesn’t provide WSDL facilities&lt;br /&gt;* Can be used in conjunction with JAXB to convert to objects&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Difference in JAXM &amp;amp; JMS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The JAXM API was designed for Internet SOAP-based messaging, while the JMS API was designed as a common messaging API to be layered over existing enterprise message-oriented middleware (MOM) applications.&lt;br /&gt;&lt;br /&gt;The delivery endpoint models differ. JAXM provides direct point-to-point messaging, while JMS uses destinations to provide a reliable asynchronous messaging capability.&lt;br /&gt;&lt;br /&gt;JMS clients send messages to, and retrieve them from, destinations. JMS provides a model whereby an intermediary, a messaging server, makes sure a message is delivered between two applications that do not know directly about each other, but know only about the common destination.&lt;br /&gt;&lt;br /&gt;A JAXM client is interoperable over any SOAP 1.1 compatible client (there must be an agreed-upon profile between providers, however), whereas a JMS client is interoperable only with other JMS clients over the same messaging system (or another messaging system for which the JMS provider supports a proprietary gateway).&lt;br /&gt;&lt;br /&gt;The JMS API does not define interoperability between message providers. It does not define a common message format, only a number of message types; the clients must agree on the precise format. (It is possible to wrap a SOAP message, or any other kind of XML message, in a TextMessage and send it via JMS.)&lt;br /&gt;&lt;br /&gt;Find out more info from JAXM &lt;a href="http://java.sun.com/webservices/jaxm/faq.html"&gt;FAQ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why there is a need for JAXM?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The goal of JAXM is to provide a rich set of interfaces for document-style web services. Document-style web services enable the exchange of XML documents between two parties, as opposed to RPC-style web services, which expose software functions as web services.&lt;br /&gt;&lt;br /&gt;JAXM-based web services can be used effectively in Such scenario:&lt;br /&gt;&lt;br /&gt;When two parties want to exchange data using XML documents that are bounded using well-defined XML schemas instead of invoking software functions (Java objects, C procedures, etc.) exposed as RPC-style web services.&lt;br /&gt;&lt;br /&gt;I would like to recommend you to go through a article called "&lt;a href="http://www.onjava.com/pub/a/onjava/2003/04/30/jaxm.html"&gt;Developing E-Business Interactions with JAXM&lt;/a&gt;" for a good understanding of How &amp;amp; Where to use JAXM&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Implementation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sun provides JAXM implementation, but does not support full ebXML messaging service specification, there is alternative implementation of ebMS 2.0 from www.freebxml.org.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ebXML  &amp;amp;  Message  Service &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Find more from my previous post &lt;a href="http://haitaoblog.blogspot.com/2007/07/what-is-ebxml.html"&gt;here&lt;/a&gt;.&lt;br /&gt;Find more from article called  "&lt;a href="http://www.gca.org/papers/xmleurope2001/papers/html/s09-3.html"&gt;ebXML Message Service - An In-depth Overview&lt;/a&gt;"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reference List:&lt;br /&gt;&lt;br /&gt;http://java.sun.com/webservices/jaxm&lt;br /&gt;&lt;/span&gt;&lt;a href="http://java.sun.com/j2ee/1.3/docs/tutorial/doc/JAXM3.html"&gt;Sun JAXM tutorial &lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.onjava.com/pub/a/onjava/2003/04/30/jaxm.html"&gt;Developing E-Business Interactions with JAXM&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-8416821075888239193?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/8416821075888239193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=8416821075888239193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/8416821075888239193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/8416821075888239193'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/10/jaxm-ebxml.html' title='JAXM &amp; Messaging'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-1564735348662736899</id><published>2007-10-22T02:58:00.000-07:00</published><updated>2007-10-26T01:40:48.728-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOAP'/><category scheme='http://www.blogger.com/atom/ns#' term='JAXB'/><category scheme='http://www.blogger.com/atom/ns#' term='JAX-WS'/><category scheme='http://www.blogger.com/atom/ns#' term='SAAJ'/><category scheme='http://www.blogger.com/atom/ns#' term='JAX-RPC'/><title type='text'>JAX-RPC vs JAX-WS</title><content type='html'>Java API for XML-Based RPC (JAX-RPC) is a Legacy Web Services Java API, it uses SOAP and HTTP to do RPCs over the network and enables building of Web services and Web applications based on the SOAP 1.1 specification, Java SE 1.4 or lower, or when rpc/encoded style must be used.&lt;br /&gt;&lt;br /&gt;You can use the JAX-RPC programming model to develop SOAP-based web service clients and endpoints. JAX-RPC enables clients to invoke web services developed across heterogeneous platforms. Likewise, JAX-RPC web service endpoints can be invoked by heterogeneous clients. JAX-RPC requires SOAP and WSDL standards for this cross-platform interoperability.&lt;br /&gt;&lt;br /&gt;JAX-RPC lets people develop a web service endpoint using either a Servlet or Enterprise JavaBeans (EJB) component model. The endpoint is then deployed on either the Web or EJB container, based on the corresponding component model. Endpoints are described using a Web Services Description Language (WSDL) document.(This WSDL document can be published in a public or private registry, though this is not required). A client then uses this WSDL document and invokes the web service endpoint.&lt;br /&gt;&lt;br /&gt;JAX-RPC in J2ee 1.4 supports 4 types of stubs and invocations: static stub, dynamic proxy, Dynamic Invocation Interface (DII) and Application client.&lt;br /&gt;&lt;br /&gt;Static Stub Client&lt;br /&gt;Web service client makes a call through a stub, a local object that acts as a proxy for the remote service. Because the stub is created by wscompile at development time (as opposed to runtime), it is usually called a static stub.&lt;br /&gt;&lt;br /&gt;Example: Invoking a Stub Client&lt;br /&gt;Stub stub = (Stub) (new MyHelloService_Impl().getHelloIFPort());&lt;br /&gt;stub._setProperty (javax.xml.rpc.Stub.ENDPOINT_ADDRESS_PROPERTY,endpoint_address_string);&lt;br /&gt;HelloIF hello = (HelloIF)stub;&lt;br /&gt;System.out.println(hello.sayHello("Duke!"));&lt;br /&gt;&lt;br /&gt;Dynamic Proxy Client&lt;br /&gt;In contrast, the client call a remote procedure through a dynamic proxy, a class that is created during runtime. Although the source code for the static stub client relies on an implementation-specific class, the code for the dynamic proxy client does not have this limitation.&lt;br /&gt;&lt;br /&gt;Example: Dynamic Proxy&lt;br /&gt;javax.xml.rpc.Service service = ServiceFactory.newInstance().createService(...);&lt;br /&gt;com.example.StockQuoteProvider sqp = (com.example.StockQuoteProvider)service.getPort(portName, StockQuoteProvider.class);&lt;br /&gt;float price = sqp.getLastTradePrice("ACME");&lt;br /&gt;&lt;br /&gt;Dynamic Invocation Interface Client&lt;br /&gt;With the dynamic invocation interface (DII), a client can call a remote procedure even if the signature of the remote procedure or the name of the service is unknown until runtime. In contrast to a static stub or dynamic proxy client, a DII client does not require runtime classes generated by wscompile.&lt;br /&gt;&lt;br /&gt;Example: Dynamic Invocation Interface&lt;br /&gt;javax.xml.rpc.Service service = ServiceFactory.newInstance().createService(...);&lt;br /&gt;javax.xml.rpc.Call call = service.createCall(portName, "getLastTradePrice");&lt;br /&gt;// This example assumes that addParameter and setReturnType methods are not required to be called&lt;br /&gt;Object[] inParams = new Object[] {"ACME"};&lt;br /&gt;Float quotePrice = (Float)call.invoke(inParams);&lt;br /&gt;&lt;br /&gt;Application Client&lt;br /&gt;Unlike the stand-alone clients, for an application client, because it's a J2EE component, an application client can locate a local web service by invoking the JNDI lookup method.&lt;br /&gt;&lt;br /&gt;Example: Application Client&lt;br /&gt;Context ic = new InitialContext();&lt;br /&gt;MyHelloService myHelloService = (MyHelloService)&lt;br /&gt;ic.lookup("java:comp/env/service/MyJAXRPCHello");&lt;br /&gt;appclient.HelloIF helloPort = myHelloService.getHelloIFPort();&lt;br /&gt;((Stub)helloPort)._setProperty(Stub.ENDPOINT_ADDRESS_PROPERTY,args[0]);&lt;br /&gt;System.out.println(helloPort.sayHello("Jake!"));&lt;br /&gt;           &lt;br /&gt;Service Endpoint Model&lt;br /&gt;&lt;br /&gt;JAX-RPC supports a client model for the service consumer, and a service endpoint model for the service producer.&lt;br /&gt;&lt;br /&gt;Application-Level Interaction Modes&lt;br /&gt;&lt;br /&gt;JAX-RPC specifies three client application interaction models:&lt;br /&gt;* Synchronous request-response two-way RPC&lt;br /&gt;* Asynchronous (non-blocking) request-response two-way RPC&lt;br /&gt;* One-way RPC&lt;br /&gt;&lt;br /&gt;JAX-WS 2.0 is the successor of JAX-RPC 1.1 - the Java API for XML-based Web services. If possible, JAX-WS should be used instead as it is based on the most recent industry standards.&lt;br /&gt;&lt;br /&gt;What remains the same?&lt;br /&gt;&lt;br /&gt;Before we itemize the differences between JAX-RPC 1.1 and JAX-WS 2.0, we should first discuss what is the same.&lt;br /&gt;&lt;br /&gt;* JAX-WS still supports SOAP 1.1 over HTTP 1.1, so interoperability will not be affected. The same messages can still flow across the wire.&lt;br /&gt;&lt;br /&gt;* JAX-WS still supports WSDL 1.1, so what you've learned about that specification is still useful. A WSDL 2.0 specification is nearing completion, but it was still in the works at the time that JAX-WS 2.0 was finalized.&lt;br /&gt;&lt;br /&gt;What is different?&lt;br /&gt;&lt;br /&gt;* SOAP 1.2&lt;br /&gt;JAX-RPC and JAX-WS support SOAP 1.1. JAX-WS also supports SOAP 1.2.&lt;br /&gt;&lt;br /&gt;* XML/HTTP&lt;br /&gt;    The WSDL 1.1 specification defined an HTTP binding, which is a means by which you can send XML messages over HTTP without SOAP. JAX-RPC ignored the HTTP binding. JAX-WS adds support for it.&lt;br /&gt;&lt;br /&gt;* WS-I's Basic Profiles&lt;br /&gt;    JAX-RPC supports WS-I's Basic Profile (BP) version 1.0. JAX-WS supports BP 1.1. (WS-I is the Web services interoperability organization.)&lt;br /&gt;&lt;br /&gt;* New Java features&lt;br /&gt;   o JAX-RPC maps to Java 1.4. JAX-WS maps to Java 5.0. JAX-WS relies on many of the features new in Java 5.0.&lt;br /&gt;   o Java EE 5, the successor to J2EE 1.4, adds support for JAX-WS, but it also retains support for JAX-RPC, which could be confusing to today's Web services novices.&lt;br /&gt;&lt;br /&gt;* The data mapping model&lt;br /&gt;   o JAX-RPC has its own data mapping model, which covers about 90 percent of all schema types. Those that it does not cover are mapped to javax.xml.soap.SOAPElement.&lt;br /&gt;   o JAX-WS's data mapping model is JAXB. JAXB promises mappings for all XML schemas.&lt;br /&gt;&lt;br /&gt;* The interface mapping model&lt;br /&gt;    JAX-WS's basic interface mapping model is not extensively different from JAX-RPC's; however:&lt;br /&gt;   o JAX-WS's model makes use of new Java 5.0 features.&lt;br /&gt;   o JAX-WS's model introduces asynchronous functionality.&lt;br /&gt;&lt;br /&gt;* The dynamic programming model&lt;br /&gt;   o JAX-WS's dynamic client model is quite different from JAX-RPC's. Many of the changes acknowledge industry needs:&lt;br /&gt;        + It introduces message-oriented functionality.&lt;br /&gt;        + It introduces dynamic asynchronous functionality.&lt;br /&gt;   o JAX-WS also adds a dynamic server model, which JAX-RPC does not have.&lt;br /&gt;&lt;br /&gt;* MTOM (Message Transmission Optimization Mechanism)&lt;br /&gt;    JAX-WS, via JAXB, adds support for MTOM, the new attachment specification. Microsoft never bought into the SOAP with Attachments specification; but it appears that everyone supports MTOM, so attachment interoperability should become a reality.&lt;br /&gt;&lt;br /&gt;* The handler model&lt;br /&gt;   o The handler model has changed quite a bit from JAX-RPC to JAX-WS.&lt;br /&gt;   o JAX-RPC handlers rely on SAAJ 1.2. JAX-WS handlers rely on the new SAAJ 1.3 specification.&lt;br /&gt;&lt;br /&gt;Additional reading list:&lt;br /&gt;&lt;br /&gt;Developing Web Services at a Glance&lt;br /&gt;http://java.sun.com/webservices/technologies/index.jsp#Core_Web_Services&lt;br /&gt;Java API for XML-based RPC (JAX-RPC)&lt;br /&gt;http://java.sun.com/developer/technicalArticles/xml/jaxrpc/&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;http://java.sun.com/webservices/technologies/index.jsp#Core_Web_Services&lt;br /&gt;http://www-128.ibm.com/developerworks/webservices/library/ws-tip-jaxwsrpc.html&lt;br /&gt;http://www.ibm.com/developerworks/webservices/library/ws-tip-jaxwsrpc2.html&lt;br /&gt;&lt;br /&gt;Keywords: SAAJ, JAXB, SOAP, JAX-RPC, JAX-WS&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-1564735348662736899?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/1564735348662736899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=1564735348662736899' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1564735348662736899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1564735348662736899'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/10/jax-rpc-vs-jax-ws.html' title='JAX-RPC vs JAX-WS'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-5806163015954650261</id><published>2007-10-22T01:12:00.000-07:00</published><updated>2009-02-21T00:15:41.306-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle RAC'/><title type='text'>Using Oracle RAC in OAS, Weblogic and Websphere</title><content type='html'>Oracle Application Server 10g R2 (OAS)&lt;br /&gt;&lt;br /&gt;To enable the Fast Connection Failover mechanism, properties of "connectionCachingEnabled" and "fastConnectionFailoverEnabled" must be set to true on the (connection-factory) tag for an OracleDataSource object. the JDBC URL String must be set using the service name syntax. The service name specified on the connection URL is used to map the connection cache to the service.&lt;br /&gt;&lt;br /&gt;Valid URL Usage&lt;br /&gt;&lt;br /&gt;url="jdbc:oracle:oci:@TNS_ALIAS"&lt;br /&gt;&lt;br /&gt;url="jdbc:oracle:oci:@(DESCRIPTION=&lt;br /&gt;  (LOAD_BALANCE=on)&lt;br /&gt;  (ADDRESS=(PROTOCOL=TCP)(HOST=host1) (PORT=1521))&lt;br /&gt;  (ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=1521))&lt;br /&gt;  (CONNECT_DATA=(SERVICE_NAME=service_name)))"&lt;br /&gt;&lt;br /&gt;url="jdbc:oracle:oci:@(DESCRIPTION=&lt;br /&gt;  (ADDRESS=(PROTOCOL=TCP)(HOST=cluster_alias) (PORT=1521))&lt;br /&gt;  (CONNECT_DATA=(SERVICE_NAME=service_name)))"&lt;br /&gt;&lt;br /&gt;url = "jdbc:oracle:thin@//host:port/service_name"&lt;br /&gt;&lt;br /&gt;url = "jdbc:oracle:thin@//cluster-alias:port/service_name"&lt;br /&gt;&lt;br /&gt;url="jdbc:oracle:thin:@(DESCRIPTION=&lt;br /&gt;  (LOAD_BALANCE=on)&lt;br /&gt;  (ADDRESS=(PROTOCOL=TCP)(HOST=host1) (PORT=1521))&lt;br /&gt;  (ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=1521))&lt;br /&gt;  (CONNECT_DATA=(SERVICE_NAME=service_name)))"&lt;br /&gt;&lt;br /&gt;url = "jdbc:oracle:thin:@(DESCRIPTION=&lt;br /&gt;  (ADDRESS=(PROTOCOL=TCP)(HOST=cluster_alias) (PORT=1521))&lt;br /&gt;  (CONNECT_DATA=(SERVICE_NAME=service_name)))"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If a SID is specified on the URL, when Fast Connection Failover is enabled, then an exception is thrown.&lt;br /&gt;&lt;br /&gt;For more inforamtion, find them from links below:&lt;br /&gt;&lt;br /&gt;http://download.oracle.com/docs/cd/B31017_01/web.1013/b28958/datasrc.htm#CHDEHFHE&lt;br /&gt;http://download.oracle.com/docs/cd/B31017_01/core.1013/b28939/j2ee.htm#ASTED006&lt;br /&gt;http://download.oracle.com/docs/cd/B31017_01/core.1013/b28939/security.htm#CDDGFADE&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Weblogic&lt;br /&gt;&lt;br /&gt;For how to use Oracle RAC DB with Weblogic application server, find the detail information from links below:&lt;br /&gt;&lt;br /&gt;http://edocs.bea.com/wls/docs81/jdbc/oracle_rac.html&lt;br /&gt;http://edocs.bea.com/platform/docs81/db_mgmt/oracle_rac.html&lt;br /&gt;&lt;br /&gt;Websphere&lt;br /&gt;&lt;br /&gt;For how to use Oracle RAC DB with Websphere application server, find the detail information from links below:&lt;br /&gt;&lt;br /&gt;http://www.ibm.com/developerworks/websphere/techjournal/0710_barghouthi/0710_barghouthi.html&lt;br /&gt;http://www.ibm.com/developerworks/websphere/techjournal/0706_banerjee/0706_banerjee.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-5806163015954650261?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/5806163015954650261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=5806163015954650261' title='27 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/5806163015954650261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/5806163015954650261'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/10/using-oracle-rac-in-oas-weblogic-and.html' title='Using Oracle RAC in OAS, Weblogic and Websphere'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>27</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-3500579760892244669</id><published>2007-10-22T00:00:00.000-07:00</published><updated>2007-10-22T18:54:54.676-07:00</updated><title type='text'>JAXP Implementation Provider</title><content type='html'>The Java API for XML Processing (JAXP) enables applications to parse (SAX/DOM), transform (XSLT), validate (Against the XML schema) and query (XPath) XML documents using an API that is independent of a particular XML processor implementation. JAXP provides a pluggability layer to enable vendors to provide their own implementations without introducing dependencies in application code. JAXP selects the parser based on system properties. You can set the properties to select a different parser than the default one.&lt;br /&gt;&lt;br /&gt;Existing JAXP implementation include, but not limited to Resin, Xalan, Xerces and Crimson.&lt;br /&gt;&lt;br /&gt;Xerces and Crimson is an XML parser. Xalan is an implementation of XPath and XSLT. Xalan can work with any JAXP-compliant XML parser. Resin has parser and transformer implementation for all JAXP API.&lt;br /&gt;&lt;br /&gt;You can find the more information on each JAXP implementation from links below:&lt;br /&gt;&lt;br /&gt;XML Parsing&lt;br /&gt;http://xml.apache.org/crimson/ (sun default jaxp implementation)&lt;br /&gt;http://xerces.apache.org/xerces-j/&lt;br /&gt;http://www.caucho.com/resin-3.0/xml/jaxp.xtp&lt;br /&gt;&lt;br /&gt;XMl Transformation and XPath&lt;br /&gt;&lt;br /&gt;http://xalan.apache.org/&lt;br /&gt;http://www.caucho.com/resin-3.0/xml/jaxp.xtp&lt;br /&gt;&lt;br /&gt;Additional jaxp reading list (Past, Current and Future Roadmap)&lt;br /&gt;&lt;br /&gt;The Evolution of JAXP&lt;br /&gt;http://www.xml.com/pub/a/2005/07/06/jaxp.html?page=1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-3500579760892244669?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/3500579760892244669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=3500579760892244669' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/3500579760892244669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/3500579760892244669'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/10/jaxp-implementation-provider.html' title='JAXP Implementation Provider'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-3993741424191505692</id><published>2007-10-19T02:38:00.000-07:00</published><updated>2007-10-19T02:40:14.584-07:00</updated><title type='text'>Jakarta Common Validator &amp; Struts Validator</title><content type='html'>The Commons Validator is a basic validation framework that lets you define validation rules for a JavaBean in an xml file. Validators, the validation definition, can also be defined in the xml file. An example of a validator would be defining what method and class will be called to perform the validation for a required field. Validation rules can be grouped together based on locale and a JavaBean/Form that the rules are associated with. The framework has basic support for user defined constants which can be used in some field attributes.&lt;br /&gt;&lt;a href="http://www.cjsdn.net/post/view?bid=20&amp;amp;id=182705&amp;amp;sty=3"&gt;&lt;br /&gt;Here&lt;/a&gt; is the quick tutorial for Jakarta common validator, you can see that there is a need to define a validation rule xml file to declare the validation rules and objects &amp;amp; fields to be validated.&lt;br /&gt;&lt;br /&gt;Noted, inside the xml file, the individual fields in the input data are called fields, the set of input data is collectively called a form, and a collection of forms is called a form-set.&lt;br /&gt;&lt;br /&gt;The relationship between the elements is shown here:&lt;br /&gt;Fields --&gt; Forms --&gt; FormSet&lt;br /&gt;&lt;br /&gt;Struts Validator is built on Jakarta Commons validator and other common packages. It split the rule defintion xml file into two, one (validation-rules.xml) is for rule definitions, another (validation.xml) is for which and what object and fields to be validated. Struts validator is a web form validator and support both client and server side validation.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www6.software.ibm.com/developerworks/education/j-strutsval/"&gt;Here&lt;/a&gt; is a tutorial for how to use the Struts Validator.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-3993741424191505692?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/3993741424191505692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=3993741424191505692' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/3993741424191505692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/3993741424191505692'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/10/jakarta-common-validator-struts.html' title='Jakarta Common Validator &amp; Struts Validator'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-7071936188642223515</id><published>2007-10-16T21:33:00.000-07:00</published><updated>2007-10-16T21:53:21.285-07:00</updated><title type='text'>EJB Reference Definiton and Lookup in Oracle Application Server 10g</title><content type='html'>&lt;span style="font-weight: bold;"&gt;EJB Reference Definition&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There are two way for EJB reference definition in Oracle AS:&lt;br /&gt;&lt;br /&gt;One is define the (ejb-ref-name) together with (ejb-link) within the (ejb-ref) element. Configure (ejb-ref-name) with a logical name and configure (ejb-link) with the actual name of the target bean as shown below:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Example: Configuring ejb-ref-name with a Logical Name Resolved by ejb-link&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(ejb-ref)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;(ejb-ref-name)ejb/nextVal(/ejb-ref-name)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;(ejb-ref-type)Session(/ejb-ref-type)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;(home)myBeans.BeanAHome(/home)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;(remote)myBeans.BeanA(/remote)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;(ejb-link)myBeans/BeanA(/ejb-link)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;(/ejb-ref)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This option provides indirection that offers assembly and deployment flexibility.&lt;br /&gt;&lt;br /&gt;Another way is to Configure (ejb-ref-name) with a logical name and in the orion-ejb-jar.xml deployment descriptor, define an (ejb-ref-mapping) element that maps the logical name to the actual name of the target bean as shown below:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Example: Configuring ejb-ref-name with a Logical Name Resolved by ejb-ref-mapping&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;(ejb-ref)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;(ejb-ref-name)ejb/nextVal(/ejb-ref-name)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;(ejb-ref-type)Session(/ejb-ref-type)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;(home)myBeans.BeanAHome(/home)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;(remote)myBeans.BeanA(/remote)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;(/ejb-ref)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;Example: Mapping Logical Name to Actual Name with ejb-ref-mapping&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;(ejb-ref-mapping name="ejb/nextVal" location="myBeans/BeanA"/)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;This option provides indirection that offers the most assembly and deployment flexibility.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;EJB Reference Lookup&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To lookup EJB in the OAS, there are two ways too. One is using the ejb-ref (logical name in the web.xml/ejb-jar.xml) and second way is using the real location (jndi name in the server).&lt;br /&gt;&lt;br /&gt;For sample code snippet, refer to links below:&lt;br /&gt;&lt;br /&gt;http://download.oracle.com/docs/cd/B25221_04/web.1013/b14428/servjndi.htm#CHDGBAFJ&lt;br /&gt;http://download.oracle.com/docs/cd/B25221_04/web.1013/b14427/jndi.htm#i1084614&lt;br /&gt;http://download.oracle.com/docs/cd/B25221_04/web.1013/b14427/jndi.htm#CIHGAHFF&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-7071936188642223515?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/7071936188642223515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=7071936188642223515' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7071936188642223515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7071936188642223515'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/10/ejb-reference-definiton-and-lookup-in.html' title='EJB Reference Definiton and Lookup in Oracle Application Server 10g'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-5384957662688121450</id><published>2007-10-16T21:01:00.001-07:00</published><updated>2007-10-16T21:11:37.815-07:00</updated><title type='text'>Oracle Application Server 10g How-To's</title><content type='html'>This &lt;a href="http://www.oracle.com/technology/tech/java/oc4j/1013/how_to/index.html"&gt;link&lt;/a&gt; provides a high-level overview of a feature along with relevant code excerpts to illustrate how the feature can be used.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Infrastructure&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;How-To Use Application Properties   &lt;br /&gt;How-To Register MBeans on Container Startup   &lt;br /&gt;How-To Create Simple JMX MBeans  Mar-2006 &lt;br /&gt;How-To Swap Oracle JDBC Drivers   &lt;br /&gt;How-To Swap XML Parsers   &lt;br /&gt;How-To Configure and Use Job Scheduler with database persistence   &lt;br /&gt;How-To Configure and Use Job Scheduler with JMS persistence   &lt;br /&gt;How-To Configure and Use JCA 1.5 Resource Adapters   &lt;br /&gt;How-To Configure and Use Data Sources   &lt;br /&gt;How-To Configure and Use JNDI   &lt;br /&gt;How-To Configure and Use Proxy-authentication with Data Sources   &lt;br /&gt;How to Configure and use Active MQ JCA 1.5 Resource Adapter with OC4J 10 g (10.1.3) &lt;br /&gt;How-To Use ORMI/SSL with OC4J  &lt;br /&gt;How-To Propagate a transaction context between OC4J instances  &lt;br /&gt;How-to Stop an MDB via JMX (Blog) &lt;br /&gt;How-to Establish a Remote connections to OC4J with JConsole (Blog) &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Servlets and JSP / Web Container&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;How-To Use Dependency Injection in a Web Module   &lt;br /&gt;How-To Use Servlet 2.4 Features   &lt;br /&gt;How-To Use HTTPClient in OC4J 10g   &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Web Services&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;How-To Use MTOM to exchange binary data   &lt;br /&gt;How-To Develop a Web Service From an Existing Java Class   &lt;br /&gt;How-To Develop a Web Service From a WSDL Document    &lt;br /&gt;How-To Generate a Web service using Web service Metadata Annotations (JSR 181)  &lt;br /&gt;How -To Use WS Security between OracleAS Web Services and Microsoft .Net   &lt;br /&gt;How to Use JDeveloper 10.1.3 to Secure and Test a Web Service &lt;br /&gt;How-to Share State of Stateful Web Services Between Clients (Blog) &lt;br /&gt;How to use SOAP Compression using JAX-RPC, on OC4J (Blog) &lt;br /&gt;How to use SSL with OracleAS Web Services (Blog) &lt;br /&gt; &lt;br /&gt;&lt;span style="font-style:italic;"&gt;Spring Framework&lt;span style="font-weight:bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Using the New Spring JTA Transaction Manager  &lt;br /&gt;Use EJB 3.0 and Java Persistence API with Spring in OC4J  &lt;br /&gt;Spring-TopLink Pet Clinic Demo &lt;br /&gt; &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Messaging (JMS)&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;How-To Use the OracleAS JMS Router  &lt;br /&gt;How to Configure and Use Oracle's Generic JMS Resource Adapter &lt;br /&gt;With IBM WebSphere MQ JMS    &lt;br /&gt;With Tibco Enterprise for JMS    &lt;br /&gt;With SonicMQ JMS    &lt;br /&gt;With OEMS JMS (In-Memory and File-Based)    &lt;br /&gt;With OEMS JMS (Database)   &lt;br /&gt;How-to Create as Simple MDB with Oracle Database JMS Provider (Blog) &lt;br /&gt;How-to Propagate JMS Messages to Multiple Targets (Blog) &lt;br /&gt;How-to use OracleAS JMS, Hermes and MBeans (Blog) &lt;br /&gt;   &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;J2EE Security / JAAS&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;How-To Integrate a Custom JAAS Login Module in OracleAS   &lt;br /&gt;How-To Reset oc4jadmin password (Blog)&lt;br /&gt;   &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Oracle Rules Engine&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;How-To Build a Rules Enabled Java Application   &lt;br /&gt;How-To build a Rules Enabled Application using XML facts   &lt;br /&gt;   &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Additional Resources&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Tutorial for Java EE Developers (10.1.3.1.0)&lt;br /&gt;How to use SASH Starter 2.0 with OracleAS 10g R3&lt;br /&gt;EJB 3.0 How-To's&lt;br /&gt;Oracle TopLink How-To's&lt;br /&gt;Oracle JDeveloper How-To's&lt;br /&gt;How-To Use Eclipse with OC4J 10g (Eclipse Web Tools Project Page)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-5384957662688121450?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/5384957662688121450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=5384957662688121450' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/5384957662688121450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/5384957662688121450'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/10/oracle-application-server-10g-how-tos.html' title='Oracle Application Server 10g How-To&apos;s'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-6296934457911153921</id><published>2007-10-05T00:36:00.000-07:00</published><updated>2007-10-05T00:42:13.735-07:00</updated><title type='text'>Where did System.out | System.err statements print in Oracle AS 10g (10.1.3)?</title><content type='html'>By default, Sys.out statements are printed in the $Oracle_Home/opmn/logs/&lt;OC4J_name&gt;_default_island_# folder. But we can change the location by modify the opmn.xml file.&lt;br /&gt;&lt;br /&gt;To specify other out file location:&lt;br /&gt;&lt;br /&gt;We use "-out [file]" option in the oc4j startup parameter list to Specifies a file to route the standard output to. The specified file contains messages that are printed to System.out, as well as the messages sent to output through the servlet logging interface. If not specified, all output is written to standard out. &lt;br /&gt;&lt;br /&gt;Note that in an OPMN-managed configuration, the file will be generated within an instance_default_group_1 directory appended to the path specified. &lt;br /&gt;&lt;br /&gt;For example, if you specify the following in opmn.xml: &lt;br /&gt;&lt;br /&gt;&lt;data id="oc4j-options" value=" ... -out /mypath/mylog.log" /&gt;&lt;br /&gt;The mylog.log file will actually be generated in: &lt;br /&gt;&lt;br /&gt;/mypath/instanceName_default_group_1/mylog.log.&lt;br /&gt;&lt;br /&gt;To specify other err file location:&lt;br /&gt;&lt;br /&gt;We use "-err [file]" option in the oc4j startup parameter list to specify a file to route standard error output to. The file contains messages that are printed to System.err. If not specified, all errors are written to standard error. &lt;br /&gt;&lt;br /&gt;Note that in an OPMN-managed configuration, the file will be generated within an instance_default_group_1 directory appended to the path specified. See the -out description above for details.&lt;br /&gt;&lt;br /&gt;See "&lt;a href="http://download.oracle.com/docs/cd/B25221_04/web.1013/b14432/sysprops.htm#CHDDCCJI"&gt;Managing stdout/stderr Log Files&lt;/a&gt;" for additional system properties that can be set to manage stdout files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-6296934457911153921?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/6296934457911153921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=6296934457911153921' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/6296934457911153921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/6296934457911153921'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/10/where-did-systemout-statements-print-in.html' title='Where did System.out | System.err statements print in Oracle AS 10g (10.1.3)?'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-1200206434192061896</id><published>2007-10-04T01:05:00.000-07:00</published><updated>2007-10-04T01:09:33.573-07:00</updated><title type='text'>TIBCO Rendezvous vs SonicMQ</title><content type='html'>This article is compiled from source available in the WWW, not my own opinion and only used for reference and information purpose. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;TIBCO Rendezvous &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;TIBCO has been one of the leading providers of EAI since its establishment 20 years ago and TIB/RV is one of the most widely used messaging middleware in enterprises.&lt;br /&gt;&lt;br /&gt;TIB/RV is implemented in C and based on a distributed architecture. An installation of TIB/RV resides on each host on the network.&lt;br /&gt;&lt;br /&gt;Messaging can be delivered in point-to-point or publish/subscribe, synchronously or asynchronously, locally delivered or sent via WAN or the Internet. Rendezvous messages are self-describing and platform independent.&lt;br /&gt;&lt;br /&gt;TIB/RV is composed of three main components:&lt;br /&gt;- RV Daemon (RVD) responsible for the delivery of messages within a LAN.&lt;br /&gt;- RV Agent (RVA)&lt;br /&gt;- RV Routing Daemon (RVRD)&lt;br /&gt;&lt;br /&gt;In TIB/RV, point-to-point messages sending model is fairly similar to publish/subscribe, The RV Sender program passes the message and destination topic to RVD. RVD then broadcasts this message using User Data Packet (UDP) to the entire network. All subscribing computers with RVDs on the network will receive this message. RVD will filter the messages which non-subscribers will not be notified of the message. Therefore only subscriber programs to the particular topic will get the messages.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SonicMQ&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;SonicMQ is JMS implementation, and has outstanding performances competitive with existing MOM technologies, such as IBM MQSeries. SonicMQ is written in 100% pure Java, supports XML messaging, and HTTP tunnelling to allow SonicMQ to work over the Internet. The underlying mechanism of SonicMQ is its “broker” that facilitates the movement of messages across the network. &lt;br /&gt;&lt;br /&gt;The communication protocols that can be used with SonicMQ include TCP, HTTP and SSL. Since it uses common Internet protocol, SonicMQ can extend its deployment to the Internet. It also provides bridges to many other popular MOMs that allow messages to be sent and received between SonicMQ and other MOMs.&lt;br /&gt;&lt;br /&gt;There are three types of configurations a user can choose from:&lt;br /&gt;- Single-broker Configuration: Under this configuration, there is one broker which is being shared across a few nodes.&lt;br /&gt;- Multi-broker Clusters&lt;br /&gt;- Multi-node Configurations&lt;br /&gt;&lt;br /&gt;The broker is the most important underlying implementation of SonicMQ. It is responsible for delivering and acquiring of messages within a LAN environment. It is a client-server model, where many clients connect to a single broker. The connection can be via TCP (for LAN), SSL (for security encryption), or even HTTP (to connect to external entities).&lt;br /&gt;&lt;br /&gt;The downside with single broker configuration is that scalability is limited by the capabilities of the node machine. Also the system is dependent on the single broker machine (node), hence leading to a bottleneck of the system at the node. The whole system may collapse if the node goes down. To solve this problem a multi-broker cluster must be used.&lt;br /&gt;&lt;br /&gt;There exist a benchmark report for SonicMQ by Progress Software. SonicMQ showed outstanding performances compared to IBM MQSeries and Fiorano FioranoMQ, (both are JMS implementations) under WinNT platform.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;TIB/RV vs SonicMQ&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;There is a benchmarking result shows that TIB/RV has exceptional performance compared to SonicMQ. &lt;br /&gt;&lt;br /&gt;They are as follows:&lt;br /&gt;- High publish/subscribe and point-to-point send/receive rates&lt;br /&gt;- High scalability:&lt;br /&gt;- Publishing rate not affected by introducing more receivers;&lt;br /&gt;- Subscriber rate increases as more subscribers are introduced.&lt;br /&gt;- Low memory and CPU consumption&lt;br /&gt;&lt;br /&gt;The only major downside of TIB/RV is that when there are very few receivers in the network, it could flood the network with many unnecessary UDP packets, introducing congestions.&lt;br /&gt;&lt;br /&gt;TIB/RV is using multicast-based publish/subscribe messaging, which is an excellent solution for near-real-time message dissemination when 1 to 'very-many' delivery capabilities matter. It is better for application with high volume, high performance, acceptance of unreliability (nature of UDP), 1 to very many.&lt;br /&gt;&lt;br /&gt;However, in most EAI cases the opposite requirements are true: ‘Cardinality’ of message delivery is 1-1, 1-2; 1 to-very-many is a rare case. With exception of ‘consolidated application’ integration model (near real time request reply with timeout heuristics), reliability of message delivery takes priority over performance.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Reference List&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cs.cmu.edu/~priya/WFoMT2002/Pang-Maheshwari.pdf"&gt;Benchmarking Message-Oriented Middleware TIB/RV vs SonicMQ&lt;/a&gt;&lt;br /&gt;&lt;a href="http://narencoolgeek.blogspot.com/2006/01/tibco-rv-vs-tibco-ems.html"&gt;Tibco RV vs Tibco EMS&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-1200206434192061896?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/1200206434192061896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=1200206434192061896' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1200206434192061896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1200206434192061896'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/10/tibco-rendezvous-vs-sonicmq.html' title='TIBCO Rendezvous vs SonicMQ'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-5726528259833703080</id><published>2007-10-03T02:34:00.000-07:00</published><updated>2009-08-20T09:32:22.725-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data Warehouse'/><category scheme='http://www.blogger.com/atom/ns#' term='ETL'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>Hands-on Tutorial of Oracle BI EE</title><content type='html'>1. &lt;a href="http://www.oracle.com/technology/obe/obe_bi/bi_ee_1013/install/installoraclebee.htm"&gt;BI EE Installation&lt;/a&gt; http://www.oracle.com/technology/obe/obe_bi/bi_ee_1013/install/installoraclebee.htm&lt;br /&gt;&lt;br /&gt;2. &lt;a href="http://www.oracle.com/technology/obe/obe_bi/bi_ee_1013/bi_admin/biadmin.html"&gt;Create A Repository&lt;/a&gt;&lt;br /&gt;http://www.oracle.com/technology/obe/obe_bi/bi_ee_1013/bi_admin/biadmin.html&lt;br /&gt;&lt;br /&gt;3. &lt;a href="http://www.oracle.com/technology/obe/obe_bi/bi_ee_1013/saw/saw.html"&gt;Create A DashBoard&lt;/a&gt; http://www.oracle.com/technology/obe/obe_bi/bi_ee_1013/saw/saw.html&lt;br /&gt;&lt;br /&gt;4. &lt;a href="http://www.oracle.com/technology/obe/obe_bi/bipub/bip_biee/bip_biee.htm"&gt;Integration with BI Publisher&lt;/a&gt; http://www.oracle.com/technology/obe/obe_bi/bipub/bip_biee/bip_biee.htm&lt;br /&gt;&lt;br /&gt;OU Reference&lt;br /&gt;http://ouweb.us.oracle.com/database/oracle_business_inteligence_series_replays.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-5726528259833703080?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/5726528259833703080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=5726528259833703080' title='31 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/5726528259833703080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/5726528259833703080'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/10/hands-on-tutorial-of-oracle-bi-ee.html' title='Hands-on Tutorial of Oracle BI EE'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>31</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-7296064869797980136</id><published>2007-10-03T01:57:00.000-07:00</published><updated>2009-08-20T09:49:29.562-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data Warehouse'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>BI Primer</title><content type='html'>Recently, i am looking at the Oracle Business Intelligence (BI) solution and preparing a technical sharing session.&lt;br /&gt;&lt;br /&gt;When I dive into the BI, i found it is a damn big topic and a lot of acronym and technical term need to be clear before get to understand it.&lt;br /&gt;&lt;br /&gt;Information here is compiled from multiple source available from the internet to clear those prerequisite.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;What is BI ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Business intelligence (BI) is a business management term, which refers to applications and technologies that are used to gather, provide access to, and analyze data and information about company operations.&lt;br /&gt;&lt;br /&gt;BI systems can help companies have a more comprehensive knowledge of the factors affecting their business, such as metrics on sales, production, internal operations, and they can help companies to make better business decisions.&lt;br /&gt;&lt;br /&gt;BI software and applications includes a range of tools. Some BI applications are used to analyze performance, projects, or internal operations. Other BI applications are used to store and analyze data, such as Data mining (DM), Data Farming, and Data warehouses; Decision Support Systems (DSS) and Forecasting. Other BI applications are used to analyze or manage the "human" side of businesses, such as Customer Relationship Management (CRM) and Marketing tools and Human Resources applications.&lt;br /&gt;&lt;br /&gt;BI often uses key performance indicators (KPIs) to assess the present state of business and to prescribe a course of action. The KPI methodology was further expanded with the Chief Performance Officer methodology which incorporated KPIs and root cause analysis into a single methodology.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;What is OLTP ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OLTP stand for Online Transaction Processing. This is a standard, normalized database structure. OLTP is designed for transactions, which means that inserts, updates, and deletes must be fast. Imagine a call center that takes orders. Call takers are continually taking calls and entering orders that may contain numerous items. Each order and each item must be inserted into a database. Since the performance of the database is critical, we want to maximize the speed of inserts (and updates and deletes). To maximize performance, we typically try to hold as few records in the database as possible. OLTP is typically for data entry and retrieval transaction processing.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;What us OLAP ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Online Analytical Processing is an approach to quickly providing answers to analytical queries that are multidimensional in nature. OLAP is part of the broader category BI, which also includes Extract transform load (ETL), relational reporting and data mining. The typical applications of OLAP are in business reporting for sales, marketing, management reporting, business process management (BPM), budgeting and forecasting, financial reporting and similar areas. The term OLAP was created as a slight modification of the traditional database term OLTP (Online Transaction Processing).&lt;br /&gt;&lt;br /&gt;The output of an OLAP query is typically displayed in a matrix (or pivot) format. The dimensions form the row and column of the matrix; the measures, the values.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;What is an OLAP cube ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The term "cube" comes from the geometric object that has three dimensions. OLAP cubes can have many more dimensions than 3, but the term continues to apply.&lt;br /&gt;&lt;br /&gt;In database theory, an OLAP cube is an abstract representation of a projection of an RDBMS relation. It is an arrangement of data in arrays (alternatively called cubes) to allow fast analysis. The arrangement of data into cubes avoids a limitation of relational databases which are not well suited for near instantaneous analysis of large amounts of data.  OLAP cubes can be thought of as extensions to the two-dimensional array of a spreadsheet. Because there can be more than three dimensions in an OLAP system the term hypercube is sometimes used. The commercial OLAP products have different methods of creating the cubes and hypercubes and of linking cubes and hypercubes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What is Measure, Dimension &amp;amp; Hierarchy?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;While most databases designed for OLTP such as those used in claims processing are designed for efficiency in data storage, OLAP cubes are designed for efficiency in data retrieval.&lt;br /&gt;&lt;br /&gt;Regular relational databases treat all data into the database similarly, however OLAP cubes categorize data into "dimensions" and "measures".&lt;br /&gt;&lt;br /&gt;Measures represent items that are counted, summarized or aggregated, such as costs or units of service.&lt;br /&gt;&lt;br /&gt;A company might wish to analyse some financial data by product, by time-period, by city, by type of revenue and cost, and by comparing actual data with a budget. These additional methods of analysing the data are known as dimensions.&lt;br /&gt;&lt;br /&gt;Dimensions are variables by which measures are summarized, such as hospitals, physicians, or dates of service. This organization of data greatly facilitates the ability to formulate data requests based on real-life situations.&lt;br /&gt;&lt;br /&gt;Each of the elements of a dimension could be summarised using a hierarchy. For example May 2005 could be summarised into Second Quarter 2005 which in turn would be summarised in the Year 2005. Similarly the cities could be summarised into regions, countries and then global regions; products could be summarised into larger categories; and cost headings could be grouped into types of expenditure. Conversely the analyst could start at a highly summarised level such as the total difference between the actual results and the budget and drill down into the cube to discover which locations, products and periods had produced this difference.&lt;br /&gt;&lt;br /&gt;In addition, many of queries that could be posed to the data are "pre-aggregated" in the database such that the answers have already been precalculated and can be reported without delay.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What is Oracle OLAP Cube?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Oracle OLAP Cube requires a specific set of materialized views to map to a star schema. A materialized view is a replica of a target master from a single point in time. The master can be either a master table at a master site or a master materialized view at a materialized view site. ( more about  &lt;a href="http://www.akadia.com/services/ora_materialized_views.html"&gt;1&lt;/a&gt; | &lt;a href="http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96567/repmview.htm"&gt;2&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why are OLAP cubes important ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Before OLAP technology was well developed, data had to be extracted from databases using "queries".&lt;br /&gt;&lt;br /&gt;This meant that the analyst had to structure a request to the database for the information desired, and then submitted this query to the database server. That server would processing query and return the results.&lt;br /&gt;&lt;br /&gt;Depending on the size of the database and the data requested, this query could take minutes or hours to complete.&lt;br /&gt;&lt;br /&gt;In this sense, the "online" aspect of this type of reporting is questionable. OLAP cubes are fundamentally different in that they "pre-aggregate" the data used to answer many of queries that are anticipated.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;What is star schema? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The star schema (sometimes referenced as star join schema) is the simplest style of data warehouse schema, consisting of a few "fact tables" (possibly only one, justifying the name) referencing any number of "dimension tables". The "facts" that the data warehouse helps analyze are classified along different "dimensions": the fact tables hold the main data, while the usually smaller dimension tables describe each value of a dimension and can be joined to fact tables as needed.&lt;br /&gt;&lt;br /&gt;Dimension tables have a simple primary key, while fact tables have a compound primary key consisting of the aggregate of relevant dimension keys.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Facts and Dimensions&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When we talk about the way we want to look at data, we usually want to see some sort of aggregated data. These data are called measures. These measures are numeric values that are measurable and additive. For example, our sales dollars are a perfect measure.&lt;br /&gt;Just tracking measures isn't enough, however. We need to look at our measures using those "by conditions". These "by conditions" are called dimensions.&lt;br /&gt;&lt;br /&gt;Therefore, in designing a star schema, our first order of business is usually to determine what we want to see (our measures) and how we want to see it (our dimensions).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Building the Fact Table&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Fact Table holds our measures, or facts. The measures are numeric and additive across some or all of the dimensions. For example, sales are numeric and we can look at total sales for a product, or category, and we can look at total sales by any time period. The sales figures are valid no matter how we slice the data.&lt;br /&gt;&lt;br /&gt;While the dimension tables are short and fat, the fact tables are generally long and skinny. They are long because they can hold the number of records represented by the product of the counts in all the dimension tables.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;What is data mining?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Data mining has been defined as "the nontrivial extraction of implicit, previously unknown, and potentially useful information from data" and "the science of extracting useful information from large data sets or databases".&lt;br /&gt;&lt;br /&gt;Data mining involves sorting through large amounts of data and picking out relevant information. It is usually used by Business intelligence organizations, and financial analysts, but is increasingly used in the sciences to extract information from the enormous data sets generated by modern experimental and observational methods.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What is oracle OLAP Solution?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Oracle OLAP solution has Oracle DB OLAP Option and Hyperion Essbase.&lt;br /&gt;&lt;br /&gt;Oracle Database OLAP is optimal for accelerating query performance and&lt;br /&gt;adding analytic content for SQL-based BI Tools on Oracle Database, whereas oracle’s Hyperion Essbase is ideal for performance management applications to be the de-facto world leader in planning, budgeting applications etc.&lt;br /&gt;&lt;br /&gt;Both the OLAP Option and Essbase share certain core capabilities which are fast query performance, fast incremental update of data sets, rich calculation capabilities and dimensional calculation and query models.&lt;br /&gt;&lt;br /&gt;Oracle OLAP—an option to Oracle Database 11g Enterprise Edition—is a calculation engine that supports the entire spectrum of advanced analytical applications. It extends the analytic capabilities of the Oracle database by providing new multidimensional datatypes, a multidimensional calculation engine, and a framework to build OLAP applications using SQL, PL/SQL, and Java. (&lt;a href="http://www.dbazine.com/datawarehouse/dw-articles/rittman1"&gt;Know more about oracle OLAP option&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;Database vs. Data Warehouse&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The primary difference betwen you application database and a data warehouse is that while the former is designed (and optimized) to record , the latter has to be designed (and optimized) to respond to analysis questions that are critical for your business. Application databases are OLTP (On-Line Transaction Processing) systems where every transation has to be recorded, and super-fast at that.This system is write-optimized, and you shouldn?¡¥t crib if your analysis query (read operation) takes a lot of time on such a system.&lt;br /&gt;&lt;br /&gt;A Data Warehouse (DW) on the other end, is a database (yes, you are right, it?¡¥s a database) that is designed for facilitating querying and analysis. Often designed as OLAP (On-Line Analytical Processing) systems, these databases contain read-only data that can be queried and analysed far more efficiently as compared to your regular OLTP application databases. In this sense an OLAP system is designed to be read-optimized.&lt;br /&gt;&lt;br /&gt;Creation of a DW leads to a direct increase in quality of analyses as the table structures are simpler (you keep only the needed information in simpler tables), standardized (well documented table structures), and denormalized (to reduce the linkages between tables and the corresponding complexity of queries). A DW drastically reduces the ??cost-per-analysis?¡¥ and thus permits more analysis per FTE. Having a well-designed DW is the foundation successful BI/Analytics initiatives are built upon (&lt;span style="font-size:85%;"&gt;&lt;a style="font-style: italic;" href="http://opensourceanalytics.com/2005/11/02/database-vs-data-warehouse/"&gt;original post&lt;/a&gt;&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;Data Warehouse vs Data Mart&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Data Warehouses and Data Marts are conceptually different in scope. However, they are built using the exact same methods and procedures.&lt;br /&gt;&lt;br /&gt;A Data Mart is a specific, subject oriented, repository of data designed to answer specific questions for a specific set of users. So an organization could have multiple data marts serving the needs of marketing, sales, operations, collections, etc. A data mart usually is organized as one dimensional model as a star-schema (OLAP cube) made of a fact table and multiple dimension tables.&lt;br /&gt;&lt;br /&gt;In contrast, a Data Warehouse (DW) is a single organizational repository of enterprise wide data across many or all subject areas. The Data Warehouse is the authoritative repository of all the fact and dimension data (that is also available in the data marts) at an atomic level.&lt;br /&gt;&lt;br /&gt;A data warehouse (or mart) is way of storing data for later retrieval. This retrieval is almost always used to support decision-making in the organization. That is why many data warehouses are considered to be DSS (Decision-Support Systems). oth a data warehouse and a data mart are storage mechanisms for read-only, historical, aggregated data.&lt;br /&gt;&lt;br /&gt;As technology improved (lower cost for more performance) and user requirements increased (faster data load cycle times and more features), data warehouses have evolved through several fundamental stages:&lt;br /&gt;&lt;br /&gt;* Offline Operational Databases ?a Data warehouses in this initial stage are developed by simply copying the database of an operational system to an off-line server where the processing load of reporting does not impact on the operational system's performance.&lt;br /&gt;* Offline Data Warehouse ?a Data warehouses in this stage of evolution are updated on a regular time cycle (usually daily, weekly or monthly) from the operational systems and the data is stored in an integrated reporting-oriented data structure&lt;br /&gt;* Real Time Data Warehouse ?a Data warehouses at this stage are updated on a transaction or event basis, every time an operational system performs a transaction (e.g. an order or a delivery or a booking etc.)&lt;br /&gt;* Integrated Data Warehouse ?a Data warehouses at this stage are used to generate activity or transactions that are passed back into the operational systems for use in the daily activity of the organization.&lt;br /&gt;&lt;br /&gt;The term data warehouse architecture is primarily used today to describe the overall structure of a Business Intelligence system. Other historical terms include decision support systems (DSS), management information systems (MIS), and others (&lt;a href="http://opensourceanalytics.com/2006/03/14/data-mart-vs-data-warehouse-the-great-debate/"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;original post&lt;/span&gt;&lt;/span&gt;)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;List of reference i used to compile this primer:&lt;br /&gt;&lt;br /&gt;Introduction to OLAP&lt;br /&gt;http://www.dwreview.com/OLAP/Introduction_OLAP.html&lt;br /&gt;&lt;br /&gt;Data Warehousing Overview&lt;br /&gt;http://www.dwreview.com/DW_Overview.html&lt;br /&gt;&lt;br /&gt;Designing OLAP Solutions&lt;br /&gt;http://www.dwreview.com/OLAP/OLAP_Comparison.html&lt;br /&gt;&lt;br /&gt;OLAP architectures&lt;br /&gt;http://www.olapreport.com/Architectures.htm&lt;br /&gt;&lt;br /&gt;Designing the Star Schema Database By Craig Utley&lt;br /&gt;http://www.ciobriefings.com/whitepapers/StarSchema.asp&lt;br /&gt;&lt;br /&gt;Open Source Analytics / Open source BI by Nishith&lt;br /&gt;http://opensourceanalytics.com/&lt;br /&gt;&lt;br /&gt;Discussion of designing OLAP Cubes&lt;br /&gt;http://databaseanswers.org/designing_olap_cubes.htm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-7296064869797980136?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/7296064869797980136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=7296064869797980136' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7296064869797980136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7296064869797980136'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/10/bi-primer.html' title='BI Primer'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-1169421356283688590</id><published>2007-10-03T01:10:00.000-07:00</published><updated>2007-10-03T19:20:54.130-07:00</updated><title type='text'>Vector graphics Vs Raster graphics</title><content type='html'>&lt;span style="font-family: courier new; font-style: italic;font-size:90%;" &gt;Source: wikimedia.org&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/en/b/b4/VectorBitmapExample.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://upload.wikimedia.org/wikipedia/en/b/b4/VectorBitmapExample.png" alt="" border="0" /&gt;&lt;/a&gt;Vector graphics (also called geometric modeling or object-oriented graphics) is the use of geometrical primitives such as points, lines, curves, and polygons, which are all based upon mathematical equations to represent images in computer graphics.&lt;br /&gt;&lt;br /&gt;It is used in contrast to the term raster graphics, which is the representation of images as a collection of pixels, and used as the sole graphic type for actual photographic images. To know more about &lt;a href="http://en.wikipedia.org/wiki/Vector_graphics"&gt;vector &lt;/a&gt;| &lt;a href="http://en.wikipedia.org/wiki/Raster_image"&gt;raster&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-1169421356283688590?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/1169421356283688590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=1169421356283688590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1169421356283688590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1169421356283688590'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/10/vector-graphics-vs-raster-graphics.html' title='Vector graphics Vs Raster graphics'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-8467062831513785331</id><published>2007-10-03T00:39:00.000-07:00</published><updated>2007-10-03T19:21:37.813-07:00</updated><title type='text'>Oracle Locator Vs Oracle Spatial</title><content type='html'>To get a quick idea of what difference between oracle locator and spatial are, i put them down here.&lt;br /&gt;&lt;br /&gt;Features included in Oracle Locator:&lt;br /&gt;&lt;br /&gt;* Exactly the same code base as Oracle Spatial for included functions - you won't get a  performance degrade by using Oracle Locator, and features behave in the same manner in Oracle Locator and Oracle Spatial;&lt;br /&gt;* Full support to store spatial data types;&lt;br /&gt;* Standard SQL query access to spatial data;&lt;br /&gt;* All indexing types are available - including R-Tree and partition support;&lt;br /&gt;* No limits on the size and complexity of data stored;&lt;br /&gt;* Most of the common spatial operations, such as "find all customers in this region" and "what shops are within 100 metres of this school", are available;&lt;br /&gt;* Data compatibility between Oracle Spatial and Locator, so if you do decide to upgrade, all your data remains valid; and&lt;br /&gt;* Support for multiple coordinate systems.&lt;br /&gt;&lt;br /&gt;Oracle Spatial provides the following functions which are not included in Oracle Locator:&lt;br /&gt;&lt;br /&gt;* Linear referenced features e.g. roads which store the distance along the road;&lt;br /&gt;* Network models, such as road networks, allowing rapid calculation of shortest paths;&lt;br /&gt;* Topological relationships can be stored, such as this property boundary touches this neighbouring boundary. Generally used by data producers wishing to edit high integrity spatial data;&lt;br /&gt;* Storage of images such as satellite and aerial photography;&lt;br /&gt;* A geocoder that translates address data to coordinate; and&lt;br /&gt;* Some more complex spatial functions, mainly for analysis and data aggregation.&lt;br /&gt;&lt;br /&gt;Find the original article &lt;a href="http://www.geometryit.com/tip/oracleSpatialLocator.php"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There a list of relevant readings from where you can go further.&lt;br /&gt;&lt;br /&gt;Oracle Spatial - &lt;a href="http://en.wikipedia.org/wiki/Oracle_Spatial"&gt;Wikipedia&lt;/a&gt;&lt;br /&gt;Oracle Spatial Documents - &lt;a href="http://www.oracle.com/technology/products/spatial/spatial_10g_doc_index.html"&gt;Documentation&lt;/a&gt;&lt;br /&gt;Oracle Locator and Spatial Option - &lt;a href="http://www.oracle.com/technology/products/spatial/pdf/10gr2_collateral/locator_spatial_ds_10gR2.pdf"&gt;Datasheet&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.directionsmag.com/article.php?article_id=2449&amp;amp;trv=1"&gt;&lt;/a&gt;Oracle Locator and Spatial FAQ - &lt;a href="http://www.orafaq.com/faqsdo.htm"&gt;FAQ&lt;/a&gt;&lt;br /&gt;Oracle XE , Locator &amp;amp; Geospatial Information Systems - &lt;a href="http://www.directionsmag.com/article.php?article_id=2449&amp;amp;trv=1"&gt;Interview&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-8467062831513785331?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/8467062831513785331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=8467062831513785331' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/8467062831513785331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/8467062831513785331'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/10/oracle-locator-vs-oracle-spatial.html' title='Oracle Locator Vs Oracle Spatial'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-9039107154330819979</id><published>2007-09-28T01:21:00.000-07:00</published><updated>2009-02-21T00:11:03.686-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Server Migration'/><category scheme='http://www.blogger.com/atom/ns#' term='Tech Forum'/><category scheme='http://www.blogger.com/atom/ns#' term='DB Migration'/><title type='text'>Tech Forum &amp; Workshop in Kuala Lumpur, Singapore &amp; Indonesia</title><content type='html'>I have been staying in KL for the last 4 days for a tech forum and hands-on workshop hosted in KL.&lt;br /&gt;&lt;br /&gt;This forum explains how ISVs can build their applications using oracle technology and grow their business with market leaders (Oracle &amp;amp; Sun).  It also covers the new features, benefit and how to use technical resources available exclusively to our ISVs.&lt;br /&gt;&lt;br /&gt;In the workshop, Oracle (My team) will assist ISVs attendees migrating their application from other databases or middleware to Oracle technology.&lt;br /&gt;&lt;br /&gt;Here is the event agenda&lt;br /&gt;&lt;br /&gt;Day 1:&lt;br /&gt;&lt;br /&gt;09:00 AM Registration&lt;br /&gt;09:30 AM Welcome note and agenda&lt;br /&gt;09:45 AM Tech Talk By Sun (Open Solaris and Virtualization)&lt;br /&gt;10:45 AM Morning Break&lt;br /&gt;11:00 AM Tech Talk By Oracle ( Migration Methodology and Best Practices)&lt;br /&gt;12:00 PM Lunch&lt;br /&gt;01:30 PM Migration workshop&lt;br /&gt;03:30 PM Afternoon Break&lt;br /&gt;03:45 PM Migration workshop&lt;br /&gt;06:00 OM Close&lt;br /&gt;&lt;br /&gt;Day 2:&lt;br /&gt;&lt;br /&gt;09:00 AM Continue Migration workshop&lt;br /&gt;10:45 AM Morning Break&lt;br /&gt;12:00 PM Lunch&lt;br /&gt;01:30 PM Continue Migration workshop&lt;br /&gt;03:30 PM Afternoon Break&lt;br /&gt;03:45 PM Continue Migration workshop&lt;br /&gt;06:00 OM Closing Ceremony&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I reached KL two days earlier before the event open. For the first two days of my staying, I am quite busy in preparing the user environment like work stations, servers (from Sun) and network setup as this is the first time for our Malaysia partner (co-organizer) hosting this kind of event. At the last 2 days, i gave the technical talk about migration methodology and help ISVs solve their issues during the hands-on migration session.&lt;br /&gt;&lt;br /&gt;In my speech, i covered the migration methodology, approaches and things they need to consider for the DB migration , J2EE &amp;amp; Application Server (AS) migration and Oracle Forms migration. Some migration tools from oracle have been introduced to our ISVs, with which migration can be automated &amp;amp; simplified and duration of migration can be shorten. Demonstration of how to use those tools is also given after the speech.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mediafire.com/?70mtx4zwzky"&gt;Here&lt;/a&gt; is the material for the migration, you can dig out more from the links i am giving in the ppt.&lt;br /&gt;&lt;br /&gt;There are actually some photos taken by our partner on that day and I am in the midst of geting them and upload here. So, keep tuned for the photos.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://bp1.blogger.com/_ighNp6Wi0Zw/RwRhxfSWxUI/AAAAAAAAABM/w51L4JrqWcM/s1600-h/P1000336.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_ighNp6Wi0Zw/RwRhxfSWxUI/AAAAAAAAABM/w51L4JrqWcM/s320/P1000336.JPG" alt="" id="BLOGGER_PHOTO_ID_5117322579439699266" border="0" /&gt;&lt;/a&gt;Migration workshop in Kuala Lumpur&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://bp2.blogger.com/_ighNp6Wi0Zw/RwRhxvSWxVI/AAAAAAAAABU/yRtdYmFe6Ak/s1600-h/P1000338.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_ighNp6Wi0Zw/RwRhxvSWxVI/AAAAAAAAABU/yRtdYmFe6Ak/s320/P1000338.JPG" alt="" id="BLOGGER_PHOTO_ID_5117322583734666578" border="0" /&gt;&lt;/a&gt;Migration workshop  in Kuala Lumpur&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ighNp6Wi0Zw/SZ-y_FFXBhI/AAAAAAAAAEw/zPM_ab2_jCM/s1600-h/IMG_1557.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://1.bp.blogspot.com/_ighNp6Wi0Zw/SZ-y_FFXBhI/AAAAAAAAAEw/zPM_ab2_jCM/s320/IMG_1557.JPG" alt="" id="BLOGGER_PHOTO_ID_5305155682831894034" border="0" /&gt;&lt;/a&gt;Tech Forum in Singapore&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ighNp6Wi0Zw/SZ-vac1-F8I/AAAAAAAAAEQ/rz4rZEmE5eE/s1600-h/IMG_1567.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://1.bp.blogspot.com/_ighNp6Wi0Zw/SZ-vac1-F8I/AAAAAAAAAEQ/rz4rZEmE5eE/s320/IMG_1567.JPG" alt="" id="BLOGGER_PHOTO_ID_5305151755019753410" border="0" /&gt;&lt;/a&gt;Sun Talk about Virtualization in Singapore&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ighNp6Wi0Zw/SZ-ypJ92rNI/AAAAAAAAAEo/x_Zz-LI0wJY/s1600-h/DSCN1045.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_ighNp6Wi0Zw/SZ-ypJ92rNI/AAAAAAAAAEo/x_Zz-LI0wJY/s320/DSCN1045.JPG" alt="" id="BLOGGER_PHOTO_ID_5305155306185469138" border="0" /&gt;&lt;/a&gt;Tech Forum in Indonesia&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ighNp6Wi0Zw/SZ-xL_9LHNI/AAAAAAAAAEY/_-tCCBHt-z4/s1600-h/DSCN1051.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_ighNp6Wi0Zw/SZ-xL_9LHNI/AAAAAAAAAEY/_-tCCBHt-z4/s320/DSCN1051.JPG" alt="" id="BLOGGER_PHOTO_ID_5305153705770425554" border="0" /&gt;&lt;/a&gt;Talk about DB Migration in Indonesia&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ighNp6Wi0Zw/SZ-xj-4qZPI/AAAAAAAAAEg/Wmvi6bpf_Dw/s1600-h/DSCN1059.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_ighNp6Wi0Zw/SZ-xj-4qZPI/AAAAAAAAAEg/Wmvi6bpf_Dw/s320/DSCN1059.JPG" alt="" id="BLOGGER_PHOTO_ID_5305154117799929074" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Talk about DB Migration in Indonesia&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-9039107154330819979?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/9039107154330819979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=9039107154330819979' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/9039107154330819979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/9039107154330819979'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/09/migration-tech-forum-workshop-in-kuala.html' title='Tech Forum &amp; Workshop in Kuala Lumpur, Singapore &amp; Indonesia'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_ighNp6Wi0Zw/RwRhxfSWxUI/AAAAAAAAABM/w51L4JrqWcM/s72-c/P1000336.JPG' height='72' width='72'/><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-8725077790052918725</id><published>2007-09-27T23:53:00.000-07:00</published><updated>2007-09-28T00:00:29.332-07:00</updated><title type='text'>Real life architectures</title><content type='html'>Want to know how the architectures in real world which scale to millions of users looks like? Visit highscalability.com, You can find these information for google, amazon, youtube and flickr.&lt;br /&gt;&lt;br /&gt;Google Architecture&lt;br /&gt;http://highscalability.com/google-architecture&lt;br /&gt;&lt;br /&gt;Amazon Architecture&lt;br /&gt;http://highscalability.com/amazon-architecture&lt;br /&gt;&lt;br /&gt;YouTube Architecture&lt;br /&gt;http://highscalability.com/youtube-architecture&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Flickr Architecture&lt;br /&gt;http://highscalability.com/flickr-architecture&lt;br /&gt;&lt;br /&gt;There are more real life architectures and you can find it &lt;a href="http://highscalability.com/links/weblink/24"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Highscalability.com is really a great work and i had added it to my rss feed list.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-8725077790052918725?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/8725077790052918725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=8725077790052918725' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/8725077790052918725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/8725077790052918725'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/09/real-life-architectures.html' title='Real life architectures'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-6545513816192597590</id><published>2007-08-02T01:52:00.000-07:00</published><updated>2007-08-02T02:10:46.198-07:00</updated><title type='text'>A portfolio of Oracle content management product</title><content type='html'>Oracle content management product portfolio includes Oracle Universal Content Management, Oracle Universal Records Management, Oracle Imaging and Process Management, Oracle Information Rights Management and Oracle Content Database.&lt;br /&gt;&lt;br /&gt;- Oracle Universal Content Management: provides a unified application for delivering document management, web content management, digital asset management, and retention management on a single platform. &lt;a href="http://download.oracle.com/docs/cd/E10316_01/license/ecm.htm#CACDDHII"&gt;more ... &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Oracle Universal Records Management: provides the most comprehensive DoD 5015.2 compliant records management system, enabling customers to apply records and retention management policies and practices to content in remote multiple repositories and applications including file systems, content management systems, and email archives as well as addressing the management of physical records in the same system. &lt;a href="http://download.oracle.com/docs/cd/E10316_01/license/ecm.htm#CACDJJFE"&gt;more ...&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;- Oracle Imaging and Process Management: provides image scanning and business process management capabilities for enterprise applications such as accounts payable and time and expense activities and includes support for PeopleSoft, JD Edwards, and Oracle eBusiness Suite. Its complete imaging management--from creation to archiving -includes certified integrations with Oracle Applications (including the Oracle E-Business Suite, JD Edwards, and PeopleSoft Enterprise) as well as other third-party business applications. &lt;a href="http://download.oracle.com/docs/cd/E10316_01/license/ecm.htm#CACFEIIB"&gt;more ...&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Oracle Information Rights Management: provides policy-based security and retention management on documents when they leave a repository. It uses encryption to "seal" documents to secure and track them everywhere they're stored and used-enablin organizations to define fine-grained policies for viewing, editing, printing, and copying sensitive information, ensuring that only authorized users have access to secured content. And, when the content or user is no longer valid, rights can be easily revoked. &lt;a href="http://download.oracle.com/docs/cd/E10316_01/license/ecm.htm#CACFEIIB"&gt;more ...&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Oracle Content Database Suite: an enterprise content infrastructure, that is highly scalable for global deployments and is based on the industry leading and highly scalable Oracle database. Supports file server and archive consolidation as well as a content repository for enabling and building content-centric applications. &lt;a href="http://www.oracle.com/pls/ebn/live_viewer.main?p_shows_id=5617420"&gt;more ...&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;First three products are bundled together and known as Enterprise Content Management Suite.&lt;br /&gt;&lt;br /&gt;There is a short story about what oracle did recently in the cm development, check &lt;a href="http://mediaproducts.gartner.com/reprints/oracle/148507.html"&gt;it&lt;/a&gt; out if you are interested.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-6545513816192597590?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/6545513816192597590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=6545513816192597590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/6545513816192597590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/6545513816192597590'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/08/portfolio-of-oracle-content-management.html' title='A portfolio of Oracle content management product'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-3659059633236252325</id><published>2007-07-27T02:15:00.000-07:00</published><updated>2007-07-27T02:22:49.642-07:00</updated><title type='text'>Build Oracle RAC 10g Release 2 Cluster on Linux and FireWire</title><content type='html'>Note, before going through this article, you better clear some definition like &lt;a href="http://en.wikipedia.org/wiki/Storage_area_network"&gt;SAN&lt;/a&gt; / &lt;a href="http://en.wikipedia.org/wiki/Network-attached_storage"&gt;NAS&lt;/a&gt; / &lt;a href="http://en.wikipedia.org/wiki/Fibre_Channel"&gt;Fibre Channel&lt;/a&gt; / &lt;a href="http://developer.apple.com/hardwaredrivers/firewire/index.html"&gt;FireWire&lt;/a&gt; / &lt;a href="http://en.wikipedia.org/wiki/ISCSI"&gt;iSCSI.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One of the most efficient ways to become familiar with Oracle Real Application Clusters (RAC) 10g technology is to have access to an actual Oracle RAC 10g cluster. There's no better way to understand its benefits—including fault tolerance, security, load balancing, and scalability—than to experience them directly.&lt;br /&gt;&lt;br /&gt;Find the original article &lt;a href="http://www.oracle.com/technology/pub/articles/hunter_rac10gr2.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-3659059633236252325?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/3659059633236252325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=3659059633236252325' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/3659059633236252325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/3659059633236252325'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/07/build-oracle-rac-10g-release-2-cluster.html' title='Build Oracle RAC 10g Release 2 Cluster on Linux and FireWire'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-4983521536186966160</id><published>2007-07-25T19:18:00.000-07:00</published><updated>2007-08-01T01:12:12.106-07:00</updated><title type='text'>The Open Group Architecture Framework</title><content type='html'>The Open Group Architecture Framework (TOGAF) is a comprehensive architecture framework and methodology from &lt;a href="http://www.opengroup.org/"&gt;open group&lt;/a&gt; which enables the design, evaluation and implementation of the right architecture for an enterprise.&lt;br /&gt;&lt;br /&gt;There is an Architecture Review &lt;a href="http://www.opengroup.org/architecture/togaf7-doc/arch/p4/comp/clists/syseng.htm"&gt;Checklist&lt;/a&gt; which you can use for architecture review for your project.&lt;br /&gt;&lt;br /&gt;Find out more from &lt;a href="http://www.opengroup.org/architecture/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-4983521536186966160?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/4983521536186966160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=4983521536186966160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/4983521536186966160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/4983521536186966160'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/07/open-group-architecture-framework.html' title='The Open Group Architecture Framework'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-106606281054410981</id><published>2007-07-25T01:14:00.000-07:00</published><updated>2009-02-20T23:04:31.887-08:00</updated><title type='text'>Journey of learning and thinking</title><content type='html'>Recently, i got certified as an enterprise architect from Sun. The Journey of making it happen is really painful and fruitful. Saying it painful is that i burned all my weekend for it and nobody around (people like BA) i can discuss or clarify (what i did in real project), which put me into my own assumption and a bad assumption may lead me to a deadlock state easily. What i did for this case was either to google it from internet or post my questions to some forums, by which i will be in the long-waiting idle state until someone come and share with me (very long waiting time make me sad and frustrated). From the other side, i should say it fruitful as it did build up my logical mindset for viewing, decomposing and architecting an application system.&lt;br /&gt;&lt;br /&gt;The whole process took me almost one year, it is truly a journey of learning, thinking, questioning, digesting and accumulating instead of 'hacking' as what i did to be a certified programmer long time ago. For the latter, i have learned all programming skill in school for years, don't wanna repeat the same thing again, but clear it in short time by doing mock exams (my way of hacking). For this SCEA, it is really a new milestone for me and something more exciting. Hacking of it may works for me and take less time, but not good for my own as i wanna self-train toward to a higher stage not for the seek of having one more cert in my profile.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_ighNp6Wi0Zw/RrA9f1mX3EI/AAAAAAAAAAM/f5xARjBQQM4/s1600-h/sun_cert.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5093638795729296450" style="" alt="" src="http://bp0.blogger.com/_ighNp6Wi0Zw/RrA9f1mX3EI/AAAAAAAAAAM/f5xARjBQQM4/s200/sun_cert.gif" border="0" /&gt;&lt;/a&gt; &lt;a href="http://bp0.blogger.com/_ighNp6Wi0Zw/RrA9f1mX3FI/AAAAAAAAAAU/OVwaOj5srm8/s1600-h/sun_congrat_letter.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5093638795729296466" style="" alt="" src="http://bp0.blogger.com/_ighNp6Wi0Zw/RrA9f1mX3FI/AAAAAAAAAAU/OVwaOj5srm8/s200/sun_congrat_letter.gif" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-106606281054410981?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/106606281054410981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=106606281054410981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/106606281054410981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/106606281054410981'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/08/journey-of-learning-and-accumulating.html' title='Journey of learning and thinking'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_ighNp6Wi0Zw/RrA9f1mX3EI/AAAAAAAAAAM/f5xARjBQQM4/s72-c/sun_cert.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-8292031324124347488</id><published>2007-07-22T19:58:00.001-07:00</published><updated>2007-07-22T19:58:13.426-07:00</updated><title type='text'>BPEL4People Specifications Integrate Human Interactions Into Business Process</title><content type='html'>A group of six technology vendors, including Active Endpoints, Adobe, BEA Systems, IBM, Oracle, and SAP AG, has announced the publication of 'BPEL4People' specifications, which define an approach for integrating human interactions using Web Services Business Process Execution Language (WS-BPEL) 2.0.&lt;br /&gt;&lt;br /&gt;BPEL4People extends the capabilities of WS-BPEL to support a broad range of human interaction patterns, allowing for expanded modeling of business processes within the WS-BPEL language.&lt;br /&gt;&lt;br /&gt;Specification Extracts&lt;br /&gt;&lt;br /&gt;BPEL4People is comprised of two specifications including: &lt;br /&gt;&lt;br /&gt;- WS-BPEL Extension for People, which layers features on top of WS-BPEL to &lt;strong&gt;describe human tasks as activities that may be incorporated as first-class components in WS-BPEL process definitions&lt;/strong&gt;. &lt;br /&gt;&lt;br /&gt;- Web Services Human Task introduces the &lt;strong&gt;definition of stand-alone human tasks, including the properties, behavior and operations used to manipulate them&lt;/strong&gt;. Capabilities provided by Web Services Human Task may be utilized by Web services-based applications beyond WS-BPEL processes. &lt;br /&gt;&lt;br /&gt;The WS-BPEL Extension for People specification introduces a set of elements which extend the standard BPEL elements and enable the modeling of human interactions, which may range from simple approvals to complex scenarios such as separation of duties, and interactions involving ad-hoc data. The specification introduces the people activity as a new type of basic activity which enables the specification of human interaction in processes in a more direct way. The implementation of a people activity could be an inline task or a standalone human task defined in the WS-HumanTask specification.&lt;br /&gt;&lt;br /&gt;The WS-HumanTask language introduces a grammar for describing human tasks and notifications. Both design time aspects, such as task properties and notification properties, and runtime aspects, such as task states and events triggering transitions between states are covered by the language. Finally, it introduces a programming interface which can be used by applications involved in the life cycle of a task to query task properties, execute the task, or complete the task. This interface helps to achieve interoperability between these applications and the task infrastructure when they come from different vendors.&lt;br /&gt;&lt;br /&gt;Visit original &lt;a href="http://xml.coverpages.org/ni2007-06-25-a.html"&gt;post&lt;/a&gt; for more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-8292031324124347488?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/8292031324124347488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=8292031324124347488' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/8292031324124347488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/8292031324124347488'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/07/bpel4people-specifications-integrate.html' title='BPEL4People Specifications Integrate Human Interactions Into Business Process'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-8731107309654093213</id><published>2007-07-22T19:57:00.001-07:00</published><updated>2007-07-22T19:57:47.909-07:00</updated><title type='text'>New features and enhancements in Java 5.0 &amp; 6.0</title><content type='html'>Following are the changes and enhancements at the language level for Java 5.0&lt;br /&gt;&lt;br /&gt;Generics &lt;br /&gt;This long-awaited enhancement to the type system allows a type or method to operate on objects of various types while providing compile-time type safety. It adds compile-time type safety to the Collections Framework and eliminates the drudgery of casting. &lt;br /&gt;&lt;br /&gt;Enhanced for Loop &lt;br /&gt;This new language construct eliminates the drudgery and error-proneness of iterators and index variables when iterating over collections and arrays &lt;br /&gt;&lt;br /&gt;Autoboxing/Unboxing &lt;br /&gt;This facility eliminates the drudgery of manual conversion between primitive types (such as int) and wrapper types (such as Integer). &lt;br /&gt;&lt;br /&gt;Typesafe Enums &lt;br /&gt;This flexible object-oriented enumerated type facility allows you to create enumerated types with arbitrary methods and fields. It provides all the benefits of the Typesafe Enum pattern ("Effective Java," Item 21) without the verbosity and the error-proneness. &lt;br /&gt;&lt;br /&gt;Varargs &lt;br /&gt;This facility eliminates the need for manually boxing up argument lists into an array when invoking methods that accept variable-length argument lists. &lt;br /&gt;&lt;br /&gt;Static Import &lt;br /&gt;This facility lets you avoid qualifying static members with class names without the shortcomings of the "Constant Interface antipattern." &lt;br /&gt;&lt;br /&gt;Metadata (Annotations) &lt;br /&gt;This language feature lets you avoid writing boilerplate code under many circumstances by enabling tools to generate it from annotations in the source code. This leads to a "declarative" programming style where the programmer says what should be done and tools emit the code to do it. Also it eliminates the need for maintaining "side files" that must be kept up to date with changes in source files. Instead the information can be maintained in the source file. &lt;br /&gt;&lt;br /&gt;For more features and enhancements in Java 5.0, visit Sun's official &lt;a href="http://72.5.124.55/j2se/1.5.0/docs/relnotes/features.html"&gt;page&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;For Java 6.0 (a.k.a Mustang), no significant changes at the language level, but comes with a bunch of enhancements in the other areas like Core, XML and Desktop. Most of the features are applicable both to J2SE and J2EE Platforms. New features and enhancements are encapsulated in the form of a Java Specification Request (JSR). Below is list of features we will  use frequently (IMHO) in the near future.&lt;br /&gt;&lt;br /&gt;Pluggable Annotation Processing API (JSR 269) &lt;br /&gt;Common Annotations (JSR 250) &lt;br /&gt;Java API for XML Based Web Services - 2.0 (JSR 224) &lt;br /&gt;JAXB 2.0 (JSR 222) &lt;br /&gt;Web Services Metadata (JSR 181) &lt;br /&gt;Streaming API for XML (JSR 173) &lt;br /&gt;JDBC 4.0 (JSR 221) &lt;br /&gt;Scripting in the Java Platform (JSR 223) &lt;br /&gt;&lt;br /&gt;For the explanation and example of each, you can go through the article (part &lt;a href="http://www.javabeat.net/javabeat/java6/articles/2007/06/java-6-0-new-features-part-1/"&gt;1&lt;/a&gt; and &lt;a href="http://www.javabeat.net/javabeat/java6/articles/2007/06/java-6-0-new-features-part-2/"&gt;2&lt;/a&gt;) written by Shunmuga Raja. For comprehensive features and enhancements in Java 6.0, visit Sun official &lt;a href="http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/beta2.html"&gt;page&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-8731107309654093213?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/8731107309654093213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=8731107309654093213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/8731107309654093213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/8731107309654093213'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/07/new-features-and-enhancements-in-java.html' title='New features and enhancements in Java 5.0 &amp; 6.0'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-1511147133957111958</id><published>2007-07-22T19:56:00.002-07:00</published><updated>2007-07-22T19:57:25.170-07:00</updated><title type='text'>Does JavaFX spell the end Of AJAX?</title><content type='html'>You know all that AJAX code you've been writing and tearing your hair out over as you attempt to get the JavaScript working in both Internet Explorer and Firefox? Yeah, that AJAX code. It's all going to be useless real soon. Find out more from its original post &lt;a href="http://www.internetnews.com/dev-news/article.php/3676226"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Note, this is not my view. Every language always has its strength and weakness and it is just a matter of application in the right place and at right time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-1511147133957111958?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/1511147133957111958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=1511147133957111958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1511147133957111958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1511147133957111958'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/07/does-javafx-spell-end-of-ajax.html' title='Does JavaFX spell the end Of AJAX?'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-5700599549971388133</id><published>2007-07-22T19:56:00.001-07:00</published><updated>2007-07-22T19:56:19.915-07:00</updated><title type='text'>JavaFX Script</title><content type='html'>Furthering the promise of “write once, run anywhere”, Sun release a new product family, called Java FX, which is enabling developers to build compelling, rich user interfaces that leverage Java for a wide spectrum of devices. JavaFX initially is comprised of JavaFX Script and JavaFX Mobile &lt;br /&gt;&lt;br /&gt;&lt;br&gt; &lt;br /&gt;&lt;img src="http://www.sun.com/images/ig/ig_javafx_architecture.jpg"&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;br /&gt;JavaFX Script will run on any JavaSE technology-based platform including all of the upcoming JavaFX software systems for mobile handsets, TVs and other embedded applications from automobiles to game systems. &lt;br /&gt;&lt;br /&gt;JavaFX Script is unique in providing close integration with Java components that run on the server or the client, resulting in a richer end-to-end experience. JavaFX Script brings together a simple and intuitive language design, requiring less coding and providing fast development cycles with a ubiquitous runtime platform and an open source program for innovation by developers worldwide. &lt;br /&gt;&lt;br /&gt;Sun plans to make JavaFX Script available under an open source license and release the early alpha version of JavaFX Script at openjfx.org on Java.net.&lt;br /&gt;&lt;br /&gt;You can check out the &lt;a href="https://openjfx.dev.java.net/#demos"&gt;demo&lt;/a&gt; and &lt;a href="https://openjfx.dev.java.net/#tutorials"&gt;tutorial&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;(Notes: you may have problem when viewing the demo within oracle network, change it to wifi/public network).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-5700599549971388133?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/5700599549971388133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=5700599549971388133' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/5700599549971388133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/5700599549971388133'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/07/javafx-script.html' title='JavaFX Script'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-7368270541063162137</id><published>2007-07-22T19:55:00.001-07:00</published><updated>2007-07-22T19:55:48.476-07:00</updated><title type='text'>Advanced Queues and Streams in Plain English &amp; How-To</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt; &lt;p&gt;Find the original post &lt;a href="http://blogs.ittoolbox.com/oracle/guide/archives/advanced-queues-and-streams-a-definition-in-plain-english-3677"&gt;here&lt;/a&gt;.  &lt;p&gt;As of Oracle release 10.1, AQ is integrated into Oracle Streams, and is called "Oracle Streams AQ". &lt;p&gt;What is AQ? Advanced Queues, or AQ, is Oracle's messaging solution. AQ provides a persistent (or non-persistent for specialty apps) queue mechanism that can guarantee delivery of a message. It has interfaces to PL/SQL, OCI and Java. It's Oracle's answer to IBM's MQ Series.  &lt;p&gt;A message can be an XML document, a set of fields, an array of data and just about anything else you can think of.  &lt;p&gt;AQ works on a publish/subscribe model. That means that someone (a publisher puts a message on the queue and someone else (a subscriber) takes the message off. A queue can have multiple subscribers. Technically it can have multiple publishers but I haven't worked with that configuration and I'm not sure what the usefulness of that is. I think I would prefer multiple queues, one for each publisher.  &lt;p&gt;What's AQ good for? What does it do?  &lt;p&gt;One example would be replication. In Oracle Advanced Replication, AQ is the mechanism that copies data from one instance to another. The master site (publisher) will receive an update, it puts the update and a before and after image of the data in a queue. The slave sites (Subscribers) pull the data off the queue and apply them to the local database. The before and after images are used by replication to find the correct record and see if there are any update conflicts.  &lt;p&gt;Besides Oracle replication, or your own home-grown replication, there are a lot of other uses for AQ.  &lt;p&gt;You can drop a message on a queue for local usage. Say if you have a transactional system and are getting backed up but don't want to turn away incoming transactions. You can implement a queue. The receiving procedure can drop the transactions on the queue and a local de-queue procedure in the background can pull them off when it has time.  &lt;p&gt;You can use AQ to interface with Java. AQ supports the Java Messaging Specification (JMS) API. Using Java, XML and AQ you can easily implement a SOA (service oriented architecture) web service.  &lt;p&gt;What is Streams? Here's a brief description of streams and what you can use it for.  &lt;p&gt;AQ and Replication both entail data movement. Streams is the current technology enabling that data movement. Streams is kind of like AQ, but with rules applied.  &lt;p&gt;Let's think about AQ. AQ is basically a table and some table maintenance code wrapped around streams. When you enqueue a record, you're using AQ. Streams takes over and moves it to the next database, enqueueing it locally. AQ then takes over again, dequeuing it for consumption.  &lt;p&gt;Streams has some nice features. I think the most important is the rule based transformations. A transformation allows you to modify the payload in flight. A receiving application doesn't need to be aware of the sending applications formats, it just receives what it needs.  &lt;p&gt;Think of the way mainframes send data down to a data warehouse. The mainframe doesn't send entire vsam files down to let the warehouse figure out what pieces it needs. The warehouse group defines the fields it needs, a mainframe programmer writes a Cobol (maybe) program and sends a new, specific file down.  &lt;p&gt;With streams, the receiving application can define what it needs and the sending application can define rules to match. The nice thing with streams is that there can be multiple consumers receiving the same payload but have different rules applied for them. The sender sends one payload and it's transformed many times in different ways for multiple consumers. Rules are also easily defined as opposed to writing a program, scheduling a batch processing window, writing a load routine, etc. With streams, identify the source, define the rules and write a consumer dequeue.  &lt;p&gt;Speaking of data warehouses, another use of streams is in change data capture (CDC). You identify a source object, say your transaction detail table in the oltp system. You can create a rule that says capture all transactions that are approved and billable. Define the billing warehouse as a consumer for that stream. That payload can be applied to a staging table for loading into a warehouse table. The apply to the staging table can be done without coding. With almost 0 lines of code you can move the data you want, i.e. billable items, from your oltp system directly to your warehouse.  &lt;p&gt;Streams is also non-stressful to the source database. Streams reads the redo-logs and gathers information from that as opposed to running queries or DML against the source database's tables. &lt;p&gt;Ok,&amp;nbsp;get to know what is AQ and&amp;nbsp;stream and wanna setup locally, check it out from YeeThian' &lt;a href="http://shiji.oraclecorp.com/weblog/project/DigitalMediaProjectBlog/2007/03/aq_setup_and_callback_design.html"&gt;post&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-7368270541063162137?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/7368270541063162137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=7368270541063162137' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7368270541063162137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7368270541063162137'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/07/advanced-queues-and-streams-in-plain.html' title='Advanced Queues and Streams in Plain English &amp;amp; How-To'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-826657634303516230</id><published>2007-07-22T19:54:00.002-07:00</published><updated>2007-07-22T19:55:12.246-07:00</updated><title type='text'>Web 2.0? Web 2.86 ... 3.1... and beyond</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;The explosion of blogs, social networks and user-generated media commonly referred to as Web 2.0.  &lt;p&gt;So what’s next? Web 3.0, or the notion of the semantic web, where the Internet evolves from a catalog of information to a smart network combining artificial intelligence, profiling and search capabilities.  &lt;p&gt;O'Reilly editor Nat Torkington had been in Singapore last week, who were here giving the presentations on Web 2.0 and helping the IDA with their plans to foster startups in the country. As many people asked him about the future of Web 2.0--is it a bubble, when will it be replaced by something new, a recent blog post (The Future of Web 2.0) from him has answered that question in great detail.  &lt;p&gt;In his post,&amp;nbsp;future of web will go through the&amp;nbsp;intersting changes&amp;nbsp;till 2022 and experience the changes from web 2.0, web 286 (sounds like Pentium 286),web 3.0 &amp;amp; 3.1, &amp;nbsp;Web 95, 98, NT, XP and&amp;nbsp;Vista (Sounds like the revolution of the Microsoft Windows).  &lt;p&gt; &lt;p&gt;"&lt;a href="http://radar.oreilly.com/archives/2007/03/the_future_of_w_1.html"&gt;The Future of Web 2.0&lt;/a&gt;" is an amusing blog post, whether or not you agree with his predictions about Firefox X, IE 13, WebVista, and other fancy terms, it is good to have some idea.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-826657634303516230?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/826657634303516230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=826657634303516230' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/826657634303516230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/826657634303516230'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/07/web-20-web-286-31-and-beyond.html' title='Web 2.0? Web 2.86 ... 3.1... and beyond'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-2610224480754881311</id><published>2007-07-22T19:54:00.001-07:00</published><updated>2007-07-22T19:54:37.822-07:00</updated><title type='text'>Enable the exception and stack trace in the OAS 10g 10.1.3</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;In previous releases of OC4J, the default behavior when an error occurred in a Web application was to display both the exception and the stack trace in the HTML error page returned to the client.  &lt;p&gt;This default behavior has changed in the oracle application server 10g 10.1.3 and these details are no longer displayed by default; instead, a generic error message is displayed in the HTML error page. The exception and stack trace details are sent to the log file of the relevant application.  &lt;p&gt;If you have tests that rely on the display of an exception or stack trace, you can cause the stack trace to be displayed by running the application in developer mode. To run an application in development mode, set the development attribute of the &amp;lt;orion-web-app&amp;gt; element to "true" in the orion-web.xml file. Here is an example:&lt;br&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br&gt;&amp;lt;orion-web-app ... jsp-cache-directory="./persistence"&lt;br&gt;jsp-cache-tlds="standard"&lt;br&gt;temporary-directory="./temp"&lt;br&gt;context-root="/DevelopmentThrowException"&lt;br&gt;schema-major-version="10"&lt;br&gt;schema-minor-version="0"&lt;br&gt;development="true"&amp;gt;&lt;br&gt;...&lt;br&gt;&amp;lt;web-app&amp;gt;&lt;br&gt;&amp;lt;/web-app&amp;gt;&lt;br&gt;&amp;lt;/orion-web-app&amp;gt; &lt;/p&gt; &lt;p&gt;To enable exception and stack track in oracle application server, you need to edit the orion-web.xml in the directory mentioned below once the web application is deployed into OAS 10g 10.1.3.  &lt;p&gt;&lt;strong&gt;1.0 Find the orion-web.xml file from directory of &amp;lt;oracle_app_server_home&amp;gt;/j2ee/application-deployments/&amp;lt;instance_name&amp;gt;/&amp;lt;web_application__ear_file_name&amp;gt;/&amp;lt;web_application_war_file_name&amp;gt;/orion-web.xml&lt;/strong&gt;  &lt;p&gt;&lt;strong&gt;2.0 Modify the entry of orion-web-app like: &lt;/strong&gt; &lt;p&gt;&lt;strong&gt;&amp;lt;orion-web-app&lt;br&gt;...&lt;br&gt;development="true"&lt;br&gt;&amp;gt;&lt;br&gt;...&lt;br&gt;&amp;lt;/orion-web-app&amp;gt; &lt;/strong&gt; &lt;p&gt;&lt;strong&gt;Set the development attribute of the &amp;lt;orion-web-app&amp;gt; element to "true".&lt;/strong&gt;  &lt;p&gt;&lt;strong&gt;3.0 Restart the app server and remember that whenever you undeploy and redeploy the same web application, you need to redo this.&lt;/strong&gt;  &lt;p&gt;Here, i would like to thanks thiam hwa, who has pointed me to the right place&amp;nbsp;of the solution, for his help. &lt;p&gt;Additional&amp;nbsp;resources: &lt;p&gt;&lt;a href="http://www.oracle.com/technology/tech/java/oc4j/1013/whitepapers/OC4J-SERVLET-FAQ-10131.pdf"&gt;Oracle Containers for J2EE – Frequently Asked Questions&lt;/a&gt; &lt;p&gt;&lt;a href="http://download-east.oracle.com/docs/cd/B32110_01/relnotes.1013/b32200/oc4j.htm#BGEFHGDJ"&gt;Exception and Stack Trace No Longer Displayed in HTML Error Page&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-2610224480754881311?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/2610224480754881311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=2610224480754881311' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/2610224480754881311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/2610224480754881311'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/07/enable-exception-and-stack-trace-in-oas.html' title='Enable the exception and stack trace in the OAS 10g 10.1.3'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-1600346499780662459</id><published>2007-07-22T19:53:00.002-07:00</published><updated>2007-07-22T19:54:03.070-07:00</updated><title type='text'>Desklets for Java</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;A desklet is a desktop widget written in Java, according to Joshua Marinacci who, along with Robert Cooper, released the first preview of AB5k, their Swing-based desklet toolkit.  &lt;p&gt;Desktop widgets have been popular on OS X for a while, and are becoming familiar fixtures of desktops running Windows Vista. Most desktop widgets to date have been written for a native platform. Widgets written in Java, or "desklets," by contrast, can run on any platform for which a Java 6 runtime is available. The term "desklet" was coined by Joshua Marinacci and Robert Cooper, who recently released a preview of their first desklet toolkit, AB5k.  &lt;p&gt;&lt;a href="http://www.ab5k.org/"&gt;AB5k&lt;/a&gt; is a container for running desklets, word for widgets. Desklets are little programs that run inside the container and do one thing very well. Some common desklets include clocks, calendars, news reports, weather, searchers (like Wikipedia) and useless but fun little playthings. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-1600346499780662459?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/1600346499780662459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=1600346499780662459' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1600346499780662459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1600346499780662459'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/07/desklets-for-java.html' title='Desklets for Java'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-780629308812189826</id><published>2007-07-22T19:53:00.001-07:00</published><updated>2007-10-25T00:29:12.483-07:00</updated><title type='text'>What is ebXML?</title><content type='html'>Electronic Business using eXtensible Markup Language, the 'eb' in ebXML stands for electronic business," and you can pronounce the phrase as "electronic business XML," "e-biz XML," "e-business XML," or simply "ee-bee-ex-em-el". ebXML is a family of XML based standards sponsored by OASIS and UN/CEFACT whose mission is to provide an open, XML-based infrastructure that enables the global use of electronic business information in an interoperable, secure and consistent manner by all trading partners.  &lt;p&gt;ebXML was published in 1999 as an initiative of the United Nations Centre for Trade Facilitation and Electronic Business (UN/CEFACT) and the Organization for the Advancement of Structured Information Standards (OASIS). The original project envisioned five layers of data specification, including XML standards for:  &lt;/p&gt;&lt;p&gt;-Business processes,&lt;br /&gt;-Collaboration protocol agreements,&lt;br /&gt;-Core data components,&lt;br /&gt;-Messaging, &amp;amp;&lt;br /&gt;-Registries and repositories&lt;br /&gt;&lt;/p&gt;&lt;b&gt;&lt;a name="figure1"&gt;&lt;b&gt;High-level overview of ebXML interaction between two companies &lt;span style="color: rgb(102, 255, 153);"&gt;(source: www.ibm.com, author:David Mertz&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;/b&gt;&lt;a style="color: rgb(102, 255, 153);" name="figure1"&gt;&lt;/a&gt;&lt;b&gt;&lt;a name="figure1"&gt;&lt;b&gt;&lt;span style="color: rgb(102, 255, 153);"&gt;)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;/b&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_ighNp6Wi0Zw/RyBFf79n_bI/AAAAAAAAACQ/mnCvKyRz8tw/s1600-h/ebXML1.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_ighNp6Wi0Zw/RyBFf79n_bI/AAAAAAAAACQ/mnCvKyRz8tw/s400/ebXML1.gif" alt="" id="BLOGGER_PHOTO_ID_5125172790922050994" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ebXML is not itself a standard, rather, it is a container for several key specification standards administered by UN/CEFACT and OASIS. &lt;/p&gt; &lt;p&gt;Key ebXML standards include ebXML Messaging Services, ebXML Registry, ebXML Business Process Specification Schema and ebXML Collaboration Protocol Profile and Agreement (CPP/CPA). &lt;/p&gt; &lt;p&gt;The International Organization for Standardization (ISO) has approved the following five ebXML specifications as the ISO 15000 standard, under the general title, Electronic business eXtensible markup language: &lt;/p&gt; &lt;p&gt;ISO 15000-1: ebXML Collaborative Partner Profile Agreement&lt;br /&gt;ISO 15000-2: ebXML Messaging Service Specification&lt;br /&gt;ISO 15000-3: ebXML Registry Information Model&lt;br /&gt;ISO 15000-4: ebXML Registry Services Specification&lt;br /&gt;ISO 15000-5: ebXML Core Components Technical Specification, Version 2.01 &lt;/p&gt; &lt;p&gt;OASIS technical committees and UN/CEFACT retain the responsibility for maintaining and advancing the above specifications. &lt;/p&gt; &lt;p&gt;The &lt;a href="http://www.freebxml.org/"&gt;freebXML.org&lt;/a&gt; initiative was established to promote development and adoption of ebXML-based open-source software.&lt;/p&gt; &lt;p&gt; &lt;/p&gt;  &lt;p&gt;I highly suggest you to go through the article called "&lt;a href="http://www.ibm.com/developerworks/xml/library/x-ebxml/"&gt;Understanding ebXML, Untangling the business Web of the future&lt;/a&gt;", which can give you a very good idea of how each profile and specification related to each other.&lt;/p&gt;&lt;p&gt;Additional reading:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ebXMl Tutorial&lt;br /&gt;&lt;a href="http://www.javapassion.com/webservices/ebXML4.pdf"&gt;http://www.javapassion.com/webservices/ebXML4.pdf&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-780629308812189826?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/780629308812189826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=780629308812189826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/780629308812189826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/780629308812189826'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/07/what-is-ebxml.html' title='What is ebXML?'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_ighNp6Wi0Zw/RyBFf79n_bI/AAAAAAAAACQ/mnCvKyRz8tw/s72-c/ebXML1.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-5027840980122878200</id><published>2007-07-22T19:50:00.000-07:00</published><updated>2007-07-22T19:52:50.687-07:00</updated><title type='text'>Integrating Java Content Repository and Spring</title><content type='html'>&lt;p&gt;&lt;a href="http://www.infoq.com/articles/spring-modules-jcr"&gt;Integrating Java Content Repository and Spring&lt;/a&gt; is a detailed infoQ article by &lt;a href="http://www.interface21.com/people/cleau.html"&gt;Costin Leau&lt;/a&gt; which first talks about the Java Content Repository (JCR) spec in general, and then shows how the JCR support in Spring Modules provides a number of benefits when working against any repository supporting the JCR standard.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-5027840980122878200?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/5027840980122878200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=5027840980122878200' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/5027840980122878200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/5027840980122878200'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/07/integrating-java-content-repository-and.html' title='Integrating Java Content Repository and Spring'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-4000565039344314799</id><published>2007-05-24T20:53:00.002-07:00</published><updated>2007-05-24T20:56:55.945-07:00</updated><title type='text'>How to select Code Analysis Tools</title><content type='html'>Code checking tools are software products that check compile-time whether a software program adheres to a certain set of rules of a coding standard. Without such code checkers, the enforcement of a coding standard in an organization is likely to fail. There are two main causes for this: (1) the number of rules in a coding standard is usually so large that nobody can remind them all (except the author) and (2) some context-sensitive rules that demand inspection of several files are very hard to check by human beings.&lt;br /&gt;&lt;br /&gt;Although code checkers can reduce formal code review time considerably, it certainly does not mean that code reviews are not needed anymore. Some coding rules cannot be checked at all (e.g. "Comments should be in English") or only partly at compile-time (e.g. "Use delete, whenever you use new"). On average about 65% of a coding standard can be covered with code checking tools. &lt;br /&gt;&lt;br /&gt;There are several characteristics that should be assessed during the selection process of a code checker. There are 6 issues that are most important. Obvious requirements such as whether it is available for the used platform are not taken into account.&lt;br /&gt;&lt;br /&gt;Availability to define own rules. Experience has shown that only about 20% of a propietary coding standard is available as built-in rule in a code checker. As a consequence, there should be a possibility to define own rules. This can be via an API (complex in use but powerful) or a graphical user interface (easy to use but limited). &lt;br /&gt;&lt;br /&gt;Integration in programming IDE. Most end users of code checkers are software engineers. Therefore a code checker should fit smoothly in the used programming environment. Preferrably via a toolbar with an easy way of running the tool (one button push). &lt;br /&gt;&lt;br /&gt;Presence of command-line version. In order to be able to integrate the code checker in the software development process and/or in the programming IDE (if no plug-in is available) it should be command-line oriented. Command-line versions also allow for nightly batch runs of the code checker to collect quality data. &lt;br /&gt;&lt;br /&gt;High performance. Code checkers are slower than compilers by nature because they perform a more in-depth semantical analysis of the source code. However, performance is a key issue for end user acceptance of the tooling. Response times of more than 1 minute per file are perceived as not workable. &lt;br /&gt;&lt;br /&gt;Low cost of ownership. Cost of ownership means purchase price and maintenance costs. Since code checkers are not used continuously by end users, floating licenses appear to be more cost effective in most cases. About 1 floating end user license is needed per 10 developers. &lt;br /&gt;&lt;br /&gt;Available support. Decent product support is an essential feature of a code checker. Good support does not only mean prompt and adequate response to user questions and problems, but also the frequency of new product release. "We will solve this in the next release" is not interesting if the average product release cycle is 1 year. &lt;br /&gt;&lt;br /&gt;This How-to is an excerpt from a &lt;a href="http://www.tiobe.com/index.htm?standards"&gt;article&lt;/a&gt; called "Industrial methodology to introduce coding standards" and i feel the considerations and points are logical and good to follow for the code analyzers evaluation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-4000565039344314799?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/4000565039344314799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=4000565039344314799' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/4000565039344314799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/4000565039344314799'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/05/how-to-select-code-analysis-tools.html' title='How to select Code Analysis Tools'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-7282489715249790978</id><published>2007-05-24T20:53:00.001-07:00</published><updated>2007-05-24T20:53:24.377-07:00</updated><title type='text'>Evaluation of three open source code analysers</title><content type='html'>There are couple of code analysis tools avaiable out there and three of them (FindBugs, PMD and QJPro) i have evaluated and would like to elaborate some more. I will give a quick demo for each along the way and it will give you a good visualization of how each tool looks like in the real life.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;FindBugs&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;FindBugs looks for bugs in java the programs. It can detect a variety of common coding mistakes, including thread synchronization problems, misuse of API methods and etc.&lt;br /&gt;&lt;br /&gt;FindBugs is a static analysis tool that examines java classes or JAR files and looks for potential problems by matching class bytecodes against a list of bug patterns. With static analysis tools, we can analyze software without actually running the program. FindBugs requires JRE (or JDK) 1.4.0 or later to run. However, it can analyze programs compiled for any version of Java. FindBugs supports a plugin architecture allowing anyone to add new bug detectors, which means we can write custom detectors to find application-specific problems and it has been used for Eclipse and Java JDK project for bugs finding.&lt;br /&gt;&lt;br /&gt;We can run FindBugs in multiple ways -- from a GUI, from a command line, using Ant, as an Eclipse plug-in, and using Maven. However, it makes more sense to run it as an integrated part of nightly build infrastructure and generate a bug report, which could be easily done by using tools like CruiseControl, Anthill, or even simple cron to fire off nightly builds and giving the results as an email. FindBugs certainly won't find all the bugs, but they'll help find some of them. FindBugs can act as a safety net and detects identified bug patterns when developers check in their codes into the cvs. You can find a demo for FindBugs &lt;a href="http://findbugs.cs.umd.edu/talks/findbugs.mov"&gt;here&lt;/a&gt; and a viewlet &lt;a href="http://shiji.oraclecorp.com/weblog/technology/DevelopmentStandardTechBlog/findbugs_jdeveloper_extension_viewlet_swf.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;PMD&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;PMD is not like FindBugs and it analyzes the java source code instead of class files, scans and looks for potential problems like:&lt;br /&gt;&lt;br /&gt;    * Possible bugs - empty try/catch/finally/switch statements&lt;br /&gt;    * Dead code - unused local variables, parameters and private methods&lt;br /&gt;    * Suboptimal code - wasteful String/StringBuffer usage&lt;br /&gt;    * Overcomplicated expressions - unnecessary if statements, for loops that could be while loops&lt;br /&gt;    * Duplicate code - copied/pasted code means copied/pasted bugs&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PMD has over 175 “rules”, which are undesirable patterns of code, right out of the box. These rules are grouped into “rulesets,” such as Basic, Unused Code Design, Optimization, Strict Exception, String and StringBuffer, Naming, JUnit and Java Logging.&lt;br /&gt;&lt;br /&gt;Not all of them will be appropriate for our project or organization. Fortunately, PMD is configurable and we can configure which rules we want enforced. To do this, we can make our own ruleset file, which states which of the rules we want executed during analysis.      &lt;br /&gt;&lt;br /&gt;PMD is integrated with Eclipse, JBuilder, IntelliJ IDEA, Maven, Ant, and JDeveoper release 10.1.2 and 10.1.3. &lt;br /&gt;&lt;br /&gt;It can also be run on demand from the command line, which allows it to be integrated into nightly Ant/Maven builds and publish the results to a shared location such as an intranet or file server.&lt;br /&gt;&lt;br /&gt;There are two ways we can install the PMD plugin for JDeveloper release 10.1.3. One way is to install the extension by using JDeveloper's built in "update center" functionality. Fire up JDeveloper, click "Help", click "Check for Updates", then click "Add" to add a new update center and enter: &lt;br /&gt;&lt;br /&gt;    Name: PMD Update Center &lt;br /&gt;    Location: http://pmd.sf.net/center.xml &lt;br /&gt;&lt;br /&gt;Or download the binary release &lt;a href="http://shiji.oraclecorp.com/weblog/technology/DevelopmentStandardTechBlog/pmd-jdeveloper1013-bin-1.8.zip"&gt;here &lt;/a&gt;and unzip it into your JDEV_HOME\jdev\extensions.&lt;br /&gt;&lt;br /&gt;To use the PMD, open the Tools-&amp;Preferences menu, click on the PMD option, and select a couple of rules to try. To run it, right click on either a Java source file or a .jpr file (i.e., a project file) and select PMD. Any rule violations should show up in a LogWindow at the bottom of the screen. You can find the viewlet for the PMD &lt;a href="http://shiji.oraclecorp.com/weblog/technology/DevelopmentStandardTechBlog/pmd_jdeveloper_extension_viewlet_swf.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For FindBugs and PMD, these two tools focus on different aspects of software quality. Tools like PMD are extremely valuable on enforcing consistent coding style guidelines, and making code easier to understand by developers. Tools like FindBugs help uncover errors, while largely ignoring style issues. Therefore, PMD and FindBugs complement each other, and neither is a good substitute for the other. &lt;br /&gt;&lt;br /&gt;There are some comments about FindBugs and PMD, which i found out from the www.theserverside.com and give a good explanation of both as well.&lt;br /&gt;&lt;br /&gt;"FindBugs is a very good partner with PMD because it finds issues that are "deeper" than PMD's analysis. Its explanations of the bugs it finds are excellent. The most valuable bugs it picks up for my team are missing stream closures and inconsistent synchronization behavior. We removed the EI and EI2 rules, which spend a lot of time complaining about methods that return internal arrays, which in practice is not all that evil IMHO."&lt;br /&gt;&lt;br /&gt;"PMD is definitely the most "complete" of all the tools mentioned here. Its customizability via XSL rules or code is great, the core rulesets are broad in scope and well thought-out, it works well, and has a good Eclipse plugin. Many of the rules are fairly shallow, insofar as they are more stylistic than genuine bug-analysis rules; you also will definitely want to pick and choose which rules to use. We found it pretty easy to select a ruleset between PMD and FindBugs that we all agreed in theory having zero violations was an attainable goal. We're currently just under one failure per 100 lines of code, which is the best of any commercial project I've been on."&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;QJPro&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;QJPro is very much similar to PMD and the reason i want to mention here is because QJPro prodvide a Plugin for JDeveloper 9.0.x which PMD did not have. If developers who are using a lower version of JDeveloper like release 9.0.x and want to have a plugin like PMD, maybe QJPro can be considered. You can find the viewlet for the QJPro &lt;a href="http://shiji.oraclecorp.com/weblog/technology/DevelopmentStandardTechBlog/qjpro_jdeveloper_extension_viewlet_swf.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-7282489715249790978?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/7282489715249790978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=7282489715249790978' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7282489715249790978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7282489715249790978'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/05/evaluation-of-three-open-source-code.html' title='Evaluation of three open source code analysers'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-4394564739495020977</id><published>2007-05-24T20:52:00.001-07:00</published><updated>2007-08-02T23:57:24.304-07:00</updated><title type='text'>J2EE Application Performance Tuning Approach</title><content type='html'>&lt;p&gt;1.0 Set a goal: such as the response time for a given screen transaction per user. or transaction throughput, which is the number of transactions in a given time period, usually one second. For example, you could have a performance measurement that could be no more than three seconds for each screen form or a transaction throughput of one hundred transactions in one second. You should be able to find out this kind of information from project service-level or quality of service (QoS) requirements. &lt;/p&gt; &lt;p&gt;2.0 Identify the bottlenecks: For example, if the CPU usage on an application server is high, you will want to focus on tuning the application server first. There are some simple ways to identify the problem areas, check out my another &lt;a href="http://haitaoblog.blogspot.com/2007/05/j2ee-application-performance-tuning-and.html"&gt;post&lt;/a&gt; for some quick techniques. &lt;/p&gt; &lt;p&gt;3.0 Follow a methodical path: It is better spent tuning a method that takes 10 seconds but gets called 100 times than tuning a method that takes one minute but gets called only once. Make one change and stress-test it, if the change results in positive impact, only then will you make it permanent. &lt;/p&gt; &lt;p&gt;Two kinds of tools that are helpful in the tunning process, namely stress tools that generating load to your application and monitoring tools that collecting data of various performance indicators. For a comprehensive list of stress and monitoring tools, check out &lt;a href="http://www.softwareqatest.com/qatweb1.html"&gt;Software QA/Test Resource Center&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;This is a good &lt;a href="http://www.javaworld.com/javaworld/jw-05-2004/jw-0517-optimization.html#resources"&gt;article&lt;/a&gt; about tunning strategy for the apache, tomcat &amp;amp; application itself, check it out. If none of the solution resolve the bottlenecks, you can consider scaling up the server (database &amp;amp; application). If horizontal scaling is not possible, consider the option of vertical scaling. &lt;/p&gt; &lt;p&gt;By the way, there is one tool I would like to mention here is the JMeter - a free tool from Apache community. It Can be used to simulate a heavy load on a server, network or object to test its strength or to analyze overall performance under different load types. It can also make a graphical analysis of performance or test server/script/object behavior under heavy concurrent load. To&amp;nbsp;get to know it, check out this &lt;a href="http://shiji.oraclecorp.com/weblog/team/SingaporeOadcTeamBlog/2006/09/load_testing_applications_usin.html"&gt;demo&lt;/a&gt; from my colleague - Srini.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-4394564739495020977?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/4394564739495020977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=4394564739495020977' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/4394564739495020977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/4394564739495020977'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/05/j2ee-application-performance-tuning_24.html' title='J2EE Application Performance Tuning Approach'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-81824968727398718</id><published>2007-05-24T20:48:00.000-07:00</published><updated>2007-05-24T20:49:22.860-07:00</updated><title type='text'>J2EE Application Performance Tuning and Optimization</title><content type='html'>When an application is deployed into the production environment, there are many factors contribute to the ultimate application performance &amp; throughput, not only from application iteself, but types of hardward, settings and configurations of os and servers( web, application &amp; database) and even the way of network setup also play a part.  &lt;br /&gt;&lt;br /&gt;As there are many places may degrade the performace, approches and solutions will be different and various. Maintaining a list of articles and papers about these approches and soutions will be very helpful &amp; useful in our team and I would like to put some effort to maintain a such list of articles available in the internet regarding the application side(E.g programming practise, application server configurations, technology usage and etc). &lt;br /&gt;&lt;br /&gt;Performance tuning is as much as it is a science, team work will be more productive and enjoyable than one man show. If you are the people like me and would like to put some effort into this, let me know and maybe in future we can co-author a paper or a course ( English/Chinese) based on our experience and knowledge gained. :)&lt;br /&gt;&lt;br /&gt;In the meantime, i would like to share some of my own experience in the performance tuning and optimization. &lt;br /&gt;&lt;br /&gt;In the reality, when expecting application performance &amp; throughput is not met, no party in the project would like to admit the issues or problems are from them since people don't like changes and project deadline is around the corner. In the end, the deadline is extened and peoples from different team (application, infrastructure, database) have to sit together to look into the case.&lt;br /&gt;&lt;br /&gt;No matter which team are responsible for it, the most important thing is to find out where &amp; what the bottlenecks are degrading the performance. Bare in mind that there maybe more than one bottleneck exist and no point to complain other people. There are some verifications we can do to find out them one by one until the output meets the expectation.&lt;br /&gt;&lt;br /&gt;To verify whethere the network is the cause, we can try to ping or ftp an big file to the target machine to get to know the network speed. If the speed is very slow, it may be one of bottleneck degrading the application, we can inform the infrastrucre team to review their network routing strategy.&lt;br /&gt;&lt;br /&gt;To verfiy whethere servers are running or responding slowly, there are a few things we need to look out. We need to know the hardward type, os configuration and server installation version. Especially in the staging environment, one machine may be shared by multiple teams and applcaitons and people can cap the cpu &amp; memeory resource for certain process such as the database server, application server and even your deployed applicaton without knowing it. People can tell you that the machine running the application or servers is a very fast and even with dual processor, but it doesnot mean you are having full power of that machine.&lt;br /&gt;&lt;br /&gt;Other than the OS configurations, you also need to know the installation version of server (database, application) and whether they has been installed and setup with recommened parameters and models.&lt;br /&gt;&lt;br /&gt;For the application, usually the performace issues are from inefficient business logic, bad sql statement (E.g not using prepared statement &amp; execute batch and commit too frequently, etc.) and db connection handling (connection pooling, leaking, jdbc driver). Usually, a code review will be very helpful to spot those problems. For the sql statement, it is best to consult with DBA to tune the sql (such as truncating a table VS deleting all records). To spot whether there is a db connection leaking, run the "netstat" in the command line and verfiy if there are any outstanding db connection ports opening after db works are done. If the problem still can not be identified, you can use tools like application profiler to spot the bottleneck from certain method or function of the application and narrow down until you find the problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-81824968727398718?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/81824968727398718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=81824968727398718' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/81824968727398718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/81824968727398718'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/05/j2ee-application-performance-tuning-and.html' title='J2EE Application Performance Tuning and Optimization'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-5582967341439708271</id><published>2007-05-24T20:46:00.000-07:00</published><updated>2007-05-24T20:50:39.051-07:00</updated><title type='text'>What is ebXML?</title><content type='html'>&lt;p&gt;Electronic Business using eXtensible Markup Language, the 'eb' in ebXML stands for electronic business," and you can pronounce the phrase as "electronic business XML," "e-biz XML," "e-business XML," or simply "ee-bee-ex-em-el".&amp;nbsp;ebXML is a family of XML based standards sponsored by OASIS and UN/CEFACT whose mission is to provide an open, XML-based infrastructure that enables the global use of electronic business information in an interoperable, secure and consistent manner by all trading partners. &lt;/p&gt; &lt;p&gt;ebXML was published in 1999 as an initiative of the United Nations Centre for Trade Facilitation and Electronic Business (UN/CEFACT) and the Organization for the Advancement of Structured Information Standards (OASIS). The original project envisioned five layers of data specification, including XML standards for:  &lt;p&gt;-Business processes, &lt;br&gt;-Collaboration protocol agreements, &lt;br&gt;-Core data components, &lt;br&gt;-Messaging, &amp;amp; &lt;br&gt;-Registries and repositories &lt;br&gt;&lt;/p&gt; &lt;p&gt;ebXML is not itself a standard, rather, it is a container for several key specification standards administered by UN/CEFACT and OASIS. &lt;/p&gt; &lt;p&gt;Key ebXML standards include ebXML Messaging Services, ebXML Registry, ebXML Business Process Specification Schema and ebXML Collaboration Protocol Profile and Agreement (CPP/CPA). &lt;/p&gt; &lt;p&gt;The International Organization for Standardization (ISO) has approved the following five ebXML specifications as the ISO 15000 standard, under the general title, Electronic business eXtensible markup language: &lt;/p&gt; &lt;p&gt;ISO 15000-1: ebXML Collaborative Partner Profile Agreement &lt;br&gt;ISO 15000-2: ebXML Messaging Service Specification &lt;br&gt;ISO 15000-3: ebXML Registry Information Model &lt;br&gt;ISO 15000-4: ebXML Registry Services Specification &lt;br&gt;ISO 15000-5: ebXML Core Components Technical Specification, Version 2.01 &lt;/p&gt; &lt;p&gt;OASIS technical committees and UN/CEFACT retain the responsibility for maintaining and advancing the above specifications. &lt;/p&gt; &lt;p&gt;The &lt;a href="http://www.freebXml.org/"&gt;freebXML.org&lt;/a&gt; initiative was established to promote development and adoption of ebXML-based open-source software.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Additional resources:&lt;/p&gt; &lt;p&gt;Understanding ebXML, Untangling the business Web of the future. &lt;br&gt;&lt;a href="http://www-128.ibm.com/developerworks/xml/library/x-ebxml/"&gt;http://www-128.ibm.com/developerworks/xml/library/x-ebxml/&lt;/a&gt;&lt;br&gt;ebXMl Tutorial&lt;br&gt;&lt;a href="http://www.javapassion.com/webservices/ebXML4.pdf"&gt;http://www.javapassion.com/webservices/ebXML4.pdf&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-5582967341439708271?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/5582967341439708271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=5582967341439708271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/5582967341439708271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/5582967341439708271'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/05/what-is-ebxml_24.html' title='What is ebXML?'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-7530266498524706106</id><published>2007-05-24T20:07:00.000-07:00</published><updated>2007-05-24T20:15:00.141-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Rich Client'/><title type='text'>Java/XML rich-client technology</title><content type='html'>Rich client technology/platform like visual basic and java swing, developers are very much familiar and other technologies like ajax (Google Web Tookit &amp; ECHO2), Eclipse RCP and XUL (Mozila) are also well-known for years.&lt;br /&gt;&lt;br /&gt;Recently, I came across an &lt;a href="http://www.computerworld.com/developmenttopics/development/story/0,10801,93858,00.html?SKC="&gt;article&lt;/a&gt; talking about java/xml rich client technology and its online demonstration impressed me very much in its richness of client-side widgets and functionalities. It runs inside a browser, but pretty muck like a appliaction running on the desktop.&lt;br /&gt;&lt;br /&gt;Not like XUL, it does not need a XUL motor (such as Mozila) to provide a running platform, but using jvm plugin in the browser, which allows it to be used in different browsers with jvm plugin.&lt;br /&gt;&lt;br /&gt;Currently,two companies are providing this kind of technology, which are nexaweb and asperon. Their online demos are worth for a look.&lt;br /&gt;&lt;br /&gt;Enterprise Console Demo From Nexaweb&lt;br /&gt;http://demo.nexaweb.com/Nexaweb/start.jsp?app=sanmgr/index.xml&amp;nocache=true&lt;br /&gt;&lt;br /&gt;Order Management Demo From Nexaweb&lt;br /&gt;http://demo.nexaweb.com/Nexaweb/nopushstart.jsp?app=orderdemo/orderStatus.do&amp;nocache=true&lt;br /&gt;&lt;br /&gt;CRM Demo from Asperon&lt;br /&gt;http://www.asperon.net/crm/index.html&lt;br /&gt;&lt;br /&gt;There are some other interesting rich client demos which is using XUL or Ajax. Check it out.&lt;br /&gt;&lt;br /&gt;Ajax Demo from Echo2&lt;br /&gt;http://demo.nextapp.com/Demo/app&lt;br /&gt;&lt;br /&gt;XUL Demoonstration&lt;br /&gt;http://xul.sourceforge.net/challenge.html&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;Wei C. (2004). XML Rich Client Technology Strengthens Java. Last retrieved from &lt;br /&gt;http://www.computerworld.com/developmenttopics/development/story/0,10801,93858,00.html?SKC=&lt;br /&gt;&lt;br /&gt;Wei C. (2004). Java or .NET? XML Rich-Client AJAX Technology Brings Zero-Install Rich Client To Java&lt;br /&gt;Last retrieved from http://jdj.sys-con.com/read/111208_2.htm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-7530266498524706106?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/7530266498524706106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=7530266498524706106' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7530266498524706106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/7530266498524706106'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/05/javaxml-rich-client-technology.html' title='Java/XML rich-client technology'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-647873832741754631.post-1975574184335886493</id><published>2007-05-24T19:46:00.000-07:00</published><updated>2007-05-24T20:42:10.486-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Map'/><title type='text'>Countries with My Footprints</title><content type='html'>&lt;div style="width: 450px;"&gt;&lt;br /&gt;&lt;embed src="http://www.travbuddy.com//flash/countries_map.swf?id=8333" quality="high" bgcolor="#FFFFFF" name="countries_map" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" align="middle" height="300" width="450"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/647873832741754631-1975574184335886493?l=haitaoblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://haitaoblog.blogspot.com/feeds/1975574184335886493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=647873832741754631&amp;postID=1975574184335886493' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1975574184335886493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/647873832741754631/posts/default/1975574184335886493'/><link rel='alternate' type='text/html' href='http://haitaoblog.blogspot.com/2007/05/countries-with-my-footprints.html' title='Countries with My Footprints'/><author><name>HaiTao' Blog</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
