<?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-18303469</id><updated>2011-08-16T03:07:36.739-07:00</updated><category term='Random'/><category term='Network'/><category term='Tools of Trade'/><category term='cygwin'/><category term='Subversion'/><category term='Weblogic Portal'/><category term='AJAX'/><category term='Oracle Application Server'/><category term='Java'/><category term='BPEL'/><category term='Groovy'/><category term='Programming'/><category term='Requirements'/><category term='LDAP'/><category term='JDBC'/><category term='JDeveloper'/><category term='EJB'/><category term='Health Care'/><category term='Apache Tiles'/><category term='LINUX'/><category term='Database'/><category term='Inspirational Stories'/><category term='UCP'/><category term='Eclipse'/><category term='JSF'/><category term='Spring'/><category term='Weblogic Server'/><category term='Recruitment'/><category term='DOS'/><title type='text'>Sandeep Seshan's Log</title><subtitle type='html'>Dubito, ergo cogito, ergo sum.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>80</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-18303469.post-683971682715759217</id><published>2011-07-07T04:59:00.000-07:00</published><updated>2011-07-07T06:30:28.665-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DOS'/><title type='text'>DOS : Count number of lines in a file</title><content type='html'>You can use this neat command to count the number of lines in a file, using DOS :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;find /c /v "~`!@#$%^&amp;amp;*()_+" file.txt&lt;br /&gt;&lt;/blockquote&gt;It'll give an output like this :-&lt;br /&gt;&lt;br /&gt;---------- file.txt: 943526&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-683971682715759217?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/683971682715759217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=683971682715759217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/683971682715759217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/683971682715759217'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2011/07/dos-count-number-of-lines-in-file.html' title='DOS : Count number of lines in a file'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-4459232852313772638</id><published>2011-06-17T02:07:00.000-07:00</published><updated>2011-06-17T02:16:05.627-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Weblogic Server'/><category scheme='http://www.blogger.com/atom/ns#' term='cygwin'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>Cygwin Java and Classpath Problem</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;" The &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;" class="command"&gt;&lt;strong&gt;cygpath&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; program is a utility that converts Windows native filenames to Cygwin POSIX-style pathnames and vice versa. "&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;-- &lt;/span&gt;&lt;a style="font-weight: bold; font-style: italic;" href="http://www.cygwin.com/cygwin-ug-net/using-utils.html"&gt;Cygwin Utilities&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;If you are trying to run a Java Class using a Shell Script running off Cygwin, you are sure to see a &lt;span style="font-weight: bold;"&gt;ClassNotFoundException&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The problem is due to these  :-&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;java.exe is a Windows executable program&lt;/li&gt;&lt;li&gt;java.exe expects its paths &amp;amp; classpaths to be in the Windows Format - paths separated by semi-colon ( ; )&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Cygwin wants its paths in the LINUX Format - paths separated by a colon ( : )&lt;/li&gt;&lt;/ul&gt;Ok, we know the problem now and here's a quick fix solution if you are running Shell Scripts off Cygwin :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt; CLASSPATH=.:../lib/junit.jar:../lib/weblogic.jar:../lib/ojdbc6.jar&lt;br /&gt;&lt;br /&gt; # Convert paths to help cygwin see Classpaths&lt;br /&gt; CLASSPATH=`cygpath --path --windows "$CLASSPATH"`&lt;br /&gt;&lt;br /&gt; java -classpath "$CLASSPATH" com.test.PreLoadTester&lt;/blockquote&gt;&lt;br /&gt;Please be sure not to check this into a Production environment - cygpath is only available as part of the Cygwin Utilities.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-4459232852313772638?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/4459232852313772638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=4459232852313772638' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/4459232852313772638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/4459232852313772638'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2011/06/cygwin-java-and-classpath-problem.html' title='Cygwin Java and Classpath Problem'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-3463918524773495881</id><published>2011-06-13T02:08:00.000-07:00</published><updated>2011-06-13T02:17:04.960-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools of Trade'/><title type='text'>Three Key Tools</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;"We will encourage you to develop the three great virtues of a programmer: &lt;/span&gt;&lt;em style="font-weight: bold; font-style: italic;"&gt;laziness, impatience, and hubris&lt;/em&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;."&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;-- &lt;/span&gt;&lt;a style="font-weight: bold; font-style: italic;" href="http://c2.com/cgi/wiki?LarryWall"&gt;LarryWall&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;If you are a Developer ( to quote a phrase overused recently by Head Hunters - " &lt;span style="font-style: italic;"&gt;Hand On Developer&lt;/span&gt; " ),  &amp;amp; if you are using Windows for all your development activities, you'd better have these three tools in your kit.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://windirstat.info/"&gt;WinDirStat&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.filehippo.com/download_unlocker/9641/"&gt;Unlocker&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tailforwin32.sourceforge.net/"&gt;tail for windows&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;What do these Tools do ? Well, they solve some of the most nagging &amp;amp; frustrating problems that you always run into.&lt;br /&gt;&lt;br /&gt;Please take a look at &lt;a href="http://sundarrajanm.blogspot.com/search/label/Development%20tool"&gt;Sundar's Blog&lt;/a&gt; for more about these goodies. And, keep an eye on his Blog for more of these goodies.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-3463918524773495881?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/3463918524773495881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=3463918524773495881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/3463918524773495881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/3463918524773495881'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2011/06/three-key-tools.html' title='Three Key Tools'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-1642570017612498123</id><published>2011-06-13T02:00:00.000-07:00</published><updated>2011-06-13T02:06:29.989-07:00</updated><title type='text'>Back After a long Hiatus !</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;Time is very slow for those who wait Very fast for those who are scared very long for those who lament Very short for those who celebrate But for those who love time is eternal"&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; — William Shakespeare&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Ok, I am back to Blogging after a long Hiatus. During the space in time, I underwent a good lot of challenges - personal &amp;amp; professional - that demanded more than a fair share of my time.&lt;br /&gt;&lt;br /&gt;Anyways, back to Blogging - as they say:-&lt;br /&gt;&lt;br /&gt;" &lt;span style="font-weight: bold; font-style: italic;"&gt;You can either be the sun that provides the light, or the mirror that reflects it.&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;Its time to do my share as a humble mirror and reflect the light of knowledge - any streak of light that I stumble upon.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-1642570017612498123?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/1642570017612498123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=1642570017612498123' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1642570017612498123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1642570017612498123'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2011/06/back-after-long-hiatus.html' title='Back After a long Hiatus !'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-2917010554529821817</id><published>2010-03-28T22:40:00.000-07:00</published><updated>2010-03-28T22:52:25.449-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Weblogic Portal : 10.3.2 : Eclipse Subversion Integration : Plugin</title><content type='html'>&lt;b&gt;&lt;i&gt;" The Subversive project aims to provide Subversion (SVN) integration for Eclipse. You can work with Subversion repositories in almost exactly the same way you can now work with CVS repositories using the CVS plug-in bundled in the standard Eclipse distribution.  "&lt;/i&gt;&lt;/b&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;&lt;b&gt;&lt;i&gt;-&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;a href="http://www.eclipse.org/subversive/"&gt;Subversive - SVN Team Provider&lt;/a&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;If you are working in a team, then a Source Control Repository is mandatory. A Source Control Repository becomes an integral part of your Project Infrastructure, apart from the Software, Systems, etc. used to build your Solutions. &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;You can take a look at the Subversive Project, which provides a wonderful plugin to work conveniently with Subversion Source Control Repositories directly from your Eclipse IDE :-&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://www.eclipse.org/subversive/index.php"&gt;http://www.eclipse.org/subversive/index.php&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;You can find a wealth of literature on Subversion, Eclipse and the Subversive Eclipse Plugin. I have cobbled up a simple Installation Guide to help folks who are in a hurry ( like myself ) to see something working. You can download the Guide from this location :-&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://www.slideshare.net/SandeepSeshan/eclipse-25-subversion-plugin-installation"&gt;http://www.slideshare.net/SandeepSeshan/eclipse-25-subversion-plugin-installation&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;As always, please remember to "clean" the Eclipse Project before you upload the Artifacts. &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;If you need more insight into Eclipse Upgrades, Tips &amp;amp; Tricks, please do take a look at this article ( " Tips to Updating and Upgrading with Eclipse " ) from Scott Nelson :-&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://www.developer.com/lang/php/article.php/3796056/Tips-to-Updating-and-Upgrading-with-Eclipse.htm"&gt;http://www.developer.com/lang/php/article.php/3796056/Tips-to-Updating-and-Upgrading-with-Eclipse.htm&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&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/18303469-2917010554529821817?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/2917010554529821817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=2917010554529821817' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/2917010554529821817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/2917010554529821817'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2010/03/weblogic-portal-1032-eclipse-subversion.html' title='Weblogic Portal : 10.3.2 : Eclipse Subversion Integration : Plugin'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-7030388931576508161</id><published>2010-03-26T03:47:00.000-07:00</published><updated>2010-03-26T03:58:17.826-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Weblogic Portal'/><title type='text'>Weblogic Portal : 10.3.2 : Installation : SYSTABLES</title><content type='html'>&lt;b&gt;&lt;i&gt;" SELECT COUNT(*) FROM SYSTABLES; ORA-00942: table or view does not exist" &lt;/i&gt;&lt;/b&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;&lt;b&gt;&lt;i&gt;- Weblogic Server Domain Creation Wizard&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;You'll see this error when you are creating a Domain for Oracle Weblogic Portal 10.3.2.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;The Weblogic Server DataSource uses this query to check if the connection is valid to a Database ( including an Oracle Database ! ) :-&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;SELECT COUNT(*) FROM SYSTABLES;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;The error is so infuriating that at time, the Server forcefully shuts down quoting that the tables is not present. The Table is not required to be present in an Oracle Database.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Aw, well, you are in a tight deadline and you don't want to fuss over this :-&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Go ahead and create a dummy table SYSTABLES in your Database Schema :-&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;CREATE TABLE SYSTABLES ( DUMMY NUMBER );&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;The Domain Creation Wizard is happy, you are happy and you can move ahead to more interesting tasks. &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;If you have spare time ( if you really have ), go ahead and take a look under the $WEBLOGIC_DOMAIN_HOME/config/jdbc folder - you'll see the XML files for your Data Sources. You can go ahead and change the Testing Query used in the files and bounce your server.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-7030388931576508161?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/7030388931576508161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=7030388931576508161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/7030388931576508161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/7030388931576508161'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2010/03/weblogic-portal-1032-installation_26.html' title='Weblogic Portal : 10.3.2 : Installation : SYSTABLES'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-1921973686776829199</id><published>2010-03-25T22:01:00.000-07:00</published><updated>2010-03-25T22:46:31.073-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Weblogic Portal'/><title type='text'>Weblogic Portal : 10.3.2 : Installation : Eclipse</title><content type='html'>&lt;b&gt;&lt;i&gt;" This certified set of Eclipse plug-ins is designed to help develop, deploy and debug applications for Oracle WebLogic Server. It installs as a plug-in to your existing Eclipse, or will install Eclipse for you, and enhances Eclipse's capabilities for Java, Java EE, Spring, ORM and Web Services. "&lt;/i&gt;&lt;/b&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;&lt;b&gt;&lt;i&gt;- &lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;a href="http://www.oracle.com/technology/products/enterprise-pack-for-eclipse/index.html"&gt;Oracle Enterprise Pack for Eclipse &lt;/a&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;I discovered an anomaly during the installation of Oracle Weblogic Portal 10.3.2 and am Blogging about it. I installed the Oracle Weblogic Portal 10.3.2 and after installation, I discovered that the Eclipse IDE did not have anything that I could use to develop Weblogic Portal solutions !&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Eclipse 3.5.2 is now used as IDE for Weblogic Portal 10.3.2. Eclipse with OEPE (Oracle Enterprise Pack for Eclipse) replaces Workshop and post-installation, the Eclipse IDE should come with all the required Weblogic Portal plugins installed.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;You can start using the Eclipse IDE from :-&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Windows : [ INSTALL_HOME ] / oepe_11gR1PS1 / eclipse / eclipse.exe &lt;/div&gt;&lt;div style="text-align: left;"&gt;LINUX    : [ INSTALL_HOME ] / oepe_11gR1PS1 / eclipse / eclipse.sh&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;However, after the installation I was in for a shock - I opened the Eclipse IDE, only to notice that I couldn't create any Weblogic Portal artifacts. I didn't see any of these familiar options :-&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;ul&gt;&lt;li&gt;Portal EAR Project&lt;/li&gt;&lt;li&gt;Portal Web Project&lt;/li&gt;&lt;li&gt;Portal Perspective&lt;/li&gt;&lt;/ul&gt;After much Googling, I came across an interesting OTN posts which pointed to the same solution :-&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=1034882"&gt;http://forums.oracle.com/forums/thread.jspa?threadID=1034882&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;During the installation Process:-&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;ul&gt;&lt;li&gt;The "installation Type" Screen is displayed. &lt;/li&gt;&lt;li&gt;Select the "Custom" install type.&lt;/li&gt;&lt;li&gt;The "Choose Products and Components" Screen is displayed. &lt;/li&gt;&lt;li&gt;Under the WebLogic Portal section, select  the "Workshop Portal Extension" Box &lt;/li&gt;&lt;li&gt;Under the WebLogic Server section, select  the "Samples" Box  &lt;/li&gt;&lt;li&gt;Proceed with the installation.&lt;/li&gt;&lt;/ul&gt;After the installation, when you run the Eclipse IDE, you'll notice that you have a full-fledged IDE at your disposal, with all the Portal Bells &amp;amp; Whistles.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;I tried a lot to get this with the "Default Installation" type, but gave up after 4 iterations.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;I feel this is a non-intuitive way to get a full Eclipse IDE for Weblogic Portal Development. &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;I can only imagine the impact it can have on newbies to Weblogic Portal, when they discover that there's a disconnect between the popular Tutorials and the IDE in front of them.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Anyways, as usual, the folks who take their time of to help others on OTN threw light on this and saved countless hours of time.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&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/18303469-1921973686776829199?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/1921973686776829199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=1921973686776829199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1921973686776829199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1921973686776829199'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2010/03/weblogic-portal-1032-installation.html' title='Weblogic Portal : 10.3.2 : Installation : Eclipse'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-4550333535445319534</id><published>2009-12-22T04:35:00.000-08:00</published><updated>2009-12-22T04:55:06.854-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Weblogic Server'/><title type='text'>WebLogic Server : Flush the Application Cache</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;" &lt;/span&gt;&lt;span class="postbody"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;On our system, what I normally do is to stop the server with the cache that needs to be flushed, then delete the tmp and cache directories of the server " &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://www.coderanch.com/t/69301/BEA-Weblogic/Flushing-weblogic-cache"&gt;&lt;span class="postbody"&gt;- Java Ranch Forum Post&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Weblogic server maintains certain "caches" in tmp and cache folders. The caches can sometimes prove to be nuisance - especially, the tmp folder.&lt;br /&gt;&lt;br /&gt;You can usually find the tmp folder for your application under :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$DOMAIN_HOME/tmp/_WL_user/&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;myapplication&gt;&lt;/myapplication&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;myApplication&lt;/span&gt;/&lt;/blockquote&gt;I recently ran into this issue and it gave me a couple of sleepless nights.&lt;br /&gt;&lt;br /&gt;I had deployed my Application and started it. I then hit the URL in my browser and promptly received an error, which indicated that my cocktail of JAR files were sour and some libraries did not like the other ones.&lt;br /&gt;&lt;br /&gt;During the next iteration of development, decided to use newer versions of a particular library. I deleted all the old libraries, provided a "gold" set of libraries ( that were certified on the vendor's website ) and then re-deployed my application.&lt;br /&gt;&lt;br /&gt;However, I still noticed that same error. I was baffled as I was *&lt;span style="font-weight: bold;"&gt;certain&lt;/span&gt;* that I had removed all the old libraries.&lt;br /&gt;&lt;br /&gt;First, I decided to investigate which JAR file was contributing the class. I retorted to good ol' Java Reflection for this - I just put this neat little piece of code in my Servlet :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;my_fully_qualified_class&gt;.class.getProtectionDomain().getCodeSource().getLocation();&lt;/my_fully_qualified_class&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I printed this using a simple statement and ensured that the output gets imprinted in the Server's Domain Log.&lt;br /&gt;&lt;br /&gt;Alright, I now redeployed my application and when I invoked the Servlet, I saw this in my log file :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$DOMAIN_HOME/servers/&lt;myserver&gt;tmp/_WL_user/&lt;span style="color: rgb(255, 102, 102);"&gt;&lt;myapplication&gt;&lt;/myapplication&gt;&lt;/span&gt;&lt;/myserver&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;myapplication&gt;&lt;/myapplication&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;myapplication&gt;&lt;/myapplication&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;myApplication&lt;/span&gt;&lt;myserver&gt;/ub48zr/war/WEB-INF/lib/&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;myoldjar&gt;&lt;/myoldjar&gt;&lt;/span&gt;&lt;myoldjarfile style="color: rgb(255, 0, 0);"&gt;&lt;/myoldjarfile&gt;&lt;/myserver&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;myapplication&gt;&lt;/myapplication&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;myapplication&gt;&lt;/myapplication&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;myOldJARFile&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;/span&gt; &lt;myserver&gt;&lt;myoldjarfile style="color: rgb(255, 0, 0);"&gt;.jar&lt;/myoldjarfile&gt;&lt;/myserver&gt;&lt;/blockquote&gt;&lt;br /&gt;Bingo ! I promptly cleared the "cache" and redeployed the application. I re-invoked my Servlet and it works fine !!&lt;br /&gt;&lt;br /&gt;I have modified my build.xml to include this minor operation - to clear the contents of the _WL_user folder and then undeploy / redeploy.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="postbody"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-4550333535445319534?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/4550333535445319534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=4550333535445319534' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/4550333535445319534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/4550333535445319534'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2009/12/weblogic-server-flush-application-cache.html' title='WebLogic Server : Flush the Application Cache'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-6376534560428306998</id><published>2009-12-22T02:29:00.000-08:00</published><updated>2009-12-22T02:42:59.515-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Weblogic Server'/><title type='text'>Weblogic Server : Quick EAR Deployment using WLST</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;" The WebLogic Scripting Tool (WLST) is a command-line scripting environment that you can use to create, manage, and monitor WebLogic Server domains. "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;- &lt;a href="http://download.oracle.com/docs/cd/E12840_01/wls/docs103/config_scripting/using_WLST.html"&gt;Oracle Weblogic Server Manual&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;You can use WLST to quickly deploy an Application EAR File in a Weblogic Server.&lt;br /&gt;&lt;br /&gt;What do you need ?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the EAR file ( uploaded to a directory in the target WebLogic Server )&lt;/li&gt;&lt;li&gt;A simple WLST script&lt;/li&gt;&lt;li&gt;Credentials for the Weblogic Server ( preferrably, the weblogic user ).&lt;/li&gt;&lt;/ul&gt;How do we do it ?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Upload your EAR file to a directory in the target Weblogic Server&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;&lt;blockquote&gt;          /app/home/myUser/&lt;/blockquote&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Write a simple WLST Script to do your work and save it as "myApp.py"&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;blockquote&gt;print '*** WEBLOGIC : START ***'&lt;br /&gt;&lt;br /&gt;print 'connecting to admin server....'&lt;br /&gt;connect( 'weblogic', 'weblogic', 't3://localhost:8001', adminServerName='AdminServer' )&lt;br /&gt;&lt;br /&gt;print 'stopping and undeploying ....'&lt;br /&gt;&lt;br /&gt;stopApplication('myApplication')&lt;br /&gt;undeploy('myApplication')&lt;br /&gt;&lt;br /&gt;print 'deploying....'&lt;br /&gt;&lt;br /&gt;deploy('myApplication', '/app/home/myUser/myApplication.ear', targets='AdminServer')&lt;br /&gt;startApplication('FoundationSearch')&lt;br /&gt;&lt;br /&gt;print 'disconnecting from admin server....'&lt;br /&gt;disconnect()&lt;br /&gt;exit()&lt;br /&gt;&lt;br /&gt;print '*** WEBLOGIC : STOP ***'&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Open a Terminal Window / Command Prompt&lt;/li&gt;&lt;li&gt;Run the &lt;span style="font-weight: bold;"&gt;setDomainEnv.sh&lt;/span&gt; ( or setDomainEnv.bat ) script to set the required environment variables.&lt;/li&gt;&lt;li&gt;Switch to the &lt;span style="font-weight: bold;"&gt;/common/bin&lt;/span&gt; directory of your Weblogic Server&lt;/li&gt;&lt;li&gt;run the &lt;span style="font-weight: bold;"&gt;wlst.sh&lt;/span&gt; / wlst.bat script to open the Scripting Environment.&lt;/li&gt;&lt;li&gt;Execute your WLST Script :-&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;execfile('myApp.py')&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;That's it ! You can now stop an application, undeloy it, deploy it &amp;amp; start an application with a simple script !&lt;br /&gt;&lt;br /&gt;You need to watch out for two small things :-&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The WAR File and some of the classes / libs are "cached" under the /tmp/_WL_user/myApplication/ folder. You may need to delete them before you execute your script.&lt;/li&gt;&lt;li&gt;Make sure the EAR file is available in a folder in the same node as the Server.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-6376534560428306998?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/6376534560428306998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=6376534560428306998' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/6376534560428306998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/6376534560428306998'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2009/12/weblogic-server-quick-ear-deployment.html' title='Weblogic Server : Quick EAR Deployment using WLST'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-2376944898257488024</id><published>2009-06-19T02:58:00.000-07:00</published><updated>2009-06-19T03:14:43.631-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><title type='text'>Oracle BPEL and Weblogic and Java - JAR Hell</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;" JAR hell is a term used to describe all the various ways in which the classloading process can end up not working. &lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;- &lt;/span&gt;&lt;a style="font-weight: bold; font-style: italic;" href="http://en.wikipedia.org/wiki/Classloader#JAR_hell"&gt;JAR Hell ( Wikipedia )&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://avijeetd.blogspot.com/"&gt;Avijeet&lt;/a&gt;  , &lt;a href="http://www.linkedin.com/in/chari"&gt;Raghu&lt;/a&gt; and myself - we are working on a challenging customer engagement and the environment has an Oracle BPEL 10.1.3.4 Server running off an Weblogic 9.2 Server. We recently encountered a scenario where we had to have a Java Client call a BPEL process deployed in this environment.&lt;br /&gt;&lt;br /&gt;We used to regular boiler-plate Java BPEL Client code that you can get in the documentation, blogs, etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;You can find a good example on &lt;/span&gt;&lt;a style="color: rgb(102, 51, 255);" href="http://soablogger.blogspot.com/2008/03/tips-on-oracle-bpel-java-api-part-1.html"&gt;Charles Piazza's SOA Blog&lt;/a&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;However, to our chagrin, we noticed that the code always returned an opaque error :-&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;Exception in thread "main" java.lang.Exception: &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;Failed to create "ejb/collaxa/system/FinderBean" bean; exception reported is: "javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;error during JRMP connection establishment; nested exception is: &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;    java.io.EOFException]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;    at weblogic.jrmp.Context.lookup(Context.java:189)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;    at weblogic.jrmp.Context.lookup(Context.java:195)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;    at javax.naming.InitialContext.lookup(InitialContext.java:351)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;    at com.oracle.bpel.client.util.BeanRegistry.lookupFinderBean(BeanRegistry.java:337)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;    at com.oracle.bpel.client.Locator.getFinder(Locator.java:956)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;    at com.oracle.bpel.client.Locator.listInstances(Locator.java:585)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;    at com.oracle.bpel.client.Locator.listInstances(Locator.java:554)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We pciked our brains on this for almost two days - until, suddenly, it hit us !&lt;br /&gt;&lt;br /&gt;It was a classic case of JAR hell.&lt;br /&gt;&lt;br /&gt;I had included all the JAR libraries of Oracle BPEL 10.1.3.4 and Weblogic 9.2 - for some strange reason, a few libraries in these two sets didn't like each other and this disgust resulted in the opaque "bean" exception.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://avijeetd.blogspot.com/"&gt;Avijeet&lt;/a&gt; pointed this out &amp;amp; we both painstakingly removed the Weblogic Jar's one-by-one, until we noticed that we only required two sets of JARs to run the Java Class :-&lt;br /&gt;&lt;ol style="color: rgb(102, 102, 204);"&gt;&lt;li&gt;All the Oracle BPEL 10.1.3.4 Libraries.&lt;/li&gt;&lt;li&gt;Only the weblogic.jar from Weblogic 9.2&lt;/li&gt;&lt;/ol&gt;Cool ! So, now it works and we can celebrate another victory against JAR hell !&lt;br /&gt;&lt;br /&gt;Moral of the storey : Be very very careful with the JARs you use !&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-2376944898257488024?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/2376944898257488024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=2376944898257488024' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/2376944898257488024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/2376944898257488024'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2009/06/oracle-bpel-and-weblogic-and-java-jar.html' title='Oracle BPEL and Weblogic and Java - JAR Hell'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-2350209238447942860</id><published>2009-02-22T22:23:00.000-08:00</published><updated>2009-02-22T22:28:40.858-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Tools of Trade'/><title type='text'>Recursive Java Decompiler by Adarsh</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;" Often we encounter situations where the only solution to a certain Java problem is to decompile the contents of    an entire JAR file, edit the resulting the source, rebuild and repackage before using.      "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;a style="font-style: italic;" href="http://www.adarshr.com/papers/recursive"&gt;- Adarsh Ramamurthy&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I found myself in this situation today &amp;amp; was struggling with CAVAJ and JAD to recursively generate Java classes present in an EAR file. I initially tried my hand at writing my own DOS Script to do this, but soon found that it takes a lot of time, patience &amp;amp; effort to write a script that does what I need. And time, unfortuantely, is in very limited supply today !&lt;br /&gt;&lt;br /&gt;I Googled around looking for solutions &amp;amp; landed on this &lt;a href="http://www.adarshr.com/papers/recursive"&gt;post&lt;/a&gt; by Adarsh. The Recursive Decompiler provided by Adarsh works like a charm *&amp;amp; saved a lot of time !&lt;br /&gt;&lt;br /&gt;Thanks a lot Adarsh !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-2350209238447942860?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/2350209238447942860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=2350209238447942860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/2350209238447942860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/2350209238447942860'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2009/02/recursive-java-decompiler-by-adarsh.html' title='Recursive Java Decompiler by Adarsh'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-7912845843180675854</id><published>2009-02-09T02:29:00.000-08:00</published><updated>2009-02-09T03:46:34.207-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><title type='text'>DWR Hello World !</title><content type='html'>" &lt;span style="font-weight: bold; font-style: italic;"&gt;DWR is a Java library that enables Java on the server and JavaScript in a browser to interact and call each other as simply as possible.&lt;/span&gt; "&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;- &lt;a href="http://directwebremoting.org/"&gt;Direct Web Remoting ( DwR )&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;I was snooping around for an AJAX library that I can use in one of my projects &amp;amp; narrowed down to &lt;a href="http://directwebremoting.org/"&gt;DWR&lt;/a&gt;, after reading a lot of rave reviews about it. I was looking out for some AJAX library that'll allow me to call the methods in my Java classes with minimum effort.&lt;br /&gt;&lt;br /&gt;I decided to take it for a test drive &amp;amp; check out the features. The usual sources were the &lt;a href="http://directwebremoting.org/dwr/documentation"&gt;DWR Documentation&lt;/a&gt; and Google.&lt;br /&gt;&lt;br /&gt;I don't want to duplicate the good &amp;amp; decent documentation available for DWR at the "&lt;a href="http://directwebremoting.org/dwr/getstarted"&gt;Get Started&lt;/a&gt;" page.&lt;br /&gt;&lt;br /&gt;At a high level, I would like to just summarize the steps involved ( with the mistakes I made highlighted ) :-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Put dwr.jar in your Project's lib.&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(102, 102, 204);"&gt;Put the Commons Logging Jar in your Projects's lib. ( Dwr uses Apache Commons Logging )&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Add the configuration settings in your web.xml for the DWR Servlet.&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(102, 102, 204);"&gt;Add the debugging parameters for the DWR Servlet during the development phase.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Add the dwr.xml under WEB-INF and configure it to expose your Java Classes.&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(102, 102, 204);"&gt;Add the converters in dwr.xml to ensure the conversion of Java POJOs to JavaScript Objects &amp;amp; vice versa.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(102, 102, 204);"&gt;Include the reference to all the JavaScript libraries required in your JSPs.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Overall, I am impressed with this &amp;amp; I am going ahead with my implementation using DWR.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-7912845843180675854?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/7912845843180675854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=7912845843180675854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/7912845843180675854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/7912845843180675854'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2009/02/dwr-hello-world.html' title='DWR Hello World !'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-5484675698596924394</id><published>2009-02-03T23:44:00.000-08:00</published><updated>2009-02-03T23:51:14.837-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Weblogic Server'/><title type='text'>WebLogic Server 10 : Deployment : Error 149003</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;" WebLogic Deployer:149003 Unable to access application source information "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You might bump into this error during deployment. I just noticed that someone was struggling with this error &amp;amp; had reported this on the &lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=855208"&gt;OTN Forums&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The Stack Trace for the error usually looks like this :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Error is: 'weblogic.management.DeploymentException:&lt;br /&gt;[Deployer:149003]Unable to access application source information in&lt;br /&gt;'/home/bea/bea/user_projects/domains/myDomain/servers/myServer/stage&lt;br /&gt;app/app.war' for application 'roller'. The specific error is:&lt;br /&gt;[Deployer:149158]No application files exist at&lt;br /&gt;'/home/bea/bea/user_projects/domains/my/servers/myServer/stage&lt;br /&gt;appapp.war'&lt;/blockquote&gt;The error occurs when the WebLogic Server is unable to locate the EAR file. The common causes for the EAR file could be :-&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;ANT Deployment&lt;/span&gt; : The EAR file was not uploaded to a directory that the server can access.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Console Deployment&lt;/span&gt;: You might need to look at "Source Availablity" [ &lt;span class="bold" id="AppApplicationInstallPortletstagingStyle_label"&gt;Copy this  application onto every target for me ], if you wish to copy the application to all the managed servers in a Cluster.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="bold" id="AppApplicationInstallPortletstagingStyle_label"&gt;The error vanishes once the server can access the EAR file.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-5484675698596924394?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/5484675698596924394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=5484675698596924394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/5484675698596924394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/5484675698596924394'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2009/02/weblogic-server-10-deployment-error.html' title='WebLogic Server 10 : Deployment : Error 149003'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-5291479451602651463</id><published>2009-02-03T22:02:00.000-08:00</published><updated>2009-02-03T22:17:25.890-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LDAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><title type='text'>Spring LDAP caches user credentials</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;" Spring-LDAP caches environment properties by default "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://static.springframework.org/spring-ldap/docs/1.1/api/org/springframework/ldap/support/AbstractContextSource.html#setCacheEnvironmentProperties%28boolean%29"&gt;Spring-LDAP API Documentation&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I was facing this rather peculiar problem of User Credentials getting cached by Spring LDAP. I discovered this accidentally ( absent-minded, to be precise :) ) . I changed the password of a User in my ApacheDS but tried to login with the old password - and guess what ? it worked !&lt;br /&gt;&lt;br /&gt;Well, I looked at the first place I would go to in these situations - the Spring-LDAP Community Forums.&lt;br /&gt;&lt;br /&gt;I noticed that the problem has already been discussed &lt;a href="http://forum.springframework.org/showthread.php?t=61062"&gt;in one of the threads&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The solution suggested in the thread is use the &lt;a href="http://static.springframework.org/spring-ldap/docs/1.1/api/org/springframework/ldap/support/AbstractContextSource.html#setCacheEnvironmentProperties%28boolean%29"&gt;setCacheEnvironmentProperties()&lt;/a&gt; method in the &lt;a href="http://static.springframework.org/spring-ldap/docs/1.1/api/org/springframework/ldap/support/AbstractContextSource.html"&gt;AbstractContectSource&lt;/a&gt; class &amp;amp; set it to false. The Java doc for the API seems to explain this more :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Set whether environment properties should be cached between requsts for  anonymous environment. Default is true; setting this property to false  causes the environment Hashmap to be rebuilt from the current property  settings of this instance between each request for an anonymous  environment.&lt;/blockquote&gt;&lt;br /&gt;Well, just one of those queer things in the fascinating Spring LDAP API.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-5291479451602651463?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/5291479451602651463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=5291479451602651463' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/5291479451602651463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/5291479451602651463'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2009/02/spring-ldap-caches-user-credentials.html' title='Spring LDAP caches user credentials'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-2935927756028698329</id><published>2009-02-03T01:30:00.000-08:00</published><updated>2009-02-03T02:02:29.476-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSF'/><title type='text'>JSF Managed Bean in a Servlet Filter</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;" How do you get a JSF Managed Bean, with session scope, in a Servlet Filter ? " &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;- Two bewildered comrade&lt;/span&gt;s&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The question posed above can be reworded in a simpler way :-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;" Which came first, the Chicken or the Egg ? " &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;- A timeless paradox&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;We just hit this problem of accessing a JSF managed bean from a Servlet Filter. The requirement is quite simple - Oracle Single Sign On authenticates a user, passes on useful information about the user in the request headers &amp;amp; this information needs be passed on downstream to a Managed Bean for furthe consumption.&lt;br /&gt;&lt;br /&gt;However, try as much as we can, we only hit the simple NullPointerException, which quaintly informs us that we aren't getting the FacesContext to proceed further.&lt;br /&gt;&lt;br /&gt;A bit of Googling landed us on a &lt;a href="http://forums.sun.com/thread.jspa?threadID=499569&amp;amp;forumID=427"&gt;post&lt;/a&gt; on the Sun Java Forums, where one of the legends of the Java Universe - Craig McClanahan - has suggested that this might not be possible. He has eloquently described how the Servlet Filters get triggered much before the Servlets &amp;amp; hence, the FacesContext doesn't stand a chance of getting initialized unless the flow hits the FacesServlet.&lt;br /&gt;&lt;br /&gt;However, on further Googling, we hit upon &lt;a href="http://www.thoughtsabout.net/blog/archives/000033.html"&gt;this curious post&lt;/a&gt; on the &lt;a href="http://www.thoughtsabout.net/"&gt;Thougths About&lt;/a&gt; blog that offers an amazing alternative! We tried the code posted on the blog and.... it just works !&lt;br /&gt;&lt;br /&gt;Thanks a million to the &lt;a href="http://www.thoughtsabout.net/"&gt;Thougths About&lt;/a&gt; blog for shaving off a few precious hours off the already-harried schedule of a couple of developers !&lt;br /&gt;&lt;br /&gt;You can also find a very good explanation about the&lt;a href="http://www.thoughtsabout.net/blog/archives/000035.html"&gt; differences between a Filter and a PhaseListener&lt;/a&gt; on the same Blog.&lt;br /&gt;&lt;br /&gt;Now, it's time for a cup of coffee.....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-2935927756028698329?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/2935927756028698329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=2935927756028698329' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/2935927756028698329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/2935927756028698329'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2009/02/how-do-you-get-jsf-managed-bean-with.html' title='JSF Managed Bean in a Servlet Filter'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-8323184734533350192</id><published>2009-01-21T02:24:00.000-08:00</published><updated>2009-01-21T04:16:05.446-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LDAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><title type='text'>Spring LDAP : My experiments</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;" Spring LDAP is a Java library for simplifying LDAP operations, based on the pattern of Spring's JdbcTemplate. The framework relieves the user of common chores, such as looking up and closing contexts, looping through results, encoding/decoding values and filters, and more. "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://www.springsource.org/ldap"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Spring LDAP&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;I took some time to explore the Spring LDAP library &amp;amp; I am impressed with it. The library aims to make a developer productive by eliminating a lot of plumbing code that one would encounter with plain-vanilla JNDI. I have worked on building an User Management application using JNDI &amp;amp; when I compare it with the facilities provided in Spring LDAP, I defenitely would think twice before coding in regular JNDI.&lt;br /&gt;&lt;br /&gt;I created a sample application, by using the principles listed out in the &lt;a href="http://static.springframework.org/spring-ldap/docs/1.3.x/reference/html/spring-ldap-reference.html"&gt;Spring LDAP Reference Documentation&lt;/a&gt; &amp;amp; some of the samples I found using my favourite Google.&lt;br /&gt;&lt;br /&gt;The steps to use Spring LDAP are quite the same for any Spring application :-&lt;br /&gt;&lt;br /&gt;1. Get the Spring LDAP libraries.&lt;br /&gt;2. Configure the applicationContext.xml&lt;br /&gt;3. Write any utility classes you may need.&lt;br /&gt;4. Write the Interface and Implementation class.&lt;br /&gt;5. Write a test harness to see if all these gule together &amp;amp; work ( of course, it will ! :) ).&lt;br /&gt;&lt;br /&gt;Let's take it one step at a time...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Get the Spring LDAP libraries.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can get it from the &lt;a href="http://www.springsource.org/ldap"&gt;Spring LDAP&lt;/a&gt; home page.&lt;br /&gt;&lt;br /&gt;After downloading the library, you can unizp it &amp;amp; have a look at the README file. The file usually outlines the dependencies very clearly. In my case, I had to include all these libraries in my project :-&lt;br /&gt;&lt;ul&gt;&lt;blockquote&gt;&lt;li&gt;spring-ldap-core-tiger-x.x.jar&lt;/li&gt;&lt;li&gt;Commons Logging&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Commons Lang&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Commons Pool&lt;br /&gt;&lt;/li&gt;&lt;li&gt;spring-beans&lt;/li&gt;&lt;li&gt;spring-core&lt;br /&gt;&lt;/li&gt;&lt;li&gt;spring-context&lt;br /&gt;&lt;/li&gt;&lt;li&gt;spring-jdbc&lt;br /&gt;&lt;/li&gt;&lt;li&gt;spring-tx&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ldapbp&lt;/li&gt;&lt;/blockquote&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;2. Configure the applicationContext.xml&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Here's my applicationContext.xml&lt;span style="font-weight: bold;"&gt; :-&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;  ?xml version="1.0" encoding="UTF-8"?  &gt;&lt;br /&gt;&lt;  !DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"  &gt;&lt;br /&gt;&lt;&gt;&lt;br /&gt;&lt;br /&gt; &lt;  !-- The Spring LDAP Context Source Configuration. The information provided         here is used to create an instance of InitialLdapContext  --  &gt;&lt;br /&gt; &lt; id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource"&gt;&lt;br /&gt;   &lt; name="url" value="ldap://ecmser.idc.oracle.com:389"&gt;&lt;br /&gt;   &lt; name="base" value="cn=Users,dc=idc,dc=oracle,dc=com"&gt;&lt;br /&gt;   &lt; name="userDn" value="cn=orcladmin"&gt;&lt;br /&gt;   &lt; name="password" value="allstate1"&gt;&lt;br /&gt; &lt;  /bean  &gt;&lt;br /&gt;&lt;br /&gt; &lt;  !-- The Spring LDAP Template executes tcore LDAP functionalities. It requires        the Context Source for its operations. --  &gt;&lt;br /&gt; &lt; id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate"&gt;&lt;br /&gt;   &lt; ref="contextSource"&gt;&lt;br /&gt; &lt;  /bean  &gt;&lt;br /&gt;&lt;br /&gt; &lt;  !-- Our User Bean that makes uses of the pre-configured Spring LDAP Template--  &gt;&lt;br /&gt; &lt; id="user" class="com.org.sandeep.dao.impl.UserDAOImpl"&gt;&lt;br /&gt;   &lt; name="ldapTemplate" ref="ldapTemplate"&gt;&lt;br /&gt; &lt;  /bean  &gt;&lt;br /&gt;&lt;br /&gt;&lt;  /beans  &gt;&lt;beans&gt;&lt;bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource"&gt;&lt;property name="url" value="ldap://ldap.com:389"&gt;&lt;property name="base" value="cn=Users,dc=idc,dc=ldap,dc=com"&gt;&lt;property name="userDn" value="cn=admin"&gt;&lt;property name="password" value="password"&gt;&lt;/property&gt;&lt;bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate"&gt;&lt;constructor-arg ref="contextSource"&gt;&lt;/constructor-arg&gt;&lt;bean id="user" class="com.org.sandeep.dao.impl.UserDAOImpl"&gt;&lt;property name="ldapTemplate" ref="ldapTemplate"&gt;&lt;/property&gt;&lt;/bean&gt;&lt;br /&gt;&lt;br /&gt;&lt;/bean&gt;&lt;/property&gt;&lt;/property&gt;&lt;/property&gt;&lt;/bean&gt;&lt;/beans&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;3. Write any utility classes you may need.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;First, I  an interface as a placeholder for some of the constants :-&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;package com.org.sandeep.util;&lt;br /&gt;&lt;br /&gt;public interface UserConstants&lt;br /&gt;{&lt;br /&gt;String FIRST_NAME   = "cn";&lt;br /&gt;String LAST_NAME    = "sn";&lt;br /&gt;String BLANK        = "";&lt;br /&gt;String OBJECT_CLASS = "objectclass";&lt;br /&gt;String PERSON       = "person";&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Next, I wrote my bean class :-&lt;br /&gt;&lt;br /&gt;package com.org.sandeep.bean;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;public class UserBean&lt;br /&gt;{&lt;br /&gt;private String firstName;&lt;br /&gt;private String lastName;&lt;br /&gt;&lt;br /&gt;public UserBean()&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public UserBean(String firstName,String lastName)&lt;br /&gt;{&lt;br /&gt;  this.firstName = firstName;&lt;br /&gt;  this.lastName =  lastName;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setFirstName(String firstName)&lt;br /&gt;{&lt;br /&gt;  this.firstName = firstName;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getFirstName()&lt;br /&gt;{&lt;br /&gt;  return firstName;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setLastName(String lastName)&lt;br /&gt;{&lt;br /&gt;  this.lastName = lastName;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getLastName()&lt;br /&gt;{&lt;br /&gt;  return lastName;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public String toString()&lt;br /&gt;{&lt;br /&gt;  return firstName + " : "+lastName;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Finally, I wrote an AttributesMapper class the implements Spring's AttributeMapper interface. To quote from the &lt;a href="http://static.springframework.org/spring-ldap/docs/1.3.x/reference/html/spring-ldap-reference.html"&gt;Spring LDAP Reference Manual&lt;/a&gt; :-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;An interface used by LdapTemplate for mapping LDAP Attributes to beans.  Implementions of this interface perform the actual work of extracting  results, but need not worry about exception handling. NamingExceptions will  be caught and handled correctly by the LdapTemplate class.  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here's my AttributesMapper class :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;package com.org.sandeep.mapper;&lt;br /&gt;&lt;br /&gt;import com.org.sandeep.bean.UserBean;&lt;br /&gt;import com.org.sandeep.util.UserConstants;&lt;br /&gt;&lt;br /&gt;import javax.naming.NamingException;&lt;br /&gt;import javax.naming.directory.Attributes;&lt;br /&gt;&lt;br /&gt;import org.springframework.ldap.core.AttributesMapper;&lt;br /&gt;&lt;br /&gt;public class UserMapper implements AttributesMapper&lt;br /&gt;{&lt;br /&gt;public Object mapFromAttributes(Attributes attributes)&lt;br /&gt;{&lt;br /&gt;  UserBean userBean = null;&lt;br /&gt;&lt;br /&gt;  String firstName = null;&lt;br /&gt;  String lastName  = null;&lt;br /&gt;&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;        firstName = (String)attributes.get(UserConstants.FIRST_NAME).get();&lt;br /&gt;        lastName  = (String)attributes.get(UserConstants.LAST_NAME ).get();&lt;br /&gt;  }&lt;br /&gt;  catch (NamingException objNamingException)&lt;br /&gt;  {&lt;br /&gt;    objNamingException.printStackTrace();&lt;br /&gt;  } &lt;br /&gt;&lt;br /&gt;  if (   firstName != null || lastName != null )&lt;br /&gt;  {&lt;br /&gt;    userBean = new UserBean(firstName,lastName);&lt;br /&gt;  } &lt;br /&gt;&lt;br /&gt;  return userBean;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Write the Interface and Implementation class.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;First, we need an interface :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;package com.org.sandeep.dao;&lt;br /&gt;&lt;br /&gt;import com.org.sandeep.bean.UserBean;&lt;br /&gt;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;public interface UserDAO&lt;br /&gt;{&lt;br /&gt;public List get(UserBean user);&lt;br /&gt;public void add(UserBean user);&lt;br /&gt;public void modify(UserBean user);&lt;br /&gt;public void remove(UserBean user);&lt;br /&gt;}&lt;/blockquote&gt;Next, we need an implementation class that uses the interface :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;package com.org.sandeep.dao.impl;&lt;br /&gt;&lt;br /&gt;import com.org.sandeep.bean.UserBean;&lt;br /&gt;import com.org.sandeep.dao.UserDAO;&lt;br /&gt;import com.org.sandeep.mapper.UserMapper;&lt;br /&gt;&lt;br /&gt;import com.org.sandeep.util.UserConstants;&lt;br /&gt;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;import javax.naming.directory.Attributes;&lt;br /&gt;import javax.naming.directory.BasicAttribute;&lt;br /&gt;import javax.naming.directory.BasicAttributes;&lt;br /&gt;&lt;br /&gt;import org.springframework.ldap.core.DistinguishedName;&lt;br /&gt;import org.springframework.ldap.core.LdapTemplate;&lt;br /&gt;import org.springframework.ldap.filter.AndFilter;&lt;br /&gt;import org.springframework.ldap.filter.EqualsFilter;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class UserDAOImpl implements UserDAO&lt;br /&gt;{&lt;br /&gt;private LdapTemplate ldapTemplate;&lt;br /&gt;&lt;br /&gt;public UserDAOImpl()&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setLdapTemplate(LdapTemplate ldapTemplate)&lt;br /&gt;{&lt;br /&gt;    this.ldapTemplate = ldapTemplate;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public List get(UserBean user)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;  String firstName = null;&lt;br /&gt;  String lastName  = null;&lt;br /&gt;&lt;br /&gt;  AndFilter andFilter = null;&lt;br /&gt;&lt;br /&gt;  firstName = user.getFirstName();&lt;br /&gt;  lastName  = user.getLastName();&lt;br /&gt;&lt;br /&gt;  andFilter = new AndFilter();&lt;br /&gt;  andFilter.and(new EqualsFilter(UserConstants.OBJECT_CLASS,UserConstants.PERSON));&lt;br /&gt;  andFilter.and(new EqualsFilter(UserConstants.FIRST_NAME,firstName));&lt;br /&gt;  andFilter.and(new EqualsFilter(UserConstants.LAST_NAME,lastName));&lt;br /&gt;&lt;br /&gt;  return ldapTemplate.search(UserConstants.BLANK, andFilter.encode(),new UserMapper());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void add(UserBean user)&lt;br /&gt;{&lt;br /&gt;    Attributes        userAttributes      = null;&lt;br /&gt;    BasicAttribute    userBasicAttribute  = null;&lt;br /&gt;    DistinguishedName userDN              = null;&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;    userAttributes = new BasicAttributes();&lt;br /&gt;    userBasicAttribute = new BasicAttribute(UserConstants.OBJECT_CLASS);&lt;br /&gt; &lt;br /&gt;    userBasicAttribute.add(UserConstants.PERSON);&lt;br /&gt;    userAttributes.put(userBasicAttribute);&lt;br /&gt;    userAttributes.put(UserConstants.FIRST_NAME, user.getFirstName());&lt;br /&gt;    userAttributes.put(UserConstants.LAST_NAME, user.getLastName());&lt;br /&gt;&lt;br /&gt;    userDN = new DistinguishedName(UserConstants.BLANK);&lt;br /&gt;    userDN.add(UserConstants.FIRST_NAME, user.getFirstName());&lt;br /&gt; &lt;br /&gt;    ldapTemplate.bind(userDN, null, userAttributes);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void modify(UserBean user)&lt;br /&gt;{&lt;br /&gt;  Attributes        userAttributes      = null;&lt;br /&gt;  BasicAttribute    userBasicAttribute  = null;&lt;br /&gt;  DistinguishedName userDN              = null;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  userAttributes = new BasicAttributes();&lt;br /&gt;  userBasicAttribute = new BasicAttribute(UserConstants.OBJECT_CLASS);&lt;br /&gt;&lt;br /&gt;    userBasicAttribute.add(UserConstants.PERSON);&lt;br /&gt;    userAttributes.put(userBasicAttribute);&lt;br /&gt;    userAttributes.put(UserConstants.FIRST_NAME, user.getFirstName());&lt;br /&gt;    userAttributes.put(UserConstants.LAST_NAME, user.getLastName());&lt;br /&gt;&lt;br /&gt;    userDN = new DistinguishedName(UserConstants.BLANK);&lt;br /&gt;    userDN.add(UserConstants.FIRST_NAME, user.getLastName());&lt;br /&gt; &lt;br /&gt;    ldapTemplate.rebind(userDN, null, userAttributes);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void remove(UserBean user)&lt;br /&gt;{&lt;br /&gt;    DistinguishedName userDN = new DistinguishedName(UserConstants.BLANK);&lt;br /&gt;    userDN.add(UserConstants.FIRST_NAME, user.getFirstName());&lt;br /&gt;    ldapTemplate.unbind(userDN);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. Write a test harness to see if all these gule together &amp;amp; work &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well, we have reached the finish line ! The only remaining step is to see if all these gel together !&lt;br /&gt;&lt;br /&gt;Here's my test client :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;package com.org.sandeep.client;&lt;br /&gt;&lt;br /&gt;import com.org.sandeep.bean.UserBean;&lt;br /&gt;import com.org.sandeep.dao.UserDAO;&lt;br /&gt;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;import org.springframework.beans.factory.BeanFactory;&lt;br /&gt;import org.springframework.beans.factory.xml.XmlBeanFactory;&lt;br /&gt;import org.springframework.core.io.ClassPathResource;&lt;br /&gt;import org.springframework.core.io.Resource;&lt;br /&gt;import org.springframework.dao.DataAccessException;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class UserClient&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;public static void main(String[] args)&lt;br /&gt;{&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;  Resource resource   = new ClassPathResource("applicationContext.xml");&lt;br /&gt;  BeanFactory factory = new XmlBeanFactory(resource);&lt;br /&gt;  UserDAO     userDAO = (UserDAO)factory.getBean("user");&lt;br /&gt;&lt;br /&gt;  UserBean userBean = new UserBean("Sandeep","Seshan");&lt;br /&gt;&lt;br /&gt;  userDAO.add(userBean);&lt;br /&gt;&lt;br /&gt;  System.out.println("Done");&lt;br /&gt;&lt;br /&gt;  List userList = userDAO.get(userBean);&lt;br /&gt;&lt;br /&gt;  System.out.println("User "+userList);&lt;br /&gt;&lt;br /&gt;  userDAO.remove(userBean);&lt;br /&gt;&lt;br /&gt;  System.out.println("Done &amp;amp; Deleted");&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;catch (DataAccessException objDataAccessException )&lt;br /&gt;{&lt;br /&gt;objDataAccessException .printStackTrace();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;That's it ! It's that simple !&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-8323184734533350192?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/8323184734533350192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=8323184734533350192' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/8323184734533350192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/8323184734533350192'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2009/01/spring-ldap-my-experiments.html' title='Spring LDAP : My experiments'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-7010591648850099131</id><published>2009-01-19T01:11:00.000-08:00</published><updated>2009-01-19T01:27:51.688-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='JDeveloper'/><title type='text'>FlashBack to JDeveloper 10.1.2.2.0</title><content type='html'>&lt;span style="font-weight: bold;"&gt;" I want to migrate my application code base from JDeveloper 10.1.3 to 10.1.2 "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;One of my colleagues recently faced this problem of moving the source code of a J2EE Application from Jdeveloper 10.1.3 to JDeveloper 10.1.2.&lt;br /&gt;&lt;br /&gt;We faced a few issues during the process &amp;amp; here's a partial list of the issues we faced :-&lt;br /&gt;&lt;br /&gt;1. &lt;span style="font-weight: bold; font-style: italic;"&gt;Platform Migration Issues&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;JDeveloper 10.1.2.x makes use of JDK 1.4, whereas JDeveloper 10.1.3.x makes use of JDK 1.5. Hence, the move involves changing Java code to ensure that the code is stripped of all the useful features we are used to in JDK 1.5. E.g: contains() method of java.lang.String, etc.&lt;br /&gt;&lt;br /&gt;2. &lt;span style="font-weight: bold; font-style: italic;"&gt;“Error (n, m): identifier OracleJspRuntime not found”&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;We noticed that we had to manually add the JSP Runtime Library to the new Project in jDeveloper 10.1.2.&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;Please see one of my &lt;a href="http://sandeepseshan.blogspot.com/2008/10/error-n-m-identifier-oraclejspruntime.html"&gt;previous  &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;post&lt;/a&gt;s for more information about this problem.&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;3. &lt;span style="font-weight: bold; font-style: italic;"&gt;Error: JSP files must reside in the server root directory or a subdirectory&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;We noticed that we had to manually change the HTML Root Directory to the new Project in jDeveloper 10.1.2.&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;Please see one of my &lt;a href="http://sandeepseshan.blogspot.com/2008/10/jdeveloper-jsp-files-must-reside-in.html"&gt;previous  &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;post&lt;/a&gt;&lt;a href="http://sandeepseshan.blogspot.com/2008/10/jdeveloper-jsp-files-must-reside-in.html"&gt;s&lt;/a&gt; for more information about this problem.&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;4. &lt;span style="font-weight: bold; font-style: italic;"&gt;Change XSD references to DTDs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The JDeveloper 10.1.2.x does not recognize references to XSDs in web.xml &amp;amp; other configuration files. Hence, we had to manually change these references to DTDs.&lt;br /&gt;&lt;br /&gt;Well, we managed to backport the application after resolving these problems. I would like to hear if there are any other similar experiences.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-7010591648850099131?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/7010591648850099131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=7010591648850099131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/7010591648850099131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/7010591648850099131'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2009/01/flashback-to-jdeveloper-101220.html' title='FlashBack to JDeveloper 10.1.2.2.0'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-2442933234204363477</id><published>2008-12-09T03:39:00.000-08:00</published><updated>2008-12-09T03:45:45.705-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Random'/><title type='text'>Beyond Code : Distinguish Yourself</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;“The illiterate of the 21st century will not be those who cannot read and write, but those who cannot learn, unlearn, and relearn.” &lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;- Alvin Toffler&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;I am a little late in posting this on my Blog ( very late, in these times of Twitter &amp;amp; Plurk ! ), but here's the good news :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://www.rajeshsetty.com/"&gt;Rajesh Setty&lt;/a&gt; ( of the &lt;a href="http://blog.lifebeyondcode.com/"&gt;LifeBeyondCode&lt;/a&gt; Blog fame  ) has decided to give away the PDF version one of his famous books - &lt;a href="http://blog.lifebeyondcode.com/2008/11/16/thanksgiving-wishes-please-download-the-full-version-of-beyond-code-free/"&gt;Beyond Code&lt;/a&gt; - FREE as a ThanksGiving gift to all his readers !&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;The news will definitely be stale by now, but I want to post this note on my blog for those who haven't caught the wave yet.&lt;br /&gt;&lt;br /&gt;Well, beyond this, I have nothing more to tell - just download the PDF &amp;amp; happy reading !&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-2442933234204363477?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/2442933234204363477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=2442933234204363477' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/2442933234204363477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/2442933234204363477'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/12/beyond-code-distinguish-yourself.html' title='Beyond Code : Distinguish Yourself'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-364347345655823244</id><published>2008-10-23T22:49:00.000-07:00</published><updated>2008-10-23T22:50:19.761-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='JDeveloper'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;“Error (n, m): identifier OracleJspRuntime not found”&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;-    Jdeveloper Error.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;You might have noticed this error sometimes in your Project.&lt;br /&gt;&lt;br /&gt;The solution to this error is simple – you just need to add Jdeveloper’s “&lt;span style="font-weight: bold;"&gt;JSP Runtime&lt;/span&gt;” standanrd library to your Project Classpath – here are the steps to do it in Jdeveloper 10.1.3 : -&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(0, 0, 153);"&gt;1.    Right click on the Project &amp;amp; select the “Project Properties” option.&lt;br /&gt;2.    You can see the “Project Properties window.&lt;br /&gt;3.    Select the “Libraries” option. You can see the various configuration options for Project Libraries.&lt;br /&gt;4.    Click on the “Add Library” button. You can see the “Add Library” window.&lt;br /&gt;5.    Select “JSP Runtime” from the list of libraries &amp;amp; click on the “Ok” button.&lt;br /&gt;6.    “Make” / “Rebuild” your project.&lt;br /&gt;7.    You can see that you no longer see this error.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Thanks once again to the people who have discussed this at Oracle Technology Network Forums &amp;amp; various Bloggers who have spoken about it.&lt;br /&gt;&lt;br /&gt;I am just posting this in my Blog for my reference.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-364347345655823244?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/364347345655823244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=364347345655823244' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/364347345655823244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/364347345655823244'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/10/error-n-m-identifier-oraclejspruntime.html' title=''/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-918335695626536954</id><published>2008-10-23T22:43:00.000-07:00</published><updated>2008-10-23T22:49:03.618-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='JDeveloper'/><title type='text'>JDeveloper JSP files must reside in the server root directory or a subdirectory</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;“Error: JSP files must reside in the server root directory or a subdirectory”&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;-    Jdeveloper Error&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;How often have you struggled to specify a different folder for your JSPs, instead of JDeveloper’s default folder “&lt;span style="font-weight: bold;"&gt;public_html&lt;/span&gt;”?&lt;br /&gt;&lt;br /&gt;I struggled with this option today – I inherited an application source code that I had to analyze &amp;amp; look our for ways to improve readability of the code. The application source code had been developed without an IDE (!), using our favorite ANT as the build tool.&lt;br /&gt;&lt;br /&gt;I easily imported this code into Jdeveloper 10.1.3 (using NEW -&gt; Project from Source Code). However, I noticed that I frequently hit the error mentioned above.&lt;br /&gt;&lt;br /&gt;After Googling a bit, I stumbled upon a few &lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=1534963"&gt;OTN forum posts&lt;/a&gt;. I found out that the solution is rather simple.&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(0, 0, 153);"&gt;1.    Click on the “Tools” option in the Jdeveloper Menu.&lt;br /&gt;2.    Select the “Project Properties” option from the drop down.&lt;br /&gt;      You can see the “Project Properties” Window.&lt;br /&gt;3.    Click on the “+” in the “Web Application” section to expand the options.&lt;br /&gt;4.    You can see the “HTML Root Directory” option.&lt;br /&gt;5.    Specify the Root Directory of your JSP Pages here &amp;amp; click on the Ok button.&lt;br /&gt;6.    “Make” or “ReBuild” your project now.&lt;br /&gt;7.    You can notice that you no longer see this error.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The supplied JDeveloper help pages are slightly confusing – they don not mention that the “HTML Root Directory” option is present under the “Web Application” section.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-918335695626536954?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/918335695626536954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=918335695626536954' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/918335695626536954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/918335695626536954'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/10/jdeveloper-jsp-files-must-reside-in.html' title='JDeveloper JSP files must reside in the server root directory or a subdirectory'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-1236833167434025323</id><published>2008-10-14T03:11:00.000-07:00</published><updated>2008-10-14T03:14:41.447-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UCP'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Application Server'/><title type='text'>Oracle UCP : Hello World</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;" The Universal Connection Pool provides an enhanced common infrastructure for database                              connection pooling. It is usable within the OC4J context as well                              as by non-Java EE applications for connecting to Oracle and non-Oracle databases                               and other resources like JCA and LDAP connections.                            "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right; font-weight: bold; font-style: italic;"&gt;- &lt;a href="http://www.oracle.com/technology/tech/java/oc4j/11/oc4j-relnotes.html"&gt;OC4J 11G Release Notes&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I am exploring Oracle Universal Connection Pool for a customer engagement. I was exploring the API &amp;amp; came up with a basic "Hello World" style introduction for the API.&lt;br /&gt;&lt;br /&gt;I just wanted to share it here:-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;import java.sql.Connection;&lt;br /&gt;import java.sql.ResultSet;&lt;br /&gt;import java.sql.SQLException;&lt;br /&gt;import java.sql.Statement;&lt;br /&gt;&lt;br /&gt;import oracle.ucp.UniversalConnectionPoolException;&lt;br /&gt;import oracle.ucp.jdbc.PoolDataSource;&lt;br /&gt;import oracle.ucp.jdbc.PoolDataSourceImpl;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class UCPHelloWorld&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;    public UCPHelloWorld()&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;    }// end of constructor&lt;br /&gt;&lt;br /&gt;    public static void main(String args[])&lt;br /&gt;    {&lt;br /&gt;        String strConnectionPoolName= null;&lt;br /&gt;        String strConnectionFactory = null;&lt;br /&gt;        String strDatabaseURL        = null;&lt;br /&gt;        String strDatabaseUser        = null;&lt;br /&gt;        String strUserPassword        = null;&lt;br /&gt;        String strSQLQuery            = null;&lt;br /&gt;        String strEmployeeName        = null;&lt;br /&gt;&lt;br /&gt;        Connection    objConnection    = null;&lt;br /&gt;        Statement    objStatement    = null;&lt;br /&gt;        ResultSet    objResultSet    = null;&lt;br /&gt;&lt;br /&gt;        PoolDataSource objPoolDataSource= null;&lt;br /&gt;&lt;br /&gt;        strConnectionPoolName        = "myConnectionPool";&lt;br /&gt;        strConnectionFactory        = "oracle.jdbc.pool.OracleDataSource";&lt;br /&gt;        strDatabaseURL                = "jdbc:oracle:thin:@localhost:1521/XE";&lt;br /&gt;        strDatabaseUser                = "scott";&lt;br /&gt;        strUserPassword                = "tiger";&lt;br /&gt;        strSQLQuery                    = "SELECT ENAME FROM EMP";&lt;br /&gt;        strEmployeeName                = "ENAME";&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        try&lt;br /&gt;        {&lt;br /&gt;            objPoolDataSource = new PoolDataSourceImpl();&lt;br /&gt;&lt;br /&gt;            // Basic Connection Parameters&lt;br /&gt;            objPoolDataSource.setConnectionFactoryClassName(strConnectionFactory);&lt;br /&gt;            objPoolDataSource.setURL(strDatabaseURL);&lt;br /&gt;            objPoolDataSource.setUser(strDatabaseUser);&lt;br /&gt;            objPoolDataSource.setPassword(strUserPassword);&lt;br /&gt;            objPoolDataSource.setConnectionPoolName(strConnectionPoolName);&lt;br /&gt;&lt;br /&gt;            // Set the Pool Size&lt;br /&gt;            objPoolDataSource.setMinPoolSize(4);&lt;br /&gt;            objPoolDataSource.setMaxPoolSize(10);&lt;br /&gt;            objPoolDataSource.setConnectionWaitTimeout(2);&lt;br /&gt;            objPoolDataSource.setInitialPoolSize(4);&lt;br /&gt;&lt;br /&gt;            System.out.println("Before getting the Connection");&lt;br /&gt;&lt;br /&gt;            objConnection    = objPoolDataSource.getConnection();&lt;br /&gt;            objStatement    = objConnection.createStatement();&lt;br /&gt;            objResultSet    = objStatement.executeQuery(strSQLQuery);&lt;br /&gt;&lt;br /&gt;            System.out.println("After getting the Connection");&lt;br /&gt;&lt;br /&gt;            while(objResultSet.next())&lt;br /&gt;            {&lt;br /&gt;&lt;br /&gt;                System.out.println(objResultSet.getString(strEmployeeName));&lt;br /&gt;&lt;br /&gt;            }// end of resultset&lt;br /&gt;&lt;br /&gt;            objResultSet.close();&lt;br /&gt;            objStatement.close();&lt;br /&gt;            objConnection.close();&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;        catch (SQLException objSQLException)&lt;br /&gt;        {&lt;br /&gt;            objSQLException.printStackTrace();&lt;br /&gt;        }&lt;br /&gt;    }// end of main&lt;br /&gt;}// end of UCPHelloWorld&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-1236833167434025323?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/1236833167434025323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=1236833167434025323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1236833167434025323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1236833167434025323'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/10/oracle-ucp-hello-world.html' title='Oracle UCP : Hello World'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-1027712026670845161</id><published>2008-07-09T04:21:00.000-07:00</published><updated>2008-07-09T04:42:49.549-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LDAP'/><title type='text'>LDAP Search : Search for a user in Oracle Internet Directory</title><content type='html'>The need to search for a user's entry in Oracle Internet directory (OID) crops up very often in various situations.&lt;br /&gt;&lt;br /&gt;You can easily do this using JNDI. You need to usually take care of these things before we proceed with the code :-&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;1. You have access to Oracle Internet Directory.&lt;br /&gt;&lt;br /&gt;2. You know the Distinguished Name ( DN ) of the entry that is the immediate parent of all the users.&lt;br /&gt;&lt;br /&gt;3. You know the attribute used to search. E.g.: cn, mail, sn, etc.&lt;br /&gt;&lt;br /&gt;4. You know that the attribute used to search has been "indexed" by Oracle Internet Directory.&lt;/blockquote&gt;You can then adapt this piece of code to suit your needs &amp;amp; look for users - the lines marked in red are important :-&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;String strSearchString = "sandeep";&lt;br /&gt;&lt;br /&gt;    String strLDAPUrl = "ldap://localhost:389";&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;String strUserRootDN = "cn=Users,dc=test,dc=com";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;String strFilter              = "cn="+strSearchString ;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    Hashtable env = new Hashtable();&lt;br /&gt;&lt;br /&gt;    env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");&lt;br /&gt;    env.put(Context.PROVIDER_URL, strLDAPUrl);&lt;br /&gt;    env.put(Context.SECURITY_AUTHENTICATION, "simple");&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;// You know the credentials to search in OID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;      env.put(Context.SECURITY_PRINCIPAL, "cn=orcladmin");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;      env.put(Context.SECURITY_CREDENTIALS, "mySecretPassword");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    try&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;          DirContext ctx = new InitialDirContext(env);&lt;br /&gt;          Attributes attrs = ctx.getAttributes(strUserRootDN,strFilter,new String[]{"mail"});&lt;br /&gt;&lt;br /&gt;          Attribute  attr  = attrs.get("mail");&lt;br /&gt;          System.out.println(attr.get());&lt;br /&gt;&lt;br /&gt;          ctx.close();&lt;br /&gt;    }&lt;br /&gt;    catch (Exception e)&lt;br /&gt;    {&lt;br /&gt;      e.printStackTrace();&lt;br /&gt;    }&lt;br /&gt;}&lt;/blockquote&gt;You can easily modify this piece of code to search for users in a group, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-1027712026670845161?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/1027712026670845161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=1027712026670845161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1027712026670845161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1027712026670845161'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/07/ldap-search-search-for-user-in-oracle.html' title='LDAP Search : Search for a user in Oracle Internet Directory'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-8519980440122547591</id><published>2008-07-08T03:36:00.000-07:00</published><updated>2008-07-08T04:07:07.308-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Application Server'/><title type='text'>Oracle Application Server 10.1.2 : SSO Session and Application Session</title><content type='html'>We had successfully configured an application deployed in Oracle AS 10.1.3.x  to use Oracle AS 10.1.2 SSO. We were trying to develop "single sign off" and we hit a bug.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;We just figured out that the Oracle AS 10.1.2 Session and the Java Application Session are different. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Oracle AS 10.1.2 Session is maintained by the &lt;span style="font-weight: bold;"&gt;SSO_ID&lt;/span&gt; cookie. As long as the SSO_ID cookie  is present in the browser, the Oracle AS SSO "session" is maintained. The SSO session is killed only if the SSO_ID cookie is destroyed. The SSO_ID cookie is "killed" only when we issue this dynamic directive:-&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(255, 0, 0);"&gt;response.setError(499, "Oracle SSO");&lt;/blockquote&gt;&lt;br /&gt;However, the java application session ( a HTTP Session) still lingers on. Hence, in order to clear the java application session, we need to invalidate it explicitly using this :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(255, 0, 0);"&gt;session.invalidate();&lt;/blockquote&gt;&lt;br /&gt;The moral of the story - for a true "Single Sign Off", we need to invalidate the SSO "session" and the Java Application Session.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-8519980440122547591?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/8519980440122547591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=8519980440122547591' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/8519980440122547591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/8519980440122547591'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/07/oracle-application-server-1012-sso.html' title='Oracle Application Server 10.1.2 : SSO Session and Application Session'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-5662276764399916036</id><published>2008-07-08T03:32:00.000-07:00</published><updated>2008-07-08T03:36:06.042-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Application Server'/><title type='text'>Oracle AS 10.1.2 Logout using Dynamic Directives</title><content type='html'>You can log out a user from Oracle AS 10.1.2,by using these two dynamic directives :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(0, 0, 153);"&gt;response.setHeader("Osso-Return-Url", "/Your_Application_Home_page");&lt;br /&gt;response.setError(499, "Oracle SSO");&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The first dynamic directive informs the Oracle AS Single Sign On Server about the page that needs to be displayed after logout.&lt;br /&gt;&lt;br /&gt;The second dynamic directive informs the Oracle AS Single Sign On Server that the user needs to be logged out immediately.&lt;br /&gt;&lt;br /&gt;The two dynamic directives need to be used together. If the first one is left out, the SSO Server simply redirects the user to the Oracle Application Server Home Page on which the application is deployed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-5662276764399916036?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/5662276764399916036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=5662276764399916036' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/5662276764399916036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/5662276764399916036'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/07/oracle-as-1012-logout-using-dynamic.html' title='Oracle AS 10.1.2 Logout using Dynamic Directives'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-3036180775636562672</id><published>2008-07-04T06:07:00.001-07:00</published><updated>2008-07-04T06:21:13.339-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LDAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Application Server'/><title type='text'>Oracle AS SSO : How to get important user information from SSO and OID</title><content type='html'>The Oracle AS 10.1.2 Single Sign on places useful user information in the HTTP request Headers. The partner application can access these request headers &amp;amp; get this useful information.&lt;br /&gt;&lt;br /&gt;We can use this information provided by the  Oracle AS 10.1.2 Single Sign on and query the underlying Oracle Internet Directory ( OID ) directly to obtain useful user information.&lt;br /&gt;&lt;br /&gt;The three critical assumptions that we need to make at this point are :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;1. We are able to get the &lt;span style="font-weight: bold;"&gt;OSSO-User-Dn&lt;/span&gt; value from the request header.&lt;br /&gt;&lt;br /&gt;2. We are able to connect to the OID &lt;span style="font-weight: bold;"&gt;anonymously&lt;/span&gt;, to read the user information ( so that we need to unnecessarily authenticate again. ).&lt;br /&gt;&lt;br /&gt;3. We have &lt;span style="font-weight: bold;"&gt;access &lt;/span&gt;to the underlying OID ( usually, the OID is protected by a DMZ layer &amp;amp; ports may need to be opened at the firewall ).&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;We can proceed to write a simple JNDI code ( simple garden variety code, obtained from the &lt;a href="http://java.sun.com/products/jndi/tutorial/"&gt;Sun JNDI Tutorial Trail&lt;/a&gt; ) to get important user information from OID :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;        DirContext         objRootContext    = null;&lt;br /&gt;     Hashtable          objHashtable      = null;&lt;br /&gt;     Attributes         objUserAttributes = null;&lt;br /&gt;     Attribute          objEmail          = null;&lt;br /&gt;     Attribute          objPhone          = null;&lt;br /&gt;     String             strEmail          = null;&lt;br /&gt;     String             strPhone          = null;&lt;br /&gt;&lt;br /&gt;     objHashtable                         = new Hashtable();&lt;br /&gt; &lt;br /&gt; // Let's get the User DN from Single Sign On.&lt;br /&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;// CRITICAL ASSUMPTION : We get the User DN value from the SSO.&lt;/span&gt;&lt;br /&gt; strUserDN    = request.getHeader(“Osso-User-Dn”);         &lt;br /&gt;&lt;br /&gt; // Let's connect to the OID used by Oracle AS Single Sign on&lt;br /&gt;    &lt;span style="color: rgb(255, 0, 0);"&gt;// CRITICAL ASSUMPTION : We can access the OID&lt;/span&gt; objHashtable.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");&lt;br /&gt;     objHashtable.put(Context.PROVIDER_URL,"ldap://localhost:389/");&lt;br /&gt;     objHashtable.put(Context.SECURITY_PRINCIPAL,strUserDN);&lt;br /&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;// CRITICAL ASSUMPTION : The OID should provide anonymous access.&lt;/span&gt;&lt;br /&gt;     objHashtable.put(Context.SECURITY_CREDENTIALS,"");&lt;br /&gt;&lt;br /&gt; // Let's lookup the user from the root node.&lt;br /&gt;     objRootContext = new InitialDirContext(objHashtable);    &lt;br /&gt;     objRootContext = (DirContext) objRootContext.lookup(strUserDN);&lt;br /&gt; &lt;br /&gt; // Let's get all the attributes&lt;br /&gt;     objUserAttributes = objRootContext.getAttributes("");&lt;br /&gt; &lt;br /&gt; // Let's pull out only the attributes we are interested in.&lt;br /&gt;     objEmail = objUserAttributes.get("mail");&lt;br /&gt;     objPhone = objUserAttributes.get("phone");&lt;br /&gt; &lt;br /&gt;     if(objEmail!=null)&lt;br /&gt;     {&lt;br /&gt;       strEmail = (String) objEmail.get();&lt;br /&gt;     }&lt;br /&gt; &lt;br /&gt;     if(objPhone!=null)&lt;br /&gt;     {&lt;br /&gt;       strPhone  = (String) objPhone.get();&lt;br /&gt;     }&lt;/blockquote&gt;We can now comfortably get the user information &amp;amp; use it further downstream in our applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-3036180775636562672?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/3036180775636562672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=3036180775636562672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/3036180775636562672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/3036180775636562672'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/07/oracle-as-sso-how-to-get-important-user.html' title='Oracle AS SSO : How to get important user information from SSO and OID'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-7014473677446895905</id><published>2008-07-04T05:40:00.000-07:00</published><updated>2008-07-04T05:46:18.334-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LDAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Application Server'/><title type='text'>Oracle AS SSO : How to get the User DN in a Java Application?</title><content type='html'>The Oracle AS 10.1.2 Single Sign on places useful user information in the HTTP request Headers.  The partner application can access these request headers &amp;amp; get this useful information.&lt;br /&gt;&lt;br /&gt;The authenticated user's distinguished name ( DN ) is a very important attribute. The DN can be used to pull out more information about the user from Oracle Internet Directory - e.g : the email address, the phone number, etc.&lt;br /&gt;&lt;br /&gt;You can easily get the user dn of the authenticated user from the request , by using this code snippet :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-weight: bold;"&gt;String strUserDN   = request.getHeader(“Osso-User-Dn”);&lt;/blockquote&gt;The DN can then be coupled with a simple JNDI Code to retrieve other attributes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-7014473677446895905?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/7014473677446895905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=7014473677446895905' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/7014473677446895905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/7014473677446895905'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/07/oracle-as-sso-how-to-get-user-dn-in.html' title='Oracle AS SSO : How to get the User DN in a Java Application?'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-8649852361373398411</id><published>2008-07-03T22:49:00.000-07:00</published><updated>2008-07-04T05:46:53.212-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Application Server'/><title type='text'>Oracle AS 10.1.2 SSO Failure - Unable to process request</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;                     "    &lt;span style="color: rgb(255, 0, 0);"&gt;Oracle SSO Failure - Unable to process request&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Either the requested URL was not specified in terms of a fully-qualified host name or OHS single sign-on is incorrectly configured.&lt;/span&gt;   "&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;We his this error immediately after registering a Partner Application with Oracle As 10.1.2 Single Sign on. It took sometime for us to understand the problem &amp;amp; fix it.&lt;br /&gt;&lt;br /&gt;The solution to the problem is detailed in the Metalink Note:311921.1. I'll just provide a brief summary here for people who do not have access to Oracle Metalink.&lt;br /&gt;&lt;br /&gt;The URL used to register the Partner Application with Oracle As 10.1.2 Single Sign On contains the fully qualified hostname - with the domain name.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;E.g: http://host.domain.com/osso_login_success&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;However, the URL used to test the application did not contain the fully qualified hostname - we even tried with the IP Address in the URL&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;E.g: http://host/osso_login_success&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;E.g: http://10.10.10.10/osso_login_success&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Oracle As 10.1.2 Single Sign On mandates that the URL registered as the Partner Application should be only used. We cannot use any other URL formats to access the application.&lt;br /&gt;&lt;br /&gt;We then tried with the URL:-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;E.g: http://host.domain.com/myAppContext&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;We used the URL used in the registration in our browsers &amp;amp; it worked.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-8649852361373398411?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/8649852361373398411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=8649852361373398411' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/8649852361373398411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/8649852361373398411'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/07/oracle-as-1012-sso-failure-unable-to.html' title='Oracle AS 10.1.2 SSO Failure - Unable to process request'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-5557501468491403874</id><published>2008-07-03T06:46:00.000-07:00</published><updated>2008-07-03T07:28:42.311-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Application Server'/><title type='text'>Oracle AS 10.1.3 : Use Oracle AS 10.1.2 SSO</title><content type='html'>I was trying to configure Oracle Application Server 10.1.3.x to to use Oracle Application Server 10.1.2 Single Sign On.&lt;br /&gt;&lt;br /&gt;I wanted to use Oracle Application Server 10.1.2 Single Sign On to protect an application deployed on Oracle Application Server 10.1.3.x. I checked out the available documents &amp;amp; Googled around a lot &amp;amp; collected this information. The information presented here isn't something new, but just a collection of information from various sources &amp;amp; my own experience.&lt;br /&gt;&lt;br /&gt;The steps to achieve this are quite straight forward :-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;0. Ensure that you have oss013 script in your Oracle App Server 10.1.3&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;You need to have the osso1013 script under the folder &lt;/span&gt;$ORACLE_HOME_1013/Apache/Apache/bin.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;You will have this script only if you had selected the SOA Suite Advanced Instlallation type &amp;amp; opted for "J2EE and Web server"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;1. Generate the Oracle AS Single Sign On Configuration File.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can do this by running the &lt;span style="font-weight: bold;"&gt;ssoreg &lt;/span&gt;script present in the $ORACLE_HOME_1012/sso/bin. The syntax of the command is :-&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;ssoreg.bat&lt;br /&gt;     -oracle_home_path   &lt;span style="color: rgb(255, 0, 0);"&gt;$ORACLE_HOME_1012&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;the_1012_app_server_oracle_home&gt;&lt;/the_1012_app_server_oracle_home&gt;&lt;/span&gt;&lt;br /&gt;     -config_mod_osso TRUE&lt;br /&gt;     -site_name &lt;span style="color: rgb(255, 0, 0);"&gt;Any_Name_for_your_application&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;any_name_for_the_partner_application&gt;&lt;/any_name_for_the_partner_application&gt;&lt;/span&gt;&lt;br /&gt;     -remote_midtier&lt;br /&gt;     -config_file &lt;sso_configuration_file&gt;.conf&lt;br /&gt;     -mod_osso_url &lt;span style="color: rgb(255, 0, 0);"&gt;http://your_1013_app_server_home_page:port&lt;url_for_the_1013_http_server_home_page&gt;&lt;/url_for_the_1013_http_server_home_page&gt;&lt;/span&gt;&lt;/sso_configuration_file&gt;&lt;/blockquote&gt;You can open a command window / terminal &amp;amp; execute this command from $ORACLE_HOME_1012/sso/bin.&lt;br /&gt;&lt;br /&gt;You have completed this step successfully, if you see this message on your command window / terminal :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(0, 102, 0);"&gt;Check /$ORACLE_HOME_1012/sso/log/ssoreg.log for details of this registration&lt;br /&gt;SSO registration tool finished successfully.&lt;/blockquote&gt;&lt;br /&gt;After this step, you should see &lt;span style="color: rgb(255, 0, 0);"&gt;Any_Name_for_your_application&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;any_name_for_the_partner_application&gt;_osso.conf &lt;span style="color: rgb(0, 0, 0);"&gt;at&lt;/span&gt; &lt;/any_name_for_the_partner_application&gt;&lt;/span&gt;$ORACLE_HOME/sso/bin.&lt;br /&gt;&lt;br /&gt;You should also see your application registered as a Partner Application in the Oracle SSO Administration Page at :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(0, 51, 0);"&gt;http://Your_1012_http_server_hostname&lt;host&gt;:http_port&lt;port&gt;/pls/orasso&lt;/port&gt;&lt;/host&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The key points to remember at this step are :-&lt;br /&gt;&lt;br /&gt;a. Ensure that the &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;url_for_the_1013_http_server_home_page&gt;&lt;/url_for_the_1013_http_server_home_page&gt;&lt;/span&gt;is Oracle Application Server 10.1.3 Home Page and not URL for your application&lt;br /&gt;b. Always check the generated Log File to ensure that there are no errors.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Copy the generated Oracle AS Single Sign On Configuration File to the 10.1.3 Server.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;You need to copy the generated  &lt;span style="color: rgb(255, 0, 0);"&gt;Any_Name_for_your_application&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;any_name_for_the_partner_application&gt;_osso.conf &lt;/any_name_for_the_partner_application&gt;&lt;/span&gt;to your Oracle Application Server 10.1.3 system.&lt;br /&gt;&lt;br /&gt;You can copy this to your $ORACLE_HOME_1013/Apache/Apache/bin folder.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Register the 10.1.3 Server with the 10.1.2 SSO.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;You can navigate to the $ORACLE_HOME_1013/Apache/Apache/bin folder, open a command window / terminal and execute this command:&lt;br /&gt;&lt;br /&gt;osso1013 &lt;span style="color: rgb(255, 0, 0);"&gt;Any_Name_for_your_application&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;any_name_for_the_partner_application&gt;_osso.conf&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;You have completed this step successfully if you see this message on your command window / terminal :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$ORACLE_HOME_1013/Apache/Apache/conf/httpd.conf successfully updated.&lt;br /&gt;$ORACLE_HOME_1013/Apache/Apache/conf/mod_osso.conf successfully updated.&lt;/blockquote&gt;&lt;/span&gt;&lt;/any_name_for_the_partner_application&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;4. Protect your Application&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;You can now open mod_osso.conf under $ORACLE_HOME_1013/Apache/Apache/conf and add an entry to protect your application :-&lt;br /&gt;&lt;br /&gt;&lt;location style="color: rgb(255, 0, 0);"&gt;&lt;/location&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span&gt;&lt;location style="color: rgb(255, 0, 0);"&gt;&lt;&lt;br /&gt;Location /Your_app_context&lt;br /&gt;&gt;&lt;/location&gt;&lt;/span&gt;&lt;br /&gt;require valid-user&lt;br /&gt;AuthType Basic&lt;br /&gt;&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. Restart the HTTP Server&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;That's it !&lt;br /&gt;&lt;br /&gt;You can now enter your application's URL &amp;amp; you can see the Single Sign On Page asking your to enter the credentials.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-5557501468491403874?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/5557501468491403874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=5557501468491403874' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/5557501468491403874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/5557501468491403874'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/07/oracle-as-1013-use-oracle-as-1012-sso.html' title='Oracle AS 10.1.3 : Use Oracle AS 10.1.2 SSO'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-1015891656635758749</id><published>2008-07-01T07:01:00.000-07:00</published><updated>2008-07-01T07:17:44.446-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LDAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Application Server'/><title type='text'>Oracle 10.1.3.x JavaSSO : LDAP Configuration Checklist</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;" In AS 10.1.3.x Oracle came up with the JavaSSO. Seems to be (from a high level perspective) a poor man's version of the SSO from the AS 10.1.2.x. "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;a style="font-weight: bold; font-style: italic;" href="http://achatzia.blogspot.com/2007/06/add-user-to-javasso.html"&gt;Andreas&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;I have to agree with Andreas. The JavaSSO solution bundled with the Oracle Application Server 10.1.3.x is definitely a poor man's SSO, with a few basic options &amp;amp; very little available documentation.&lt;br /&gt;&lt;br /&gt;I am with Oracle Application Server 10.1.3.x JavaSSO &amp;amp; was trying to configure it with an Oracle Internet Directory. I hit a lot of "gotchas" &amp;amp; had to spend a lot of time wading through the documentation to get it working.&lt;br /&gt;&lt;br /&gt;I guess I need a small "checklist" to summarize the steps I took to get it to work :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;1. Configure the OID as a Security Provider in the OC4J.&lt;br /&gt;2. Start the JavaSSO application ( it is switched off by default ).&lt;br /&gt;3. Configure JavaSSO to use the OID Security Provider.&lt;br /&gt;4. Configure your application's web.xml &amp;amp; list the security settings.&lt;br /&gt;4. Deploy the Application - ensure that the "Enable JavaSSO" option is checked at deploy time. You can do it later too from the administration console.&lt;br /&gt;5. Ensure that the deployed uses the OID Security Provider.&lt;br /&gt;6. Configure the deployed application as a Partner Application in JavaSSO.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I'll provide more information on some of these steps in future posts.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-1015891656635758749?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/1015891656635758749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=1015891656635758749' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1015891656635758749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1015891656635758749'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/07/oracle-1013x-javasso-ldap-configuration.html' title='Oracle 10.1.3.x JavaSSO : LDAP Configuration Checklist'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-8629712190511062926</id><published>2008-07-01T01:55:00.000-07:00</published><updated>2008-07-01T02:39:04.737-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Random'/><title type='text'>BGInfo : Caputre your Winows server's configuration</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;" BGInfo automatically displays relevant information about a Windows computer on the desktop's background, such as the computer name, IP address, service pack version, and more. "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897557.aspx"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;BGInfo &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;BGInfo is a damn cool utility for Windows ! It quickly captures your system's current configuration &amp;amp; sets the information as your Desktop background. The Tool is very easy to install &amp;amp; use.&lt;br /&gt;&lt;br /&gt;I found this tool to be very useful when you work with Server systems on Windows. I have worked on a few Projects where the Server is usually a Desktop innocently lying unused in a corner. The system is then cannibalized &amp;amp; converted into a "Server" &amp;amp; the required software installed in it. Hence, its very important to capture certain important system parameters &amp;amp; verify that the software you are about to install is certified for the existing hardware / network / OS configuration. BGInfo comes to your rescue in such situations.&lt;br /&gt;&lt;br /&gt;You can also use BGInfo as a command line utility - it ever accepts a few command line options. I found the command line option /RTF very useful. According to the BGInfo Help Information,&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;/rtf&lt;/span&gt;    Causes BGInfo to write its output text to an RTF file. All formatting information and colors are included.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;You can use it in this manner :-&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;bginfo /rtf&lt;/span&gt;:D:\myConfiguration.rtf&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;You can then navigate to the D:\ drive on your system to find a neat RTF file with all the required information.&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="margin-left: 2in; text-indent: -2in;"&gt;&lt;b&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="MsoNormal" style="margin-left: 2in; text-indent: -2in;"&gt;&lt;b&gt;&lt;span style="font-family:Arial;"&gt;Boot Time:&lt;span style=""&gt;            &lt;/span&gt;7/1/2008 10:01 AM&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 2in; text-indent: -2in;"&gt;&lt;b&gt;&lt;span style="font-family:Arial;"&gt;CPU:&lt;span style=""&gt;            &lt;/span&gt;Dual 2.00 GHz Intel Core2 Duo&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 2in; text-indent: -2in;"&gt;&lt;b&gt;&lt;span style="font-family:Arial;"&gt;Default Gateway:&lt;span style=""&gt;            &lt;/span&gt;101.178.223.184&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 2in; text-indent: -2in;"&gt;&lt;b&gt;&lt;span style="font-family:Arial;"&gt;DHCP Server:&lt;span style=""&gt;            &lt;/span&gt;101.178.223.180&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 2in; text-indent: -2in;"&gt;&lt;b&gt;&lt;span style="font-family:Arial;"&gt;DNS Server:&lt;span style=""&gt;            &lt;/span&gt;101.178.223.181&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 2in; text-indent: -2in;"&gt;&lt;b&gt;&lt;span style="font-family:Arial;"&gt;Free Space:&lt;span style=""&gt;            &lt;/span&gt;C:\ 40.12 GB NTFS, D:\ 33.89 GB NTFS&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 2in; text-indent: -2in;"&gt;&lt;b&gt;&lt;span style="font-family:Arial;"&gt;Host Name:&lt;span style=""&gt;            &lt;/span&gt;MYCOMP-LAP&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 2in; text-indent: -2in;"&gt;&lt;b&gt;&lt;span style="font-family:Arial;"&gt;IP Address:&lt;span style=""&gt;            &lt;/span&gt;101.178.223.189&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 2in; text-indent: -2in;"&gt;&lt;b&gt;&lt;span style="font-family:Arial;"&gt;Logon Domain:&lt;span style=""&gt;            &lt;/span&gt;mycomp-lap&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 2in; text-indent: -2in;"&gt;&lt;b&gt;&lt;span style="font-family:Arial;"&gt;Logon Server:&lt;span style=""&gt;            &lt;/span&gt;mycomp -lap&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 2in; text-indent: -2in;"&gt;&lt;b&gt;&lt;span style="font-family:Arial;"&gt;User Name:&lt;span style=""&gt;            &lt;/span&gt;mycomp&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="MsoNormal" style="margin-left: 2in; text-indent: -2in;"&gt;&lt;b&gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;I found &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897557.aspx"&gt;BGInfo &lt;/a&gt;to be very useful &amp;amp; use it on every Windows-based "Server" that I get my hands on !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-8629712190511062926?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/8629712190511062926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=8629712190511062926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/8629712190511062926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/8629712190511062926'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/07/bginfo-caputre-your-winows-servers.html' title='BGInfo : Caputre your Winows server&apos;s configuration'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-4089828884575843193</id><published>2008-06-26T07:25:00.000-07:00</published><updated>2008-06-26T07:33:08.951-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Random'/><title type='text'>Oracle TopLink or EclipseLink ?</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;" Oracle TopLink will be Oracle's distribution of EclipseLink included with support with all editions of our Application Server as well as for standalone usage for customers who want commercial support and maintenance."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;a style="font-weight: bold; font-style: italic;" href="http://forums.oracle.com/forums/message.jspa?messageID=2610989#2610989"&gt;- Doug Clarke&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I just read &lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=673888&amp;amp;tstart=0"&gt;this interesting thread&lt;/a&gt; on the OTN TopLink Forum. Oracle TopLink &amp;amp;will henceforth become EclipseLink.&lt;br /&gt;&lt;br /&gt;I have been having this question every since I read about the &lt;a href="http://www.eclipse.org/eclipselink/"&gt;EclipseLink&lt;/a&gt; Project. However, I got the answer today after reading the thread on the forum.&lt;br /&gt;&lt;br /&gt;The interesting part about this is that the EclipseLink project now has contributions from people with different backgrounds.  The product will be  developed  by people from different compaines &amp;amp; affiliations.&lt;br /&gt;&lt;br /&gt;I am sure this "open sourcing" of TopLink ( EclipseLink ) will take it to new levels.&lt;br /&gt;&lt;br /&gt;I wish the best for the TopLink team &amp;amp; the community !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-4089828884575843193?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/4089828884575843193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=4089828884575843193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/4089828884575843193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/4089828884575843193'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/06/oracle-toplink-or-eclipselink.html' title='Oracle TopLink or EclipseLink ?'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-6487570621666361031</id><published>2008-06-24T06:49:00.000-07:00</published><updated>2008-06-24T06:59:30.635-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apache Tiles'/><title type='text'>Apache Tiles : Error : TilesContainer not initialized</title><content type='html'>We have been trying to get a simple web application that uses &lt;a href="http://tiles.apache.org/"&gt;Apache Tiles Framework 2.0.5&lt;/a&gt; to work in JDeveloper 10.1.3 .3.0.&lt;br /&gt;&lt;br /&gt;However, we kept hitting a generic error :-&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;javax.servlet.jsp.JspException: TilesContainer not initialized&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;  at org.apache.tiles.jsp.taglib.ContainerTagSupport.doStartTag&lt;br /&gt;(ContainerTagSupport.java:72)&lt;br /&gt;  at org.apache.tiles.jsp.taglib.RenderTagSupport.doStartTag&lt;br /&gt;(RenderTagSupport.java:138)&lt;br /&gt;  at _pets._jspService(_pets.java:48)&lt;br /&gt;  [/pets.jsp]&lt;br /&gt;  at com.orionserver[Oracle Containers for J2EE 10g (10.1.3.1.1) ].http.OrionHttpJspPage.service(OrionHttpJspPage.java:59)&lt;br /&gt;  at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:462)&lt;br /&gt;  at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:598)&lt;br /&gt;  at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:522)&lt;br /&gt;  at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)&lt;/span&gt;&lt;/blockquote&gt;My friend Sriram &amp;amp; myself struggled to resolve this error &amp;amp; we were just able to resolve it.&lt;br /&gt;&lt;br /&gt;I believe the error occurs because of these three reasons :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;1. Incorrect / Missing DTD reference in the tiles-defs.xml&lt;br /&gt;2. Incorrect / Missing XML Elements in the tiles-defs.xml&lt;br /&gt;3. Missing retrotranslator-runtime-n.n.n.jar in WEB-INF/lib&lt;/blockquote&gt;I am sure there are many other reasons for the error - I have just presented a quick checklist of the problems that we encountered.&lt;br /&gt;&lt;br /&gt;The third option is still a mystery to us. I mean, why do we need to use the &lt;a href="http://retrotranslator.sourceforge.net/#what"&gt;RetroTranslator Library&lt;/a&gt; when we are using JDK 1.5 ?&lt;br /&gt;&lt;br /&gt;We are still trying to figure that one out. I'll post an update if we unravel this last mystery.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-6487570621666361031?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/6487570621666361031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=6487570621666361031' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/6487570621666361031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/6487570621666361031'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/06/apache-tiles-error-tilescontainer-not.html' title='Apache Tiles : Error : TilesContainer not initialized'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-7949719508952468821</id><published>2008-06-23T23:40:00.001-07:00</published><updated>2008-06-23T23:50:20.176-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LDAP'/><title type='text'>Apache Directory Server : Default Settings</title><content type='html'>"  &lt;span style="font-weight: bold; font-style: italic;"&gt;We strive to increase LDAP awareness, comfort and adoption to bring forth what we call the Modern LDAP Renaissance. &lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;- &lt;a href="http://directory.apache.org/community%26resources/ldap-renaissance.html"&gt;Apache Directory Server : Vision&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I just downloaded and installed the &lt;a href="http://directory.apache.org/"&gt;Apache Directory Server&lt;/a&gt;. It took less than 5 minutes to install the server &amp;amp; start it.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://directory.apache.org/"&gt;Apache Directory Server&lt;/a&gt; is one of the best LDAP Servers that I have used, during prototyping stages. It's very easy to install &amp;amp; very fast in operation.&lt;br /&gt;&lt;br /&gt;However, I did observe in a couple of customer engagements that I had to look a bit through the documentation to get a list of the default configuration. I just want to list the default configuration that I use frequently here, to save a bit of time :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Defalut Host                  : localhost&lt;br /&gt;Default Port                   : 10389&lt;br /&gt;Admin user                    : uid=admin, ou=system&lt;br /&gt;Admin pass                    : secret&lt;br /&gt;Base  DN                         : ou=system&lt;br /&gt;Initial context Factory : com.sun.jndi.ldap.LdapCtxFactory&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Overall, the Apache Directory Project is simply too good !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-7949719508952468821?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/7949719508952468821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=7949719508952468821' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/7949719508952468821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/7949719508952468821'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/06/apache-directory-server-default.html' title='Apache Directory Server : Default Settings'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-471774849417921198</id><published>2008-06-23T22:37:00.000-07:00</published><updated>2008-06-23T22:55:21.827-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Weblogic Server'/><title type='text'>WebLogic Server 10 : Deployment : OutOfMemory Error</title><content type='html'>I created a connection to WebLogic Server 10 in my JDeveloper 10.1.3. Now, I am using this connection to deploy a simple Web Application that contains a single JSP.&lt;br /&gt;&lt;br /&gt;However, I keep hitting this bug frequently :-&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;   &lt;span style="color: rgb(255, 0, 0);"&gt; [BasicOperation.deriveAppName():140] : appname established as: webapp1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    weblogic.deploy.api.tools.deployer.DeployerException: Java heap space&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    at&lt;/span&gt; weblogic.deploy.api.tools.deployer.Jsr88Operation.postExecute(Jsr88Operation.java:563)&lt;br /&gt;    at weblogic.deploy.api.tools.deployer.DeployOperation.execute(DeployOperation.java:48)&lt;br /&gt;    at weblogic.deploy.api.tools.deployer.Deployer.perform(Deployer.java:139)&lt;br /&gt;    at weblogic.deploy.api.tools.deployer.Deployer.runBody(Deployer.java:88)&lt;br /&gt;    at weblogic.utils.compiler.Tool.run(Tool.java:158)&lt;br /&gt;    at weblogic.utils.compiler.Tool.run(Tool.java:115)&lt;br /&gt;    at weblogic.Deployer.run(Deployer.java:70)&lt;br /&gt;    at weblogic.Deployer.main(Deployer.java:54)&lt;br /&gt;    Caused by: java.lang.OutOfMemoryError: Java heap space&lt;br /&gt;    [ServerConnectionImpl.close():334] : Closing DM connection&lt;br /&gt;    [ServerConnectionImpl.close():354] : Unregistered all listeners&lt;br /&gt;    [ServerConnectionImpl.closeJMX():374] : Closed JMX connection&lt;br /&gt;    [ServerConnectionImpl.closeJMX():386] : Closed Runtime JMX connection&lt;br /&gt;    [ServerConnectionImpl.closeJMX():398] : Closed Edit JMX connection&lt;br /&gt;    **** weblogic.deploy returned with non-zero exit status: 1&lt;br /&gt;    **** weblogic.deploy returned with non-zero exit status: 1&lt;br /&gt;    Elapsed time for deployment: 46 seconds&lt;br /&gt;    #### Deployment incomplete. #### Jun 20, 2008 5:53:41 PM&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The error clearly tells that the Java process used for the deployment is out of memory &amp;amp; is unable to deploy the application.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;I have to increase the heap size of the java process that is used to deploy the application in JDeveloper.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I looked at the deployment profile for my application &amp;amp; noticed this command for WebLogic 9.x :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;${java}  &lt;span style="color: rgb(255, 0, 0);"&gt;${jvm.max.heap.size}&lt;/span&gt;&lt;br /&gt;-classpath ${weblogic.jar} weblogic.Deployer&lt;br /&gt;-adminurl t3://${hostname}:${port}&lt;br /&gt;-user ${username} -password ${password}&lt;br /&gt;-debug -verbose -deploy -upload&lt;br /&gt;-source ${ear.file} -name ${j2ee.app.name}&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;However, at the time of deployment, I noticed that the heap size was not used for the Java process :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;javaw.exe -classpath weblogic.jar weblogic.Deployer -adminurl t3://localhost:7001 -user weblogic -password **** -debug -verbose -deploy -upload -source webapp1.ear -name webapp1&lt;br /&gt;&lt;br /&gt;weblogic.Deployer invoked with options:  -adminurl t3://localhost:7001 -user weblogic -debug -verbose -deploy -upload -source webapp1.ear -name webapp1&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Hence, I hardcoded the heap size in the command in the Deployment Settings like this :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;${java} &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;-Xms256m -Xmx512m&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;-classpath ${weblogic.jar} weblogic.Deployer&lt;br /&gt;-adminurl t3://${hostname}:${port}&lt;br /&gt;-user ${username} -password ${password}&lt;br /&gt;-debug -verbose -deploy -upload&lt;br /&gt;-source ${ear.file} -name ${j2ee.app.name}&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;At the time of depoyment, I noticed that the heap size as now being used correctly :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;javaw.exe &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;-Xms256m -Xmx512m&lt;/span&gt; -classpath weblogic.jar weblogic.Deployer -adminurl t3://localhost:7001 -user weblogic -password **** -debug -verbose -deploy -upload -source webapp1.ear -name webapp1&lt;br /&gt;&lt;br /&gt;weblogic.Deployer invoked with options:  -adminurl t3://localhost:7001 -user weblogic -debug -verbose -deploy -upload -source webapp1.ear -name webapp1&lt;/blockquote&gt;&lt;br /&gt;After making this change, I was able to get a clean deployment from my JDeveloper 10.1.3.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;[BasicOperation.execute():425] : Initiating deploy operation for app, webapp1, on targets:&lt;br /&gt;Task 2 initiated: [Deployer:149026]deploy application webapp1 on examplesServer.&lt;br /&gt;Task 2 completed: [Deployer:149026]deploy application webapp1 on examplesServer.&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;Target state: deploy completed on Server examplesServer&lt;/span&gt;&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;[ServerConnectionImpl.close():354] : Unregistered all listeners&lt;br /&gt;[ServerConnectionImpl.closeJMX():374] : Closed JMX connection&lt;br /&gt;[ServerConnectionImpl.closeJMX():386] : Closed Runtime JMX connection&lt;br /&gt;[ServerConnectionImpl.closeJMX():398] : Closed Edit JMX connection&lt;br /&gt;Elapsed time for deployment:  1 minute, 45 seconds&lt;br /&gt;----  Deployment finished.  ----    Jun 24, 2008 11:23:54 AM&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-471774849417921198?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/471774849417921198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=471774849417921198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/471774849417921198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/471774849417921198'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/06/weblogic-server-10-deployment_23.html' title='WebLogic Server 10 : Deployment : OutOfMemory Error'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-7400965172742038221</id><published>2008-06-20T05:22:00.000-07:00</published><updated>2008-06-23T22:52:47.001-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Weblogic Server'/><title type='text'>WebLogic Server 10 : Deployment : Increase Server JVM Heap Space</title><content type='html'>I had to increase the WebLogic Server's JVM Memory Arguments to circument a problem.&lt;br /&gt;&lt;br /&gt;The JVM Memory arguments are in the file " setDomainEnv.cmd " in the folder  $WEBLOGIC_HOME\wlserver_10.0\samples\domains\wl_server\bin\&lt;br /&gt;&lt;br /&gt;You can open the file in any Text Editor and scroll down to this line :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;set MEM_ARGS=-Xms256m -Xmx512m&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;You can alter the memory arguments to solve the problem. The combination that worked for me is tis :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;set MEM_ARGS=-512 -Xmx512m&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-7400965172742038221?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/7400965172742038221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=7400965172742038221' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/7400965172742038221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/7400965172742038221'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/06/weblogic-server-10-deployment.html' title='WebLogic Server 10 : Deployment : Increase Server JVM Heap Space'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-4169330862402314344</id><published>2008-06-20T04:23:00.000-07:00</published><updated>2008-06-20T05:55:17.981-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Weblogic Server'/><title type='text'>WebLogic Server 10 : is the HTTP server a weblogic Server</title><content type='html'>I just hit a CommunicationException in my JDeveloper 10.1.3 :-&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"&lt;br /&gt;&lt;span&gt;Caused by: javax.naming.CommunicationException [Root exception is&lt;/span&gt;&lt;span&gt; java.net.ConnectException: http://localhost:7001: Destination unreachable; nested exception is: &lt;/span&gt; &lt;span&gt;    java.net.ProtocolException: Tunneling result unspecified - is the HTTP server at host: 'localhost' and port: '7001' a WebLogic Server?; No available router to destination]&lt;/span&gt; &lt;span&gt;    at weblogic.jndi.internal.ExceptionTranslator.toNamingException(ExceptionTranslator.java:40)&lt;/span&gt; &lt;span&gt;    at weblogic.jndi.WLInitialContextFactoryDelegate.toNamingException(WLInitialContextFactoryDelegate.java:773)&lt;/span&gt; &lt;span&gt;    at&lt;/span&gt;&lt;span&gt; weblogic.jndi.WLInitialContextFactoryDelegate.getInitialContext(WLInitialContextFactoryDelegate.java:363)&lt;/span&gt; &lt;span&gt;    at weblogic.jndi.Environment.getContext(Environment.java:307)&lt;/span&gt; &lt;span&gt;    at weblogic.jndi.Environment.getContext(Environment.java:277)&lt;/span&gt; &lt;span&gt;    at weblogic.jndi.Environment.createInitialContext(Environment.java:200)&lt;/span&gt; &lt;span&gt;    at weblogic.jndi.Environment.getInitialContext(Environment.java:184)&lt;/span&gt; &lt;span&gt;    at weblogic.jndi.Environment.getInitialContext(Environment.java:162)&lt;/span&gt; &lt;span&gt;    at weblogic.deploy.api.spi.deploy.internal.ServerConnectionImpl.getContext(ServerConnectionImpl.java:330)&lt;/span&gt; &lt;span&gt;    at weblogic.deploy.api.spi.deploy.internal.ServerConnectionImpl.getEnvironment(ServerConnectionImpl.java:302)&lt;/span&gt; &lt;span&gt;    at&lt;/span&gt;&lt;span&gt; weblogic.deploy.api.spi.deploy.internal.ServerConnectionImpl.init(ServerConnectionImpl.java:141)&lt;/span&gt; &lt;span&gt;    ... 11 more&lt;/span&gt;&lt;br /&gt;"&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I was trying to deploy an application from JDeveloper 10.1.3 to WebLogic Server 10. First, I created a connection to the WebLogic Server 10 using these connection settings :-&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_7Y-ZaWIMfHQ/SFuTs47oC1I/AAAAAAAAACk/wFF6bwkdnMY/s1600-h/Connection_Parameters.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_7Y-ZaWIMfHQ/SFuTs47oC1I/AAAAAAAAACk/wFF6bwkdnMY/s200/Connection_Parameters.JPG" alt="" id="BLOGGER_PHOTO_ID_5213923393017482066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I then created a deployment profile for my Web Application. I right-clicked on the Deployment Profile and selected the option to directly deploy to my WebLogic Server. However, I kept getting this error.&lt;br /&gt;&lt;br /&gt;I did some Googling &amp;amp; came across this post on the OTN JDeveloper Forums :-&lt;br /&gt;&lt;br /&gt;http://forums.oracle.com/forums/thread.jspa?messageID=2134174&amp;amp;#2134174&lt;br /&gt;&lt;br /&gt;To summarize Deepak's solution from the post,&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"&lt;br /&gt;&lt;br /&gt;&lt;span&gt;JDeveloper 10.1.3.3 configures a connection with WebLogic server with the t3 protocol.The deployment profile has the connection protocol specified as http. Modify the connection protocol in the deployment profile. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;1. In the Deployment Profile Properties window select the Platform&gt;WebLogic 9.x node. &lt;/span&gt;&lt;br /&gt;&lt;span&gt;2. In the WebLogic 9.x Deploy command modify: &lt;/span&gt;&lt;br /&gt;&lt;pre&gt;-adminurl http:&lt;span style="color:darkgreen;"&gt;//${hostname}:${port} &lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;span&gt;to &lt;/span&gt;&lt;br /&gt;&lt;pre&gt;-adminurl t3:&lt;span style="color:darkgreen;"&gt;//${hostname}:${port} &lt;/span&gt; &lt;/pre&gt;                     "&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I made this change in my Deployment Profile &amp;amp; it worked immediately.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-4169330862402314344?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/4169330862402314344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=4169330862402314344' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/4169330862402314344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/4169330862402314344'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/06/weblogic-server-10-is-http-server.html' title='WebLogic Server 10 : is the HTTP server a weblogic Server'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_7Y-ZaWIMfHQ/SFuTs47oC1I/AAAAAAAAACk/wFF6bwkdnMY/s72-c/Connection_Parameters.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-3735116505950470491</id><published>2008-06-20T04:14:00.001-07:00</published><updated>2008-06-20T04:17:46.508-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Weblogic Server'/><title type='text'>WebLogic Server 10 : JDeveloper : Cannot instantiate class: weblogic.jndi.WLInitialContextFactory</title><content type='html'>"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cannot instantiate class: weblogic.jndi.WLInitialContextFactory&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"&lt;br /&gt;&lt;br /&gt;I was trying to create a connection to WebLogic Server 10 from JDeveloper 10.1.3 &amp;amp; I encountered this error. The Connection Wizard threw this error when I wanted to test the connection.&lt;br /&gt;&lt;br /&gt;The problem is simple - JDeveloper cannot find the class WLInitialContextFactory required to connect to my WebLogic Server.&lt;br /&gt;&lt;br /&gt;The class is present in the JAR File &lt;span style="font-weight: bold;"&gt;weblogic.jar&lt;/span&gt;. The JAR file is present in the folder &lt;span style="font-weight: bold;"&gt;$WEBLOGIC_HOME/wlserver_10.0\server\lib&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;I simply copied the weblogic.jar file from $WEBLOGIC_HOME\wlserver_10.0\server\lib and put it in JDEVELOPER_HOME\jdev\lib\ext&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;JDeveloper was able to find the JAR File &amp;amp; proceed with the connection without any hitch.&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-3735116505950470491?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/3735116505950470491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=3735116505950470491' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/3735116505950470491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/3735116505950470491'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/06/weblogic-server-10-jdeveloper-cannot.html' title='WebLogic Server 10 : JDeveloper : Cannot instantiate class: weblogic.jndi.WLInitialContextFactory'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-6908466740063237747</id><published>2008-06-20T04:06:00.000-07:00</published><updated>2008-06-20T04:13:19.815-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Weblogic Server'/><title type='text'>WebLogic Server 10 : Error 403--Forbidden</title><content type='html'>"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Error 403--Forbidden&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;10.4.4 403 Forbidden&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;The server understood the request, but is refusing to fulfill it. Authorization will not help and the request SHOULD NOT be repeated. If the request method was not HEAD and the server wishes to make public why the request has not been fulfilled, it SHOULD describe the reason for the refusal in the entity. This status code is commonly used when the server does not wish to reveal exactly why the request has been refused, or when no other response is applicable.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"&lt;br /&gt;&lt;br /&gt;I hit this error immediately after deploying and starting the application. The error is quire eloquent, but in my humble opinion, is not very clear about the reasons for the error.&lt;br /&gt;&lt;br /&gt;I clicked on the "Testing" link for the application &amp;amp; simply clicked on the "Test Point" URL mentioned on the page :-&lt;br /&gt;&lt;br /&gt;&lt;span class="bea-portal-theme-wlsworkspace"&gt;&lt;/span&gt;&lt;a href="http://10.177.226.140:7001/webapp1" target="testwindow"&gt;http://10.177.226.140:7001/webapp1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I worked on this for sometime &amp;amp; then it hit me :-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;I have to supply the complete URL for my JSP.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I tried the complete URL &amp;amp; it worked.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://10.177.226.140:7001/webapp1" target="testwindow"&gt;http://10.177.226.140:7001/webapp1&lt;/a&gt;/First.jsp&lt;br /&gt;&lt;br /&gt;I am just posting this for future reference to newcomers like me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-6908466740063237747?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/6908466740063237747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=6908466740063237747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/6908466740063237747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/6908466740063237747'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/06/weblogic-server-10-error-403-forbidden.html' title='WebLogic Server 10 : Error 403--Forbidden'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-6061981217929145803</id><published>2008-06-20T04:01:00.000-07:00</published><updated>2008-06-20T04:05:58.358-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Weblogic Server'/><title type='text'>WebLogic Server 10 : 503--Service Unavailable</title><content type='html'>"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Error 503--Service Unavailable&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;10.5.4 503 Service Unavailable&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;The server is currently unable to handle the request due to a temporary overloading or maintenance of the server. The implication is that this is a temporary condition which will be alleviated after some delay. If known, the length of the delay may be indicated in a Retry-After header. If no Retry-After is given, the client SHOULD handle the response as it would for a 500 response.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;    Note: The existence of the 503 status code does not imply that a server must use it when becoming overloaded. Some servers may wish to simply refuse the connection.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"&lt;br /&gt;&lt;br /&gt;I hit this error after deploying an application &amp;amp; trying out the URL for my JSP.&lt;br /&gt;&lt;br /&gt;I have primarily worked on OC4J &amp;amp; expected that the steps would be pretty much the same. However, I hit this bug &amp;amp; was scracthing my head for quite sometime - until I realized it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Application has to be started after the deployment.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;The application is not started by default ( as in OC4J ) &amp;amp; thus, was unavailable to service the requests.&lt;br /&gt;&lt;br /&gt;I am just posting this for future reference to newcomers like me.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-6061981217929145803?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/6061981217929145803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=6061981217929145803' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/6061981217929145803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/6061981217929145803'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/06/weblogic-server-10-503-service.html' title='WebLogic Server 10 : 503--Service Unavailable'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-1720911366769399675</id><published>2008-06-20T03:51:00.000-07:00</published><updated>2008-06-20T04:18:09.332-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Weblogic Server'/><title type='text'>WebLogic Server 10 : Authentication Denied</title><content type='html'>"&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Authentication Denied&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;      &lt;span style="font-weight: bold; font-style: italic;"&gt;The username or password has been refused by WebLogic Server. Please try again.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"&lt;br /&gt;I just installed the WebLogic Server 10 &amp;amp; was excited to see the Welcome Screen pop-up on my browser. I then clicked on the "Start the Administration Console" button &amp;amp; the login page popped up.&lt;br /&gt;&lt;br /&gt;I tried a couple of usernames and passwords, but I kept getting this error.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_7Y-ZaWIMfHQ/SFuNgq29PzI/AAAAAAAAACc/fdeT6oOvhI0/s1600-h/weblogic_first_error.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_7Y-ZaWIMfHQ/SFuNgq29PzI/AAAAAAAAACc/fdeT6oOvhI0/s200/weblogic_first_error.JPG" alt="" id="BLOGGER_PHOTO_ID_5213916586011606834" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I finally tried this combination &amp;amp; it clicked :-&lt;br /&gt;&lt;br /&gt;UserName : &lt;span style="font-weight: bold;"&gt;weblogic&lt;/span&gt;&lt;br /&gt;Password   : &lt;span style="font-weight: bold;"&gt;weblogic&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hurray ! I got into the WebLogic Server Administration Console.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-1720911366769399675?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/1720911366769399675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=1720911366769399675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1720911366769399675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1720911366769399675'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/06/weblogic-server-10-authentication.html' title='WebLogic Server 10 : Authentication Denied'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_7Y-ZaWIMfHQ/SFuNgq29PzI/AAAAAAAAACc/fdeT6oOvhI0/s72-c/weblogic_first_error.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-1125350804989057768</id><published>2008-06-05T22:49:00.000-07:00</published><updated>2008-06-05T23:39:55.762-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Random'/><title type='text'>Problems in Configuration and Logging</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;"    ...........&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;    ...........&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;    Lock-Nah: The Book Of The Dead gives life.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;    Meela: And The Book Of The Living takes life away. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;    ...........&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;    ...........&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;a style="font-weight: bold; font-style: italic;" href="http://www.themummy.com/"&gt;The Mummy Returns &lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The dialogue between Lock-Nah and Meelah, from the movie &lt;a href="http://www.themummy.com/"&gt;The Mummy Returns&lt;/a&gt; sums up the state of the configuration files used in a software system. Often, I have observed that the most well-intentioned configuration files either end up as a "Book of the Dead" or as a "Book of the Living".&lt;br /&gt;&lt;br /&gt;Configuration &amp;amp; Logging have always been the bone of contention &amp;amp; the heart of any discussion on software architecture. The questions always come up &amp;amp; hang in the air :-&lt;br /&gt;&lt;br /&gt;- How will I configure that ?&lt;br /&gt;- Where is the metadata for this ?&lt;br /&gt;- How do I log this ?&lt;br /&gt;- Can we use a universal format for the all the logging ?&lt;br /&gt;- Where do I log the Exception Stack Traces ?&lt;br /&gt;- .....&lt;br /&gt;- .....&lt;br /&gt;- .....&lt;br /&gt;&lt;br /&gt;I just chanced upon &lt;a href="http://www.addsimplicity.com/adding_simplicity_an_engi/2007/10/what-metadata.html"&gt;this Blog entry&lt;/a&gt; by &lt;a href="http://www.addsimplicity.com/about.html"&gt;Dan Pritchett&lt;/a&gt; . The article talks about Metadata &amp;amp; the various decisions that need to be made while using Metadata. The article is nicely organized &amp;amp; well written.&lt;br /&gt;&lt;br /&gt;Dan talks about two aspects of Metadata - Configuration &amp;amp; Telemetry ( Logging, actually ).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Configuration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dan has clearly articulated the problem associated with distributed configurations, synchronizing between the configurations, etc. I have faced these issues many times in the past, especially with systems that contain lots of configuration files.&lt;br /&gt;&lt;br /&gt;The key to get the system operational is to "turn the knobs" in the correct combination. Often, this kind of configuration mechanism falls into the realm of black magic : often, only a seasoned veteran master-architect can cast the correct arcane spell to tame the beast. The multitude of configuration files simply lay all the precise documentation to waste. The problem becomes even more complex when the system is replicated accross multiple servers : the arguments now move into a new space - how to maintain a "common" configuration &amp;amp; extend it to a specific "granular" configuration required by a single server.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Telemetry&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dan also touches upon the topic of Telemetry ( a term I haven't heard since my college days ! ). How do you measure / monitor the health of a system remotely ? Well, the only source of this information is the log files. The problem is simple - consider a System X that has parts A, B and C, &amp;amp; these parts emit log information in specific formats. How do you aggregate the information from these three different formats into a single format that can show up in a remote dashboard ?&lt;br /&gt;&lt;br /&gt;I think these questions must be addressed very early in a Project. The questions raised by this article are extremely important &amp;amp; could save countless hours of effort involved during maintanence &amp;amp; debugging.&lt;br /&gt;&lt;br /&gt;Overall, a very good article from Dan Pritchett. It's a must read for people who earn their pay by designing software systems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-1125350804989057768?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/1125350804989057768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=1125350804989057768' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1125350804989057768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1125350804989057768'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/06/problems-in-configuration-and-logging.html' title='Problems in Configuration and Logging'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-8907225731898189645</id><published>2008-04-08T04:17:00.000-07:00</published><updated>2008-04-08T07:14:07.441-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Random'/><title type='text'>Thinking Of Mathematics</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;"The world is too full of factors to discourage students who cannot see from pursuing a career in science and math; hopefully this article can serve to at least minimally offset that imbalance."&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;                - &lt;a href="http://en.wikipedia.org/wiki/T._V._Raman"&gt;T. V. Raman&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I was reading "&lt;a href="http://emacspeak.sourceforge.net/raman/publications/thinking-of-math/thinking-of-math.html"&gt;Thinking Of Mathematics — An Essay On Eyes-free Computing&lt;/a&gt;" [ &lt;a href="http://emacspeak.sourceforge.net/raman/publications/thinking-of-math/thinking-of-math.pdf"&gt;PDF version&lt;/a&gt;  ] &amp;amp; found it  inspiring. &lt;a href="http://emacspeak.sourceforge.net/raman/"&gt;T. V. Raman'&lt;/a&gt;s analysis of "Eyes-free mathematics" &amp;amp; his application of &lt;a href="http://en.wikipedia.org/wiki/Hermann_von_Helmholtz"&gt;Herman Helmholtz&lt;/a&gt;'s theories to attempt &amp;amp; understand his own creative thinking are excellent.&lt;br /&gt;&lt;br /&gt;T.V Raman was unable to see since the age of 14. He narrates his thought process on problem solving, modeled on Herman Helmholtz's three stages of creativity: saturation, incubation and illumination. He shares his experiences on solving interesting problems like a Mental Calendar, Solving The Rubik’s Cube, etc.&lt;br /&gt;&lt;br /&gt;The essay is truly a wonderful &amp;amp; inspiring read.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-8907225731898189645?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/8907225731898189645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=8907225731898189645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/8907225731898189645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/8907225731898189645'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/04/thinking-of-mathematics.html' title='Thinking Of Mathematics'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-6032826523734628631</id><published>2008-04-02T03:10:00.000-07:00</published><updated>2008-04-02T03:24:44.861-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>ORA-01940: cannot DROP a user that is currently logged in</title><content type='html'>&lt;span style="font-weight: bold;"&gt;" &lt;span style="color: rgb(255, 0, 0);"&gt;ORA-01940&lt;/span&gt;: cannot DROP a user that is currently logged in "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;ORA-01940&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;We were trying to drop a user ( schema ) in our local Oracle Database &amp;amp; we suddenly hit the ORA-01940 error.&lt;br /&gt;&lt;br /&gt;We closed all the SQL Clients ( Oracle SQL Developer, SQL* Plus, TOAD ) that we were using, but still the error persisted. We were quite flummoxed - until, we googled and landed on &lt;a href="http://www.dba-oracle.com/t_ora_01940_cannot_drop_user.htm"&gt;this article&lt;/a&gt; from &lt;a href="http://www.dba-oracle.com/"&gt;Burleson Consulting&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We followed the advice in the article &amp;amp; quitely killed the "stale" sessions. We could then drop the schema and recreate it.&lt;br /&gt;&lt;br /&gt;I have always admired the articles from Burleson Consulting &amp;amp; found the explanation of the ORA-01940 error very informative.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-6032826523734628631?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/6032826523734628631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=6032826523734628631' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/6032826523734628631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/6032826523734628631'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/04/ora-01940-cannot-drop-user-that-is.html' title='ORA-01940: cannot DROP a user that is currently logged in'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-705296757702199914</id><published>2008-04-01T23:31:00.000-07:00</published><updated>2008-04-01T23:41:02.659-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Groovy'/><title type='text'>Groovy test ride</title><content type='html'>" &lt;span style="font-weight: bold; font-style: italic;"&gt;Groovy is an agile and dynamic language for the Java Virtual Machine&lt;/span&gt; "&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;                      &lt;span style="font-style: italic;"&gt;  - &lt;a href="http://groovy.codehaus.org/"&gt;Groovy Home Page&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I have been following the Java scripting languages landscape for quite sometime now. I am simply overwhelmed with the sheer number of scriprting languages that can be run off the JVM. I was keenly following one such scripting language with interest - Groovy. I finally decided to take Groovy for a test ride, after reading a lot of interesting stuff on blogs &amp;amp; articles. I decided to try a simple example &amp;amp; see what I can learn from my experiment.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What's the Scenario ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have two database tables - EMP ( to keep details of employees ) and DEPT ( to keep details of departments ). I want to pull out details of an employee from the EMP ( Employee Number, Employee Name, Salary ) and DEPT ( Department Name ) tables and store it in another table named EMP_REPORT ( Employee Number, Employee Name, Salary, Department Name )&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What am I going to use ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Microsoft Windows XP [Version 5.1]&lt;/li&gt;&lt;li&gt;Java 1.5&lt;/li&gt;&lt;li&gt;Groovy 1.5.4&lt;/li&gt;&lt;li&gt;Oracle Database 10g Enterprise Edition Release 10.1.0.4.2&lt;/li&gt;&lt;li&gt;Oracle SQL Developer 1.2.1&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_7Y-ZaWIMfHQ/R_MopfHwMoI/AAAAAAAAACE/4LVEKNERZEg/s1600-h/Groovy_pic.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp2.blogger.com/_7Y-ZaWIMfHQ/R_MopfHwMoI/AAAAAAAAACE/4LVEKNERZEg/s200/Groovy_pic.JPG" alt="" id="BLOGGER_PHOTO_ID_5184532289227338370" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;What are the logical steps ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Connect : to the Database.&lt;br /&gt;2. Query   : the tables EMP and DEPT using a SQL SELECT statement.&lt;br /&gt;3. Results : get the Result Ser&lt;br /&gt;3. Iterate : the result set and get each record.&lt;br /&gt;4. Add       : each record to the EMP_RECORDS table.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What about installation ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The installation procedure for Groovy is very easy - download &amp;amp; unzip. If you have set the JAVA_HOME environment variable to point to your JDK installation directory, you can just proceed to Groovy's /bin directory and double click on GroovyConsole.bat. You can see a simple IDE that allows you to execute your Groovy code. You can use CTRL + R to execute the code and CTRL+W to clear the output window.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;... and...What does the Groovy code look like ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;import groovy.sql.Sql&lt;br /&gt;import groovy.xml.MarkupBuilder&lt;br /&gt;&lt;br /&gt;def source = Sql.newInstance(&lt;br /&gt;                     "jdbc:oracle:thin:user/password@host:port:sid",&lt;br /&gt;                     "oracle.jdbc.driver.OracleDriver"&lt;br /&gt;                 )&lt;br /&gt;&lt;br /&gt;def target = Sql.newInstance(&lt;br /&gt;                     "jdbc:oracle:thin:user/password@host:port:sid",&lt;br /&gt;                     "oracle.jdbc.driver.OracleDriver"&lt;br /&gt;                 )&lt;br /&gt;&lt;br /&gt;def sourceEmployees = source.dataSet("EMP E,DEPT D WHERE E.DEPTNO=D.DEPTNO")&lt;br /&gt;def targetEmployees = target.dataSet("EMP_REPORT")&lt;br /&gt;&lt;br /&gt;sourceEmployees.each&lt;br /&gt;{&lt;br /&gt;   targetEmployees.add( ID : it.empno , NAME : it.ename , SAlARY : it.sal , DEPARTMENT : it.dname )&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My thoughts ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well, that was quite easy ! It took less that 10 minutes for me to setup Groovy &amp;amp; try the code. I only faced one problem - Groovy complained that it couldn't find the Database Driver class oracle.jdbc.driver.OracleDriver. I simply put ojdbc14.jar into my JAVA_HOME/jre/ext/lib folder as a workaround.&lt;br /&gt;&lt;br /&gt;I found Groovy to be simple &amp;amp; much closer to Java than the other scripting languages touted for the JVM. I think I'll probably use it for prototyping something in Java/JEE in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-705296757702199914?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/705296757702199914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=705296757702199914' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/705296757702199914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/705296757702199914'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/04/groovy-test-ride.html' title='Groovy test ride'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_7Y-ZaWIMfHQ/R_MopfHwMoI/AAAAAAAAACE/4LVEKNERZEg/s72-c/Groovy_pic.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-7027098161691035750</id><published>2008-03-31T02:20:00.000-07:00</published><updated>2008-03-31T02:37:52.045-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Random'/><title type='text'>Asking questions on Forums</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;“The important thing is never to stop questioning.”&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;Albert Einstein&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I was reading &lt;span id="blog-title"&gt;&lt;/span&gt;&lt;a href="http://blogs.oracle.com/shay/2007/03/02"&gt;Shay Shmeltzer's&lt;/a&gt; and &lt;a href="http://hrivera99.blogspot.com/2008/01/forums-code-of-conduct.html"&gt;Hector Rivera Madrid's&lt;/a&gt; post on the generals rules on posting on User Forums. I don't want to summarize a list of my own as these gentlemen have already  prepared a wonderful list of do's and don'ts.&lt;br /&gt;&lt;br /&gt;I still have a bookmark to an old article - &lt;a href="http://www.catb.org/%7Eesr/faqs/smart-questions.html"&gt;How to ask questions the smart way.&lt;/a&gt; The article is still being revised and maintained.&lt;br /&gt;&lt;br /&gt;To summarize Shay's intentions :-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;" I think there are some things that posters to the forums can do to make the whole experience of using the forums a lot better.&lt;/span&gt; "&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-7027098161691035750?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/7027098161691035750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=7027098161691035750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/7027098161691035750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/7027098161691035750'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/03/asking-questions-on-forums.html' title='Asking questions on Forums'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-1201308042791297806</id><published>2008-03-21T05:39:00.000-07:00</published><updated>2008-03-21T05:50:53.243-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Random'/><title type='text'>Holi - 2008</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_7Y-ZaWIMfHQ/R-OtU_HwMmI/AAAAAAAAABQ/WWg100cw00w/s1600-h/Sandeep.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp0.blogger.com/_7Y-ZaWIMfHQ/R-OtU_HwMmI/AAAAAAAAABQ/WWg100cw00w/s200/Sandeep.jpg" alt="" id="BLOGGER_PHOTO_ID_5180174572459143778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It's &lt;a href="http://en.wikipedia.org/wiki/Holi"&gt;Holi&lt;/a&gt; ! The festival of colors ! It's time to get drenched in a variety of colors !&lt;br /&gt;&lt;br /&gt;Originally, Holi started out as a festival to celebrate good harvests. Now, it's more of a festival to have a good time :).&lt;br /&gt;&lt;br /&gt;The day also marks &lt;a href="http://en.wikipedia.org/wiki/Good_Friday"&gt;Good Friday.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I am sitting at office trying to complete a pending task &amp;amp; suddenly, my colleagues smeared colors on my face. I am totally covered in colors &amp;amp; my laptop is sharing the same fate.&lt;br /&gt;&lt;br /&gt;Well, I am looking forward to more fun &amp;amp; frolic during the weekend !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-1201308042791297806?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/1201308042791297806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=1201308042791297806' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1201308042791297806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1201308042791297806'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/03/holi-2008.html' title='Holi - 2008'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_7Y-ZaWIMfHQ/R-OtU_HwMmI/AAAAAAAAABQ/WWg100cw00w/s72-c/Sandeep.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-8361475367873764104</id><published>2008-03-21T03:30:00.000-07:00</published><updated>2008-03-21T03:32:47.000-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inspirational Stories'/><title type='text'>Self Appraisal</title><content type='html'>Another "gem" that I received in today's mail - thanks &lt;a href="http://veejai24.blogspot.com/"&gt;Vijay &lt;/a&gt;!:-&lt;br /&gt;&lt;br /&gt;A little boy went into a drug store, reached for a soda carton and pulled it over to the telephone. He climbed onto the carton so that he could reach the buttons on the phone and proceeded to punch in eight digits (phone numbers).&lt;br /&gt;&lt;br /&gt;The store-owner observed and listened to the conversation:&lt;br /&gt;&lt;br /&gt;Boy: 'Lady, Can you give me the job of cutting your lawn?&lt;br /&gt;&lt;br /&gt;Woman: (at the other end of the phone line): 'I already have someone to cut my lawn.'&lt;br /&gt;&lt;br /&gt;Boy: 'Lady, I will cut your lawn for half the price of the person who cuts your lawn now.'&lt;br /&gt;&lt;br /&gt;Woman: I'm very satisfied with the person who is presently cutting my lawn.&lt;br /&gt;&lt;br /&gt;Boy: (with more perseverance): Lady, I'll even sweep our curb and your sidewalk, so on Sunday you will have the prettiest lawn in all of Palm beach, Florida.'&lt;br /&gt;&lt;br /&gt;Woman: No, thank you.&lt;br /&gt;&lt;br /&gt;With a smile on his face, the little boy replaced the receiver. The store-owner, who was listening to all this, walked over to the boy.&lt;br /&gt;&lt;br /&gt;Store Owner: 'Son... I like your attitude; I like that positive spirit and would like to offer you a job.'&lt;br /&gt;&lt;br /&gt;Boy: 'No thanks,&lt;br /&gt;&lt;br /&gt;Store Owner: But you were really pleading for one.&lt;br /&gt;&lt;br /&gt;Boy: No Sir, I was just checking my performance at the job I already have. I am the one who is working for that lady, I was talking to, and I was doing my 'Self Appraisal'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-8361475367873764104?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/8361475367873764104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=8361475367873764104' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/8361475367873764104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/8361475367873764104'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/03/self-appraisal.html' title='Self Appraisal'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-959045354802047317</id><published>2008-03-21T03:23:00.000-07:00</published><updated>2008-03-21T04:23:43.506-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JDBC'/><title type='text'>ORA-01000 maximum open cursors exceeded</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;" java.sql.SQLException : ORA-01000:  maximum open cursors exceeded "&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; -- &lt;a href="http://ora-01000.ora-code.com/"&gt;ORA-01000&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;I was recently asked my a colleague to help in resolving the ORA-01000 error. At a first glance, everything looked fine in the Java Code &amp;amp; it was baffling - it took sometime for enlightenment to illuminate the nature of the problem and one possible solution.&lt;br /&gt;&lt;br /&gt;The program inherited by my colleague had two Java classes - Class A and Class B. Class A calls a method named insert() in Class B to save data into the database. Class A passed an ArrayList of Java Beans to the Class B's insert() method.&lt;br /&gt;&lt;br /&gt;The logic to save the data was a plain - vanilla for loop  :-&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;for ( int i = 0  ;  i &lt; number  ;  i++)&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;psSaveData = conOraleConnection.prepareStatement(insertSQL);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       ..........&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       ..........&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       psSaveData.setString(1,dataBean.getId());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       psSaveData.setString(2,dataBean.getName());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       psSaveData.setString(3,dataBean.getAge());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       ..........&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       ..........&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       psSaveData.executeUpdate();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Now, this piece of code was failing after the first 1000 rows !&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;We took sometime to methodically analyze the problem using an approach outlined at this &lt;/span&gt;&lt;a style="color: rgb(0, 0, 0);" href="https://support.bea.com/application_content/product_portlets/support_patterns/wls/InvestigatingORA-1000MaximumOpenCursorsExceededPattern.html"&gt;link &lt;/a&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;from BEA's Website. However, the problem persisted - either we missed something obvious or we were looking at something new. And then it occured to us :-&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt;psSaveData = conOraleConnection.prepareStatement(insertSQL);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);"&gt;We finally figured out that the problem was caused by the statement marked in &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;red&lt;/span&gt;. &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);"&gt;The line was actually telling the Oracle Database to precompile the same statement 1000 time !!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;How does this matter ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;The Oracle Database contains a SQL Engine to deal with all SQL statements.  The SQL Engine generally follows a two step process to execute a SQL Statement:-&lt;/span&gt;&lt;br /&gt;&lt;ul style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;parse : to check for syntax and semantic correctness.&lt;/li&gt;&lt;li&gt;execution plan : an optimized plan that details the instructions to execute the SQL statement.&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; The SQL Statement and the corresponding execution plan are stored together in a structure called a "Cursor". The Cursor is then stored in a special area of database memory called the "Shared Pool".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;You can get handle to a cursor from a variety of languages like PL/SQL, Java, etc. You can then :-&lt;/span&gt;&lt;br /&gt;&lt;ul style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;Open the cursor.&lt;/li&gt;&lt;li&gt;Fetch the results&lt;/li&gt;&lt;li&gt;Close the cursor.&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; The Oracle database opens an "implicit cursor" for every SQL Statement that it encounters. Hence, a cursor is opened for every SELECT, INSERT, etc. statement that is issued to the SQL Engine.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Hence, you only need to prepare the "blueprint" once and execute it multiple times. The piece of code marked in &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;red &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;was preparing the "blueprint" 1000 times - as a result, 1000 cursors were opened !&lt;br /&gt;&lt;br /&gt;We simply moved this line out of the for loop and solved one bottleneck.&lt;br /&gt;&lt;br /&gt;We also noticed that the plain-vanilla JDBC Insert statement was not suitable for batch inserts. Well, that's another story :)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-959045354802047317?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/959045354802047317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=959045354802047317' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/959045354802047317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/959045354802047317'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/03/ora-01000-maximum-open-cursors-exceeded.html' title='ORA-01000 maximum open cursors exceeded'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-785376318963184433</id><published>2008-03-20T21:25:00.000-07:00</published><updated>2008-03-20T21:33:26.738-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inspirational Stories'/><title type='text'>Inspirations from Frogs</title><content type='html'>I was Googling around for something &amp;amp; came across &lt;a href="http://allaboutfrogs.org/"&gt;this&lt;/a&gt; wonderful site about frogs. A page on the site is dedicated to "&lt;a href="http://allaboutfrogs.org/stories/fables.html"&gt;Frog Fables&lt;/a&gt;" - an eclectic of parables with a frog / toad as the topic of discussion.&lt;br /&gt;&lt;br /&gt;I personally liked the story of "&lt;a href="http://allaboutfrogs.org/stories/boiled.html"&gt;The Boiled Frog&lt;/a&gt;". I found it surprising that a frog's natural instincts are fine tuned to detect sudden changes in an environment, but not the slow changes that ultimately lead to the same change in the environment.&lt;br /&gt;&lt;br /&gt;Well, this quote from the page, summarizes the story  :-&lt;br /&gt;&lt;br /&gt;" &lt;span style="font-family:COMIC SANS MS;"&gt;&lt;i&gt; This parable is often used to illustrate how humans have to be careful to watch slowly changing trends in the environment, not just the sudden changes. Its a warning to keep us paying attention not just to obvious threats but to more slowly developing ones. "&lt;br /&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-785376318963184433?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/785376318963184433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=785376318963184433' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/785376318963184433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/785376318963184433'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/03/inspirations-from-frogs.html' title='Inspirations from Frogs'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-4746442829651066204</id><published>2008-03-17T06:05:00.000-07:00</published><updated>2008-03-17T06:28:35.093-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Appending zeros in front of a number</title><content type='html'>I recently helped a colleague who had this simple requirement - to append zeros in front of a Number in a Java Method.&lt;br /&gt;&lt;br /&gt;The purpose of the Method was to scan numbers between 1 and 999 and ensure that every number has three digits - the ones that have only two digits are appended by zeros.&lt;br /&gt;&lt;br /&gt;The problem has multiple solutions &amp;amp; we were looking for the simplest possible solution. We tried a lot of solutions, starting with a simple for loop that counted the number of digits and appended zeros in front of it.  We also looked at the Java API to see if a solution is already present.&lt;br /&gt;&lt;br /&gt;However, we finalized two solutions that were very simple &amp;amp; elegant :-&lt;br /&gt;&lt;br /&gt;Solution #1 ( JDK 1.5 onwards )&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    String.format("%03d", 1);&lt;br /&gt;    String.format("%03d", 10);&lt;br /&gt;    String.format("%03d", 100);&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Solution #2 ( pre - JDK 1.5 )&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;     NumberFormat &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;objNumberFormat &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;= new DecimalFormat("000");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;     &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;objNumberFormat &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.format(Integer.parseInt( "1"));&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;     objNumberFormat &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.format(Integer.parseInt( "10"));&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;     objNumberFormat &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.format(Integer.parseInt( "100"));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We used Solution #2 to make the code reusable between JDK versions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-4746442829651066204?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/4746442829651066204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=4746442829651066204' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/4746442829651066204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/4746442829651066204'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/03/appending-zeros-in-front-of-number.html' title='Appending zeros in front of a number'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-9112027817261768760</id><published>2008-03-13T00:20:00.000-07:00</published><updated>2008-03-13T02:21:29.217-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Recruitment'/><category scheme='http://www.blogger.com/atom/ns#' term='Requirements'/><title type='text'>What is domain knowledge ?</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;"Domain knowledge is defined as the collective knowledge gained through education,&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; training, or a series of assignments in a functional area"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://www.rand.org/pubs/documented_briefings/DB517/"&gt;- Compensating for Incomplete Domain Knowledge&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;I frequently encounter profiles of candidates who claim to have knowledge in many domains in a very short time - sometimes, even less that two years. I usually view these profiles with suspect &amp;amp; many times, my suspicion was confirmed during conversations with the candidates. The candidates merely mention the domain of the clients they have worked with - often, they are unable to answer simple domain related questions or explain business needs that prompted the solutions they implemented.&lt;br /&gt;&lt;br /&gt;I found that the definition I have mentioned in the beginning of his article captures the essence of Domain Knowledge. I would like to present my views about Domain Knowledge in this article.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Knowledge_domain"&gt;Domain Knowledge&lt;/a&gt; is often gained through conversations with the business users. Often, Domain Knowledge is :-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Informal&lt;/li&gt;&lt;li&gt;Ill Structured&lt;/li&gt;&lt;li&gt;Incomplete&lt;/li&gt;&lt;/ul&gt;How is this kind of knowledge important ? What makes some of the IT companies &amp;amp; head hunters scourge for people with this kind of Domain Knowledge ?&lt;br /&gt;&lt;br /&gt;Domain Knowledge is a key component in understanding :-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the problem space&lt;/li&gt;&lt;li&gt;the proposed solution&lt;/li&gt;&lt;li&gt;the slightly "bigger picture " - how the proposed solution formed a piece of the bigger puzzle.&lt;/li&gt;&lt;/ul&gt;Domain Knowledge is important as it helps you to communicate confidently with the business users in a particular domain. It helps you communicate to the business users in their language.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Example: if the users want to see a "tank", do they want to see an Armored Tank or a Septic Tank ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You'd definitely be more confident in your solutions, if you knew precisely what the users expect to achieve from your solution - a few of these are :-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;save time&lt;/li&gt;&lt;li&gt;co-ordinate better with their peers.&lt;/li&gt;&lt;li&gt;focus more on higher level activities after automating the trivial ones.&lt;/li&gt;&lt;/ul&gt;Domain Knowledge is also narrow - you may only focus on one minute part of a bigger piece in a huge puzzle. However, a good understanding of the minute part will serve as a foundation to explore the bigger piece &amp;amp; venture into the huge puzzle.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Example: if you are confident about your understanding of the Recruitment Loop ( contact - schedule interview - propose offer - recruit ), you could easily move into other functions such as Trend Analysis, Vendor Management, etc.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Example:  if you are confident about your understanding of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;HL&lt;/span&gt;7 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Healthcare&lt;/span&gt; Messaging Protocol, you could comfortably move up to understanding Patient Demographics, etc.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Domain Knowledge is thus very helpful in understanding the needs of the business users better &amp;amp; providing solutions that closely match their needs.&lt;br /&gt;&lt;br /&gt;I would definitely love to hear about different opinions on this topic.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-9112027817261768760?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/9112027817261768760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=9112027817261768760' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/9112027817261768760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/9112027817261768760'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/03/what-is-domain-knowledge.html' title='What is domain knowledge ?'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-1411851841587411633</id><published>2008-03-11T23:02:00.000-07:00</published><updated>2008-03-12T21:43:29.040-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>Learn Programming in 10 Years</title><content type='html'>&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;" Learn thoroughly whatever is to be learnt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Then, let the conduct be worthy of this learning "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://www.tn.gov.in/literature/thiruvalluvar/Thirukkural/kural.htm"&gt;Thirukkural : #391&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I just came across a wonderful article titled "&lt;a href="http://norvig.com/21-days.html"&gt;Teach Yourself Programming in Ten Years&lt;/a&gt;" crafted by &lt;a href="http://norvig.com/"&gt;Peter Norvig&lt;/a&gt;. I would recommend the article for anyone looking at a career in the IT Industry.&lt;br /&gt;&lt;br /&gt;It takes a lot of effort, discipline, sacrifice &amp;amp; experience to learn &amp;amp; understand a subject, let alone master it. An artifact that claims to offer a "shortcut" to learning in a particular subject in a very short time, is simply dubious in it's claim.&lt;br /&gt;&lt;br /&gt;You may probably get an insight into the subject being discussed, but learning takes its own time. You my need to encounter many "aha!" moments to ultimately arrive at an understanding of a small part of the subject.&lt;br /&gt;&lt;br /&gt;I feel that the books that claim - "&lt;span style="font-style: italic;"&gt;learn x in y days/hours&lt;/span&gt;" are best to simply get a "foot in the door".  You can get hooked to the topic and the books do justice in enticing your interest in the topics. I would recommend these books if you need to quickly get an outline of a subject and start work on it - and, probably plan to learn on the fly.&lt;br /&gt;&lt;br /&gt;A good example is the software books with similar titles - you can quickly learn the syntax &amp;amp; replicate some of the code recipes shown in the book &amp;amp; achieve small-time victories.&lt;br /&gt;&lt;br /&gt;However, if you are looking for a long term solution, there is no shortcut.&lt;br /&gt;&lt;br /&gt;Many thanks to &lt;a href="http://en.wikipedia.org/wiki/Thiruvalluvar"&gt;Thiruvalluvar &lt;/a&gt;and &lt;a href="http://norvig.com/"&gt;Peter Norvig&lt;/a&gt; !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-1411851841587411633?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/1411851841587411633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=1411851841587411633' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1411851841587411633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1411851841587411633'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/03/learn-programming-in-10-years.html' title='Learn Programming in 10 Years'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-173868860790825629</id><published>2008-03-11T22:21:00.000-07:00</published><updated>2008-03-11T23:33:21.922-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>Which Programming Language is good ?</title><content type='html'>&lt;span style="font-style: italic; font-weight: bold;"&gt;"...&lt;/span&gt;&lt;a style="font-style: italic; font-weight: bold;" href="http://en.wikipedia.org/wiki/One_Ring"&gt;One Ring&lt;/a&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt; to rule them all, &lt;/span&gt;&lt;a style="font-style: italic; font-weight: bold;" href="http://en.wikipedia.org/wiki/One_Ring"&gt;One Ring&lt;/a&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt; to find them,&lt;/span&gt;&lt;br /&gt;&lt;a style="font-style: italic; font-weight: bold;" href="http://en.wikipedia.org/wiki/One_Ring"&gt;One Ring&lt;/a&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt; to bring them all and in the darkness bind them...."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://en.wikipedia.org/wiki/The_Lord_of_the_Rings"&gt;Lord of the Rings&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The topic has been debated numerous times in the past, in various Forums, Newsgroups, mailing lists, coffee tables,etc. - but, it still goes on. The answer has always been the same - you need to choose the right tool for the right job. The mythical "Silver Bullet" does not exist &amp;amp; there will never be one.&lt;br /&gt;&lt;br /&gt;You need to decide the tool to use for a particular job &amp;amp; use that tool correctly. It's  no use trying to debate over the "best" language &amp;amp; these discussions are simply absurd.&lt;br /&gt;&lt;br /&gt;I think &lt;a href="http://www.tundraware.com/Technology/How-To-Pick-A-Programming-Language/"&gt;this "old" article&lt;/a&gt; by Tim Daneliuk summarizes the thought process that goes on in these kind of debates.&lt;br /&gt;&lt;br /&gt;Moral of the story : There is no Silver Bullet. There is no One Ring.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-173868860790825629?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/173868860790825629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=173868860790825629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/173868860790825629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/173868860790825629'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/03/which-programming-language-is-good.html' title='Which Programming Language is good ?'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-1068635714223353873</id><published>2008-03-03T21:33:00.000-08:00</published><updated>2008-03-03T22:04:22.505-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSF'/><title type='text'>Pitfalls of JSF</title><content type='html'>Java Server Faces ( JSF ) is yet another Java Web Framework that promises to simplify the development of JEE-based web applications. &lt;br /&gt;&lt;br /&gt;It deviates from the traditional "request-driven" approach adopted by MVC frameworks such as Struts &amp; attempts to achieve the same with a component-driven model. &lt;br /&gt;&lt;br /&gt;I am a fan of this Component-driven model &amp; am still nostalgic about some of the work I did in Visual Basic, Oracle Forms, etc. many eons ago. &lt;br /&gt;&lt;br /&gt;However, JSF, in its current version  has a lot of pitfalls - some of the pitfalls are unique to JSF &amp; drastically hinder the productivity gains that were promised in the JSF specification. &lt;br /&gt;&lt;br /&gt;I was reading an interesting article on &lt;a href="http://www.theserverside.com/"&gt;TheServerSide.com &lt;/a&gt; about the &lt;a href="http://www.theserverside.com/tt/knowledgecenter-is/knowledgecenter-is.tss?l=JSFAnti-PatternsandPitfalls"&gt;pitfalls of JSF&lt;/a&gt; . The article by Dennis Byrne was well written &amp; covered some of the most important pain points in JSF.&lt;br /&gt;&lt;br /&gt;I particular liked his last topic where he sympathizes with Portlet Developers. I found this sentence very emphatic :-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;" I feel sorry for Portlet developers. I really do. These people are always on the mailing lists and forums with problem after problem and it's never their fault. If any group of people has been bent over by the standards bodies, it is Portlet application developers. "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Truly, a very good article that captures some burning issues that can keep a developer up all night.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-1068635714223353873?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/1068635714223353873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=1068635714223353873' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1068635714223353873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1068635714223353873'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/03/pitfalls-of-jsf.html' title='Pitfalls of JSF'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-1638676705795605486</id><published>2008-02-27T22:24:00.000-08:00</published><updated>2008-02-27T22:25:38.094-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inspirational Stories'/><title type='text'>God does exist</title><content type='html'>Another "gem" that I received in today's mail :-&lt;br /&gt;&lt;br /&gt;A man went to a barbershop to have his hair cut and his beard trimmed. As the barber began to work, they began to have a good conversation. They talked about so many things and various subjects.&lt;br /&gt;&lt;br /&gt;When they eventually touched on the subject of God, the barber said: "I don't believe that God exists."&lt;br /&gt;&lt;br /&gt;"Why do you say that?" asked the customer. "Well, you just have to go out in the street to realize that God doesn't exist.&lt;br /&gt;&lt;br /&gt;Tell me, if God exists, would there be so many sick people? Would there be abandoned children?&lt;br /&gt;&lt;br /&gt;If God existed, there would be neither suffering nor pain. I can't imagine a loving God who would allow all of these things." The customer thought for a moment, but didn't respond because he didn't want to start an argument. The barber finished his job and the customer left the shop.&lt;br /&gt;&lt;br /&gt;Just after he left the barbershop, he saw a man in the street with long, stringy, dirty hair and an untrimmed beard. He looked dirty and unkempt. The customer turned back and entered the barber shop again and he said to the barber:&lt;br /&gt;&lt;br /&gt;"You know what? Barbers do not exist."&lt;br /&gt;&lt;br /&gt;"How can you say that?" asked the surprised barber.&lt;br /&gt;&lt;br /&gt;"I am here, and I am a barber. And I just worked on you!"&lt;br /&gt;&lt;br /&gt;"No!" the customer exclaimed. "Barbers don't exist because if they did, there would be no people with dirty long hair and untrimmed beards, like that man outside."&lt;br /&gt;&lt;br /&gt;"Ah, but barbers DO exist! That's what happens when people do not come to me."&lt;br /&gt;&lt;br /&gt;"Exactly!" affirmed the customer. "That's the point! God, too, DOES exist!&lt;br /&gt;&lt;br /&gt;That's what happens when people do not go to Him and don't look to Him for help.&lt;br /&gt;&lt;br /&gt;That's why there's so much pain and suffering in the world."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-1638676705795605486?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/1638676705795605486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=1638676705795605486' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1638676705795605486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1638676705795605486'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/02/god-does-exist.html' title='God does exist'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-1471440238371291090</id><published>2008-02-27T04:21:00.000-08:00</published><updated>2008-02-27T04:22:25.277-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inspirational Stories'/><title type='text'>The Hinderer</title><content type='html'>Another "gem" that I received in today's email :-&lt;br /&gt;&lt;br /&gt;One day all the employees reached the office and they saw a big advice on the door on which it was written:&lt;br /&gt;&lt;br /&gt;"Yesterday the person who has been hindering your growth in this company passed away. We invite you to join the funeral in the room that has been prepared in the gym".&lt;br /&gt;&lt;br /&gt;In the beginning, they all got sad for the death of one of their colleagues, but after a while they started getting curious to know who was that man who hindered the growth of his colleagues and the company itself.&lt;br /&gt;&lt;br /&gt;The excitement in the gym was such that security agents were ordered to control the crowd within the room.&lt;br /&gt;The more people reached the coffin, the more the excitement heated up. Everyone thought: "Who is this guy who was hindering my progress? Well, at least he died!".&lt;br /&gt;&lt;br /&gt;One by one the thrilled employees got closer to the coffin, and when they looked inside it they suddenly became speechless. They stood nearby the coffin, shocked and in silence, as if someone had touched the deepest part of their soul.&lt;br /&gt;&lt;br /&gt;There was a mirror inside the coffin: everyone who looked inside it could see him/herself.&lt;br /&gt;&lt;br /&gt;There was also a sign next to the mirror that said:&lt;br /&gt;"There is only one person who is capable to set limits to your growth: it is YOU.&lt;br /&gt;You are the only person who can revolutionize your life. You are the only person who can influence your happiness, your realization and your success. You are the only person who can help yourself.&lt;br /&gt;&lt;br /&gt;Your life does not change when your boss changes, when your friends change, when your parents change, when your partner changes, when your company changes. Your life changes when YOU change, when you go beyond your limiting beliefs, when you realize that you are the only one responsible for your life.&lt;br /&gt;&lt;br /&gt;"The most important relationship you can have is the one you have with yourself"&lt;br /&gt;Examine yourself, watch yourself. Don't be afraid of difficulties, impossibilities and losses: be a winner, build yourself and your reality.&lt;br /&gt;&lt;br /&gt;The world is like a mirror: it gives back to anyone the reflection of the thoughts in which one has strongly believed.&lt;br /&gt;&lt;br /&gt;The world and your reality are like mirrors lying in a coffin, which show to any individual the death of his divine capability to imagine and create his happiness and his success.&lt;br /&gt;&lt;br /&gt;It's the way you face Life that makes the difference&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-1471440238371291090?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/1471440238371291090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=1471440238371291090' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1471440238371291090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/1471440238371291090'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/02/hinderer.html' title='The Hinderer'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-7649878949949239534</id><published>2008-02-26T20:31:00.000-08:00</published><updated>2008-02-26T20:37:58.562-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inspirational Stories'/><title type='text'>Different Attitude</title><content type='html'>Another "gem" that I received in today's mail :-&lt;br /&gt;&lt;br /&gt;A Cold December night in West Orange, New Jersey. Thomas Edison's factory was humming with activity. Work was proceeding on a variety of fronts as the great inventor was trying to turn more of his dreams into practical realities. Edison's plant, made of concrete and steel, was deemed "fireproof". As you may have already guessed, it wasn't!&lt;br /&gt;&lt;br /&gt;On that frigid night in 1914, the sky was lit up by a sensational blaze that had burst through the plant roof. Edison's 24-year-old son, Charles, made a frenzied search for his famous inventor-father. When he finally found him, he was watching the fire. His white hair was blowing in the wind. His face was illuminated by the leaping flames. "My heart ached for him," said Charles. "Here he was, 67 years old, and everything he had worked for was going up in flames. When he saw me, he shouted, 'Charles! Where's your mother?' When I told him I didn't know, he said, 'Find her! Bring her here! She'll never see anything like this as long as she lives.'"&lt;br /&gt;&lt;br /&gt;Next morning, Mr. Edison looked at the ruins of his factory and said this of his loss: "There's value in disaster. All our mistakes are burned up. Thank God, we can start anew."&lt;br /&gt;&lt;br /&gt;What a wonderful perspective on things that seem at first to be so disastrous. A business failure, personal dream gone sour . . . whether these things destroy an individual depends largely on the attitude he or she takes toward them. Sort out why it happened, and learn something from the blunders.&lt;br /&gt; &lt;br /&gt;Think of different approaches that can be taken !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-7649878949949239534?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/7649878949949239534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=7649878949949239534' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/7649878949949239534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/7649878949949239534'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/02/different-attitude.html' title='Different Attitude'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-8006766208534757045</id><published>2008-02-25T03:00:00.000-08:00</published><updated>2008-02-25T03:02:27.703-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inspirational Stories'/><title type='text'>Soldier and the Spider</title><content type='html'>Another "gem" that I received in today's mail :-&lt;br /&gt;&lt;br /&gt;During World War II, a US marine was separated from his unit on a Pacific island. The fighting had been intense, and in the smoke and the crossfire he had lost touch with his comrades.&lt;br /&gt;&lt;br /&gt;Alone in the jungle, he could hear enemy soldiers coming in his direction.&lt;br /&gt;Scrambling for cover, he found his way up a high ridge to several small caves in the rock. Quickly he crawled inside one of the caves. Although safe for the moment, he &lt;br /&gt;realized that once the enemy soldiers looking for him swept up the ridge, they would quickly search all the caves and he would be killed.&lt;br /&gt;&lt;br /&gt;As he waited, he prayed, Lord, if it be your will, please protect me.&lt;br /&gt;Whatever your will though, I love you and trust you. Amen.&lt;br /&gt;After praying, he lay quietly listening to the enemy begin to draw close.&lt;br /&gt;&lt;br /&gt;He thought, well, I guess the Lord isn't going to help me out of this one.&lt;br /&gt;Then he saw a spider begin to build a web over the front of his cave.&lt;br /&gt;&lt;br /&gt;As he watched, listening to the enemy searching for him all the while, the spider layered strand after strand of web across the opening of the cave.&lt;br /&gt;&lt;br /&gt;Hah, he thought. What I need is a brick wall and what the Lord has sent me is a spider web. God does have a sense of humor.&lt;br /&gt;&lt;br /&gt;As the enemy drew closer he watched from the darkness of his hideout and could see them searching one cave after another. As they came to his, he got ready to make his last stand. To his amazement, however, after glancing in the direction of his cave, they moved on. &lt;br /&gt;&lt;br /&gt;Suddenly, he realized that with the spider web over the entrance, his cave looked as if no one had entered for quite a while. Lord, forgive me, prayed the young man. I had forgotten that in you a spider's web is stronger than a brick wall.&lt;br /&gt;&lt;br /&gt;We all face times of great trouble. When we do, it is so easy to forget the victories that God would work in our lives, sometimes in the most surprising ways.&lt;br /&gt;&lt;br /&gt;Remember: Whatever is happening in your life, with God, a mere spiders web can become a brick wall of protection. Believe He is with you always and you will see His great power and love for you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-8006766208534757045?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/8006766208534757045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=8006766208534757045' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/8006766208534757045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/8006766208534757045'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/02/another-gem-that-i-recieved-in-todays.html' title='Soldier and the Spider'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-5791525523841640949</id><published>2008-02-25T02:36:00.000-08:00</published><updated>2008-02-25T02:37:01.653-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><title type='text'>Network Troubleshooting - 6 : Application Issues</title><content type='html'>I believe that after eliminating the possibilities of problems at the previous steps, the only remaining option at this step is to troubleshoot the application. You may need to scrounge through log files, check application consoles, etc. &lt;br /&gt;&lt;br /&gt;However, the possibility of a problem occurring due to the underlying network is extremely minimal at this level - even if it does, it's probably due to some idiosyncrasies of the Operating System or the Application Platform.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-5791525523841640949?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/5791525523841640949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=5791525523841640949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/5791525523841640949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/5791525523841640949'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/02/network-troubleshooting-6-application.html' title='Network Troubleshooting - 6 : Application Issues'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-4904936192359226491</id><published>2008-02-25T02:31:00.001-08:00</published><updated>2008-02-25T02:31:56.957-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><title type='text'>Network Troubleshooting - 5 : NETSTAT</title><content type='html'>You need to now move on to the Remote System &amp; check if the program / process is listening on a particular port that you are trying to connect to. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Netstat (network statistics) is a command-line tool that displays network connections (both incoming and outgoing), routing tables, and a number of network interface statistics. &lt;br /&gt;&lt;br /&gt;- Wikipedia&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can use the simple NETSTAT command on the remote system to check the open Network ports, active connections, etc . You just need to open a Command Prompt ( Terminal in LINUX ) &amp; type :-&lt;br /&gt;&lt;br /&gt;( LINUX )&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;netstat -an | grep port_name&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OR&lt;br /&gt;&lt;br /&gt;( WINDOWS )&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;netstat -an | findstr port_name&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;You should see a bunch of Network statistics like this :-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;  TCP    0.0.0.0:1521           0.0.0.0:0              LISTENING&lt;br /&gt;  TCP    127.30.22.11:1521    10.177.239.210:2527    ESTABLISHED&lt;br /&gt;  TCP    127.30.22.11:25271    10.177.239.210:1521    ESTABLISHED&lt;br /&gt;  TCP    127.30.22.110:28802    10.177.145.53:1521     ESTABLISHED&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you don't get this response, you can conclude on these :-&lt;br /&gt;&lt;br /&gt;1. The program / process on the remote system that should be "listening" on the port is not running.&lt;br /&gt;&lt;br /&gt;Now, it's time to call up the IT Help Desk &amp; tell them that there's a problem with Network Access.&lt;br /&gt;&lt;br /&gt;At the end of this exercise, you have :-&lt;br /&gt;&lt;br /&gt;* tried some basic troubleshooting steps.&lt;br /&gt;* identified the source of the problem.&lt;br /&gt;* communicated effectively to the IT Support Staff.&lt;br /&gt;&lt;br /&gt;You can now confidently communicate with the IT Support Staff &amp; they'd be more than happy to work with an "educated" colleague.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-4904936192359226491?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/4904936192359226491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=4904936192359226491' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/4904936192359226491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/4904936192359226491'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/02/network-troubleshooting-5-netstat.html' title='Network Troubleshooting - 5 : NETSTAT'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-6470190487548673969</id><published>2008-02-25T02:20:00.000-08:00</published><updated>2008-02-25T02:26:05.230-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><title type='text'>Network Troubleshooting - 4 : TELNET</title><content type='html'>&lt;span style="font-style:italic;"&gt;A TCP/IP standard for remote terminal connection to another machine.&lt;br /&gt;&lt;br /&gt;- Wikipedia&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can use the simple TELNET command to ensure that you can communicate with the remote system, by opening a connection to a port on the remote system. You just need to open a Command Prompt ( Terminal in LINUX ) &amp; type :-&lt;br /&gt;&lt;br /&gt;telnet ip_address port&lt;br /&gt;&lt;br /&gt;OR&lt;br /&gt;&lt;br /&gt;telnet hostname port&lt;br /&gt;&lt;br /&gt;You should see a blank screen that allows you to type commands.&lt;br /&gt;&lt;br /&gt;If you don't get this response, you can conclude on these :-&lt;br /&gt;&lt;br /&gt;1. The program / process on the remote system that should be "listening" on the port is not running.&lt;br /&gt;2. The remote system is protected by a "firewall" that's preventing access.&lt;br /&gt;&lt;br /&gt;Now, it's time to call up the IT Help Desk &amp; tell them that there's a problem with Network Access.&lt;br /&gt;&lt;br /&gt;At the end of this exercise, you have :-&lt;br /&gt;&lt;br /&gt;* tried some basic troubleshooting steps.&lt;br /&gt;* identified the source of the problem.&lt;br /&gt;* communicated effectively to the IT Support Staff.&lt;br /&gt;&lt;br /&gt;You can now confidently communicate with the IT Support Staff &amp; they'd be more than happy to work with an "educated" colleague.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-6470190487548673969?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/6470190487548673969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=6470190487548673969' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/6470190487548673969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/6470190487548673969'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/02/network-troubleshooting-4-telnet.html' title='Network Troubleshooting - 4 : TELNET'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-8124686679200247083</id><published>2008-02-25T02:17:00.000-08:00</published><updated>2008-02-25T02:24:04.290-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><title type='text'>Network Troubleshooting - 3 : PING</title><content type='html'>Ping!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Ping is a computer network tool used to test whether a particular host is reachable across an IP network.&lt;br /&gt;&lt;br /&gt;- Wikipedia&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can use the simple PING command to ensure that you can communicate with the other system. You just need to open a Command Prompt ( Terminal in LINUX ) &amp; type :-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ping ip_address&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OR&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ping hostname&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You should see a reply from the Network Card like this :-&lt;br /&gt;&lt;br /&gt;Pinging sandeep-personal [127.0.0.1] with 32 bytes of data:&lt;br /&gt;&lt;br /&gt;Reply from 127.30.22.11: bytes=32 time 1ms TTL=128&lt;br /&gt;Reply from 127.30.22.11: bytes=32 time 1ms TTL=128&lt;br /&gt;Reply from 127.30.22.11: bytes=32 time 1ms TTL=128&lt;br /&gt;Reply from 127.30.22.11: bytes=32 time 1ms TTL=128&lt;br /&gt;&lt;br /&gt;If you don't get this response, you can conclude on these :-&lt;br /&gt;&lt;br /&gt;1. Your system is not connected to the same network as the remote system.&lt;br /&gt;2. The remote system is not connected to the same network as your system.&lt;br /&gt;3. Your system / the remote system is protected by a "firewall" that's preventing access.&lt;br /&gt;&lt;br /&gt;Now, it's time to call up the IT Help Desk &amp; tell them that there's a problem with Network Access.&lt;br /&gt;&lt;br /&gt;At the end of this exercise, you have :-&lt;br /&gt;&lt;br /&gt;* tried some basic troubleshooting steps.&lt;br /&gt;* identified the source of the problem.&lt;br /&gt;* communicated effectively to the IT Support Staff.&lt;br /&gt;&lt;br /&gt;You can now confidently communicate with the IT Support Staff &amp; they'd be more than happy to work with an "educated" colleague.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-8124686679200247083?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/8124686679200247083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=8124686679200247083' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/8124686679200247083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/8124686679200247083'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/02/network-troubleshooting-3-ping.html' title='Network Troubleshooting - 3 : PING'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-8862967372118783346</id><published>2008-02-25T02:08:00.000-08:00</published><updated>2008-02-25T02:11:39.245-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>Revision Control for Rows</title><content type='html'>Revision Control deals with managing multiple revisions of an entity. The core functionality in any Revision Control system is to ensure that the previous version is not lost. Revision Control is a vast topic that merits hours of study &amp; practice. &lt;br /&gt;&lt;br /&gt;I definitely don't have the breadth of knowledge or experience to comment on various  "must-have" features, etc. However, I did encounter an interesting scenario where I put Revision Control to practice for information stored in rows of a Database Table.&lt;br /&gt;&lt;br /&gt;We can achieve Revision Control for rows in a Database Table in a simple way - with two columns. We can use one column to store the Row version and another to "flag" the row that contains the latest version. &lt;br /&gt;&lt;br /&gt;I am using an Oracle XE Database &amp; Oracle SQL Developer to model the tables, fashion out the queries, etc. You could do the same with any other Database &amp; your favorite tools.&lt;br /&gt;&lt;br /&gt;Here, I consider the example of an Item "on display" at a shop.  The Product is available in multiple version ( different colors ), but only one "version" of the product is currently on display ( the item ).&lt;br /&gt;&lt;br /&gt;First, I'll model the database table. I have made a few assumptions to arrive at this model :-&lt;br /&gt;&lt;br /&gt;Assumption # 1 :- All the rows are linked by a common identifier ( in my case, the Product ID ).&lt;br /&gt;Assumption # 2 :- At any given point of time, only one version of the product is "active".&lt;br /&gt;Assumption # 3 :- Each "version" is saved into the database. Any "undo" will simply revert back to the previous saved version.&lt;br /&gt;Assumption # 4 :- Each "undo" or "redo" is saved into the database as the current version.&lt;br /&gt;&lt;br /&gt;Here's a table that shows this design :-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;CREATE TABLE ITEM&lt;br /&gt;(&lt;br /&gt;  ITEM_ID           NUMBER PRIMARY KEY,&lt;br /&gt;  ITEM_PRODUCT_ID   NUMBER,&lt;br /&gt;  ITEM_DESCRIPTION  VARCHAR2(100),&lt;br /&gt;  ITEM_COLOR        VARCHAR2(10),&lt;br /&gt;  ITEM_VERSION      NUMBER,&lt;br /&gt;  ITEM_CURRENT_VERSION  VARCHAR2(1) CONSTRAINT check_ver_flag CHECK(ITEM_CURRENT_VERSION IN ('Y','N'))&lt;br /&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here's the data that I stuffed into the table :-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;INSERT INTO ITEM VALUES (1,566,'Smiley Dolls','Red',1,'N');&lt;br /&gt;INSERT INTO ITEM VALUES (2,566,'Smiley Dolls','Blue!',2,'N');&lt;br /&gt;INSERT INTO ITEM VALUES (3,566,'Smiley Dolls','Yellow',3,'Y');&lt;br /&gt;INSERT INTO ITEM VALUES (4,566,'Smiley Dolls','Cyan',4,'N');&lt;br /&gt;&lt;br /&gt;COMMIT;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, to dish out the queries...&lt;br /&gt;&lt;br /&gt;Which is the current version of the Product ?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;SELECT ITEM_DESCRIPTION, ITEM_COLOR FROM ITEM WHERE ITEM_CURRENT_VERSION = 'Y';&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ITEM_DESCRIPTION     ITEM_COLOR &lt;br /&gt;------------------- ---------- &lt;br /&gt;Smiley Dolls           Yellow     &lt;br /&gt;&lt;br /&gt;1 rows selected&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Can we "undo" the current version &amp; revert to the previous saved version ?&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;SELECT a.ITEM_DESCRIPTION, a.ITEM_COLOR FROM ITEM A, ITEM B &lt;br /&gt;WHERE A.ITEM_VERSION = B.ITEM_VERSION-1 AND B.ITEM_CURRENT_VERSION = 'Y' &lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ITEM_DESCRIPTION                                                                                    ITEM_COLOR &lt;br /&gt; ---------- &lt;br /&gt;Smiley Dolls                                                                                         Blue!      &lt;br /&gt;&lt;br /&gt;1 rows selected&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;( After this, we set the current version flag to "Y" )&lt;br /&gt;&lt;br /&gt;Revision Control can be achieved in this simple manner.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-8862967372118783346?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/8862967372118783346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=8862967372118783346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/8862967372118783346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/8862967372118783346'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/02/revision-control-for-rows-revision.html' title='Revision Control for Rows'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-468114260748707661</id><published>2008-02-24T20:22:00.000-08:00</published><updated>2008-02-24T22:00:18.071-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>Parent Child Relations in a Database Table</title><content type='html'>Parent - Child relationships ( hierarchical relationships )  are very common &amp;amp; often crop often during database designs.&lt;br /&gt;&lt;br /&gt;You can expect to find Parent -Child relationships while modeling employee-manager, office-outlets &amp;amp; other similar concepts. I recently encountered the need for a parent - child relationship in a need to model a product-sub product concept.&lt;br /&gt;&lt;br /&gt;You can find a lot of literature that talks about this topic in detail. I just want to add my 2 cents..&lt;br /&gt;&lt;br /&gt;The hierarchical relationships are best explained by examples. Here, I consider a popular fast food chain of outlets ( "Yummies" ) that has outlets across the city.&lt;br /&gt;Al the outlets in a particular part of the city "report" to a single outlet - the "parent" outlet.&lt;br /&gt;&lt;br /&gt;All these "parent" outlets in turn "report" to a single "parent" outlet - something like a "head office".&lt;br /&gt;&lt;br /&gt;The "report"s could be anything - daily sales figures, inventory status, customer feedback, staff shortages, etc. However, at this point of time, the main focus is to model the relationship of a parent-child outlet chain.&lt;br /&gt;&lt;br /&gt;I am using an Oracle XE Database &amp;amp; Oracle SQL Developer to model the tables, fashion out the queries, etc. You could do the same with any other Database &amp;amp; your favourite tools.&lt;br /&gt;&lt;br /&gt;First, I'll model the database table. I have made a couple of assumptions to arrive at this model :-&lt;br /&gt;&lt;br /&gt;Assumption #1 : Each child outlet has a single parent outlet.&lt;br /&gt;Assumption #2 : Each outlet has a parent outlet, except the "root" outlet ( head office ) .&lt;br /&gt;&lt;br /&gt;Here's the table structure that I have designed :-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;CREATE TABLE OUTLET&lt;br /&gt;(&lt;br /&gt;  OUTLET_ID    NUMBER PRIMARY KEY,&lt;br /&gt;  OUTLET_NAME    VARCHAR2(30) NOT NULL,&lt;br /&gt;  OUTLET_PARENT NUMBER&lt;br /&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The OUTLET_ID of the "parent" outlet is stored in the "child" outlet's OUTLET_PARENT.&lt;br /&gt;&lt;br /&gt;Here's the data I stuffed into the table :-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;INSERT INTO OUTLET VALUES(1,'Yummies M G Rd',null);&lt;br /&gt;INSERT INTO OUTLET VALUES(2,'Yummies BSK ',1);&lt;br /&gt;INSERT INTO OUTLET VALUES(3,'Yummies BSK I Stage ',2);&lt;br /&gt;INSERT INTO OUTLET VALUES(4,'Yummies BSK II Stage ',2);&lt;br /&gt;INSERT INTO OUTLET VALUES(5,'Yummies BSK III Stage ',2);&lt;br /&gt;INSERT INTO OUTLET VALUES(6,'Yummies Food World ',3);&lt;br /&gt;&lt;br /&gt;COMMIT;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, to dish out the queries...&lt;br /&gt;&lt;br /&gt;Which outlet is the "mother of all outlets" ? ( root outlet / head office )&lt;br /&gt;&lt;br /&gt;The outlet that has no parent ( OUTLET_PARENT is null ) is the "mother of all outlets".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;SELECT * FROM OUTLET WHERE OUTLET_PARENT IS NULL;&lt;span style="font-weight:bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;OUTLET_ID   OUTLET_NAME        OUTLET_PARENT         &lt;br /&gt;---------  ------------------ ---------------&lt;br /&gt;  1         Yummies M G Rd  &lt;/span&gt;                                     &lt;br /&gt;&lt;br /&gt;1 rows selected&lt;br /&gt;&lt;br /&gt;Which are the outlets under the root outlet ?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;SELECT&lt;br /&gt;  a.outlet_id,&lt;br /&gt;  a.outlet_name,&lt;br /&gt;  a.outlet_parent,&lt;br /&gt;  b.outlet_parent&lt;br /&gt;FROM outlet a,&lt;br /&gt;  outlet b&lt;br /&gt;WHERE b.outlet_id = a.outlet_parent&lt;br /&gt; AND b.outlet_parent IS NULL;&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;OUTLET_ID   OUTLET_NAME        OUTLET_PARENT   OUTLET_PARENT_1&lt;br /&gt;---------  ------------------ --------------- ---------------&lt;br /&gt;   2          Yummies BSK             1         &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I can now dish out various queries that involve parent-child relationships on the chain of outlets.&lt;br /&gt;&lt;br /&gt;The model described above works best only if the two critical assumptions are satisfied. If not, you may need to explore alternate ways to achieve this relationship - e.g.: moving the relationship data ( OUTLET_ID, OUTLET_PARENT) to a separate table, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-468114260748707661?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/468114260748707661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=468114260748707661' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/468114260748707661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/468114260748707661'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/02/parent-child-entities-in-database-table.html' title='Parent Child Relations in a Database Table'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-2341151848019987174</id><published>2008-02-24T19:39:00.000-08:00</published><updated>2008-02-24T19:49:51.498-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>Ten Common Database Design Mistakes</title><content type='html'>I recently chanced upon an article written by &lt;a href="http://www.simple-talk.com/author/louis-davidson/"&gt;Louis Davidson&lt;/a&gt; titled "&lt;a href="http://www.simple-talk.com/sql/database-administration/ten-common-database-design-mistakes/"&gt;Ten Common Database Design Mistakes&lt;/a&gt;". The article summarizes the list of critical mistakes that should be avoided while designing a database.&lt;br /&gt;&lt;br /&gt;As the author humbly points out in the article, the list also summarizes the mistakes he too did during the early stages of his career. I liked the article as I had to endure the same learning curve as the author.&lt;br /&gt;&lt;br /&gt;Here's a summary of the most common mistakes :-&lt;br /&gt;&lt;br /&gt;   1. Poor design/planning&lt;br /&gt;   2. Ignoring normalization&lt;br /&gt;   3. Poor naming standards&lt;br /&gt;   4. Lack of documentation&lt;br /&gt;   5. One table to hold all domain values&lt;br /&gt;   6. Using identity/guid columns as your only key&lt;br /&gt;   7. Not using SQL facilities to protect data integrity&lt;br /&gt;   8. Not using stored procedures to access data&lt;br /&gt;   9. Trying to build generic objects&lt;br /&gt;  10. Lack of testing&lt;br /&gt;&lt;br /&gt;I couldn't have summarized it better !&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-2341151848019987174?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/2341151848019987174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=2341151848019987174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/2341151848019987174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/2341151848019987174'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/02/ten-common-database-design-mistakes.html' title='Ten Common Database Design Mistakes'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-745817369600680248</id><published>2008-02-20T05:33:00.001-08:00</published><updated>2008-02-25T03:03:12.016-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inspirational Stories'/><title type='text'>MouseTrap</title><content type='html'>Another "gem" that I received in today's mail :-&lt;br /&gt;&lt;br /&gt;A mouse looked through the crack in the wall to see the farmer and his wife open a package.&lt;br /&gt;&lt;br /&gt;"What food might this contain?" The mouse wondered - he was devastated to discover it was a mousetrap.&lt;br /&gt;&lt;br /&gt;Retreating to the farmyard, the mouse proclaimed the warning.&lt;br /&gt;&lt;br /&gt;"There is a mousetrap in the house! There is a mousetrap in the house!"&lt;br /&gt;&lt;br /&gt;The chicken clucked and scratched, raised her head and said, "Mr. Mouse, I can tell this is a grave concern to you but it is of no consequence to me. I cannot be bothered by it."&lt;br /&gt;&lt;br /&gt;The mouse turned to the pig and told him, "There is a mousetrap in the house! There is a mousetrap in the house!"&lt;br /&gt;&lt;br /&gt;The pig sympathized, but said, "I am so very sorry, Mr. Mouse, but there is nothing I can do about it but pray. Be assured you are in my prayers."&lt;br /&gt;&lt;br /&gt;The mouse turned to the cow and said, "There is a mousetrap in the house! There is a mousetrap in the house!"&lt;br /&gt;&lt;br /&gt;The cow said, "Wow, Mr. Mouse. I'm sorry for you, but it's no skin off my nose."&lt;br /&gt;&lt;br /&gt;So, the mouse returned to the house, head down and dejected, to face the farmer's mousetrap-- alone.&lt;br /&gt;&lt;br /&gt;That very night a sound was heard throughout the house -- like the sound of a mousetrap catching its prey.&lt;br /&gt;&lt;br /&gt;The farmer's wife rushed to see what was caught. In the darkness, she did not see it was a venomous snake whose tail the trap had caught.&lt;br /&gt;&lt;br /&gt;The snake bit the farmer's wife. The farmer rushed her to the hospital and she returned home with a fever. Everyone knows you treat a fever with fresh chicken soup, so the farmer took his hatchet to the farmyard for the soup's main ingredient.&lt;br /&gt;&lt;br /&gt;But his wife's sickness continued, so friends and neighbors came to sit with her around the clock. To feed them, the farmer butchered the pig.&lt;br /&gt;&lt;br /&gt;The farmer's wife did not get well; she died. So many people came for her funeral, the farmer had the cow slaughtered to provide enough meat for all of them.&lt;br /&gt;&lt;br /&gt;The mouse looked upon it all from his crack in the wall with great sadness.&lt;br /&gt;&lt;br /&gt;So, the next time you hear someone is facing a problem and think it doesn't concern you, remember -- when one of us is threatened, we are all at risk.&lt;br /&gt;&lt;br /&gt;We are all involved in this journey called life. We must keep an eye out for one another and make an extra effort to encourage one another.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;REMEMBER:&lt;br /&gt;EACH OF US IS A VITAL THREAD IN ANOTHER PERSON'S TAPESTRY; OUR LIVES ARE WOVEN TOGETHER FOR A REASON.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-745817369600680248?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/745817369600680248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=745817369600680248' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/745817369600680248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/745817369600680248'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/02/mousetrap.html' title='MouseTrap'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-4588422166223380747</id><published>2008-02-03T22:06:00.000-08:00</published><updated>2008-02-03T22:37:07.081-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Health Care'/><title type='text'>Health Care : HL7 V3 Foundation Documents</title><content type='html'>The HL7 V3 Foundation documents provide rich insight into this wonderful standard. The Foundation Documents are very well organized &amp;amp; are comfortable to read.&lt;br /&gt;&lt;br /&gt;You can find the foundation documents &lt;a href="http://www.hl7.org/v3ballot7/html/foundationdocuments/welcome/index.htm"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The Foundation Document details the new approach in HL7 V3  :-&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;HL7 V3 adopts an Object Oriented (OO) approach using Unified Modeling Language (UML) principles.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Reduced Optionality. Limiting optionality is a primary goal of HL7 V3. Within HL7 V2.x, almost every field is optional.Optionality makes it harder to precisely define the semantics of a specific message and makes it virtually impossible to generate conformance claims for messaging.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Conformance to HL7 V3 will be testable.&lt;/li&gt;&lt;/ul&gt;The Foundation documents are the best starting point to learn the HL7 V3 Standard.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-4588422166223380747?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/4588422166223380747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=4588422166223380747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/4588422166223380747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/4588422166223380747'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/02/health-care-hl7-v3-foundation-documents.html' title='Health Care : HL7 V3 Foundation Documents'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-5788843632732780084</id><published>2008-01-29T19:12:00.000-08:00</published><updated>2008-02-03T22:47:29.872-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Health Care'/><title type='text'>Health Care : HL7 Standard</title><content type='html'>&lt;p&gt;&lt;b&gt;" Health Level Seven&lt;/b&gt; (&lt;b&gt;HL7&lt;/b&gt;), is an all-volunteer, &lt;a href="http://en.wikipedia.org/wiki/Not-for-profit_organization" title="Not-for-profit organization"&gt;not-for-profit organization&lt;/a&gt; involved in development of international &lt;a href="http://en.wikipedia.org/wiki/Healthcare" title="Healthcare"&gt;healthcare&lt;/a&gt; standards. “HL7” is also used to refer to some of the specific standards created by the organization (i.e. HL7 v2.x, v3.0, HL7 &lt;a href="http://en.wikipedia.org/w/index.php?title=Reference_Information_Model&amp;amp;action=edit" class="new" title="Reference Information Model"&gt;RIM&lt;/a&gt; etc.).&lt;/p&gt; HL7 and its members provide a framework (and related standards) for the exchange, integration, sharing and retrieval of electronic health information. "&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;- Wikipedia&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;HL7 is a standard for Medical Applications to exchange information.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;The Health Care industry segment is divided into many domains such as patient care, laboratory information systems, etc. The HL7 standard enforces a consistency of stored and shared information across many domains in Health Care.&lt;br /&gt;&lt;br /&gt;The HL7 standard is continously being developed and enriched with new ideas. The HL7 committee has released six  versions of the HL7 standard ( collectively called as HL7 2.x ) :  &lt;ul class="list"&gt;&lt;li&gt;2.1&lt;/li&gt;&lt;li&gt;2.2&lt;/li&gt;&lt;li&gt;2.3&lt;/li&gt;&lt;li&gt;2.3.1&lt;/li&gt;&lt;li&gt;2.4&lt;/li&gt;&lt;li&gt;2.5&lt;/li&gt;&lt;/ul&gt;Hl7 2.x  is the first widely accepted and commercially successful standard. HL7 v2.x mostly uses a proprietary (non-XML) encoding syntax based on delimiters.&lt;br /&gt;&lt;br /&gt;HL7 3.0 is a complete rework of the HL7 standard. HL7  3.0 is an attempt to overcome some of the issues with HL7 2.x.  XML is medium for exchange of HL7 messages instead of the simple ASCII text that HL7 2.x used.&lt;br /&gt;&lt;br /&gt;The basis of HL7 v3.0 is a model called the Reference Information Model ( RIM ). RIM is an attempt to further standardize the HL7 specifications between health care systems.&lt;br /&gt;&lt;br /&gt;The differences between HL7 2.x and HL7 3.x are :-&lt;br /&gt;&lt;p&gt;&lt;strong&gt;HL7 2.x&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;HL7 2.x is the most popular and the most widely implemented HL7 standard in the US.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;HL7 2.x does not have a common information model that spans all Health care domains-of-interest.&lt;/li&gt;&lt;li&gt;HL7 2.x  does not have a robust data type specification.    &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;HL7 3.x&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;HL7 3.x is based on the RIM and attempts to bring consistency across the entire standard.&lt;/li&gt;&lt;li&gt;HL7 3.x defines a common information model based on the RIM.&lt;/li&gt;&lt;li&gt;HL7 3.x defines a data type specification.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;HL7 3.x is NOT backward compatible with HL7 2.x.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;HL7 V2 is focussed on the exchange of clinical clinical data between applications.  However, HL7 V3 is influenced by dedicated people who focus on how health care information is created &amp;amp; how it can be modeled.&lt;br /&gt;&lt;br /&gt;HL7 v3.0 is a dramatic shift from HL7 2.x and introduces a lot of new concepts.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-5788843632732780084?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/5788843632732780084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=5788843632732780084' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/5788843632732780084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/5788843632732780084'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/01/health-care-hl7-standard.html' title='Health Care : HL7 Standard'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-690701795345522829</id><published>2008-01-29T05:43:00.000-08:00</published><updated>2008-01-31T21:55:21.636-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Health Care'/><title type='text'>Health Care : Stakeholders interested in EHR</title><content type='html'>A Patient's EHR is of great interest to many stakeholders in the Health Care Industry. Each Stakeholder is interested in different aspects of a EHR.&lt;br /&gt;&lt;br /&gt;The important Stakeholders in the Health Care Industry are :-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Patient&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Providers&lt;/li&gt;&lt;li&gt;Payors&lt;/li&gt;&lt;li&gt;Suppliers&lt;/li&gt;&lt;li&gt;Academic Centers&lt;/li&gt;&lt;li&gt;Government&lt;/li&gt;&lt;/ul&gt;The interests of these Stakeholders vary - however, the source of information that will validate their assumptions and provide factual data is the EHR.&lt;br /&gt;&lt;br /&gt;The primary interests of these Stakeholders can be summarized thus :-&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Patient              : too understand the nature of the current ailment&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Providers          : the understand the Medical History of the patient.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Payors               : Insurance Companies, etc.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Suppliers           : to understand the current supply / demand for Drugs, etc.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Academic Centers : to understand the current trends in the field &amp;amp; research.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Government     : to understand the overall health status of the citizens in the country.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;E.g; If a patient is admitted to a new Hospital, the doctors would definitely be interested to know the Medical History of the patient &amp;amp; the treatment administered by other Providers.&lt;br /&gt;&lt;br /&gt;Hence, it is important that the EHR follow a standard. The standard should allow the Stakeholders to query the stored information or a subset of the information.&lt;br /&gt;&lt;br /&gt;The standard for the EHR should address consistency in two areas :-&lt;br /&gt;&lt;br /&gt;1. Storage of the data&lt;br /&gt;2. Retrieval of the data ( entire data / a subset of the data ).&lt;br /&gt;&lt;br /&gt;Health Level 7 ( HL7 ) is an international standard for storing and sharing clinical Health Information. HL7 is used to exchange EHR information as well as many other details across various Health care domains.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-690701795345522829?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/690701795345522829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=690701795345522829' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/690701795345522829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/690701795345522829'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/01/health-care-stakeholders-interested-in.html' title='Health Care : Stakeholders interested in EHR'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-7872677419114701999</id><published>2008-01-29T04:58:00.000-08:00</published><updated>2008-01-29T05:42:54.359-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Health Care'/><title type='text'>Health Care : Patient and Medical Record</title><content type='html'>The Health Care Industry is centered around the services that can be offered to a Patient. Patients and their Health Records offer tremendous insight into Medical Histories and is of great interest to many Stakeholders.&lt;br /&gt;&lt;br /&gt;A Patient is a person in need of Medical attention. The Medical attention could be care and treatment.&lt;br /&gt;&lt;br /&gt;The outcome of the Medical attention is :-&lt;br /&gt;&lt;br /&gt;1. a Medical Record&lt;br /&gt;2. a Bill for the offered Services.&lt;br /&gt;&lt;br /&gt;The Medical Record is a documentation of :-&lt;br /&gt;&lt;br /&gt;1. Observations made by the attending Medical Professional.&lt;br /&gt;2. Recommended Scans to study the problem further.&lt;br /&gt;3. Recommended care / Treatment.&lt;br /&gt;&lt;br /&gt;A collection of Medical Records is the Medical History of the patient. However, the term "Medical Record" is also used interchangeably to include the Medical History ( Health Record ) of the patient.&lt;br /&gt;&lt;br /&gt;An Electronic Medical Record ( EMR ) is a Medical Record in digital format. An EMR contains patient information from a single Health Care Provider ( a Doctor, a Hospital, etc. ).&lt;br /&gt;&lt;br /&gt;An Electronic Health Record ( EHR ) contains patient information from multiple Health Care Provider ( Doctors, Hospitals, etc. ). Hence, an EHR can be considered as a collection of EMRs ( this is my view of EMR and EHR ).&lt;br /&gt;&lt;br /&gt;Hence, a Health Care Provider contributes vital information about a Patient in the form of an EMR. The EMR in turn forms  a vital component of a Patient's EHR.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-7872677419114701999?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/7872677419114701999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=7872677419114701999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/7872677419114701999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/7872677419114701999'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/01/health-care-patient-and-medical-record.html' title='Health Care : Patient and Medical Record'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-7258102422311875256</id><published>2008-01-29T02:11:00.000-08:00</published><updated>2008-01-29T20:52:55.425-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Health Care'/><title type='text'>Health Care : What is Healthcare</title><content type='html'>&lt;b&gt; " &lt;span style="font-style: italic;"&gt;Health care&lt;/span&gt;&lt;/b&gt;&lt;span style="font-style: italic;"&gt;, or &lt;/span&gt;&lt;b style="font-style: italic;"&gt;healthcare&lt;/b&gt;&lt;span style="font-style: italic;"&gt;, is the prevention, treatment, and management of illness and the preservation of mental and physical well being through the services offered by the &lt;/span&gt;&lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Medicine" title="Medicine"&gt;medical&lt;/a&gt;&lt;span style="font-style: italic;"&gt;, &lt;/span&gt;&lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Nursing" title="Nursing"&gt;nursing&lt;/a&gt;&lt;span style="font-style: italic;"&gt;, and &lt;/span&gt;&lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Allied_health" title="Allied health"&gt;allied health&lt;/a&gt;&lt;span style="font-style: italic;"&gt; professions.&lt;/span&gt; "&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;- &lt;a href="http://en.wikipedia.org/wiki/Health_care"&gt;Wikipedia&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;I wanted to write about IT in Health Care and my understanding &amp;amp; views. I use the Health Care category in my Blog to categorize my learning &amp;amp; organize it.&lt;br /&gt;&lt;br /&gt;I have miles to go in learning an industry as exciting and diverse as Health Care - this section of my Blog is an attempt to capture my understanding and share it with the world.&lt;br /&gt;&lt;br /&gt;Please do let me know your thoughts &amp;amp; perspectives on the topics I have shared here.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-7258102422311875256?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/7258102422311875256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=7258102422311875256' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/7258102422311875256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/7258102422311875256'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/01/what-is-healthcare.html' title='Health Care : What is Healthcare'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-5882910843404490923</id><published>2008-01-28T00:16:00.000-08:00</published><updated>2008-01-28T00:36:30.038-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><title type='text'>Network Troubleshooting - 2 : Check the Adapters</title><content type='html'>Check the Network Card.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;A &lt;/span&gt;&lt;b style="font-style: italic;"&gt;network card&lt;/b&gt;&lt;span style="font-style: italic;"&gt;, &lt;/span&gt;&lt;b style="font-style: italic;"&gt;network adapter&lt;/b&gt;&lt;span style="font-style: italic;"&gt;, &lt;/span&gt;&lt;b style="font-style: italic;"&gt;LAN Adapter&lt;/b&gt;&lt;span style="font-style: italic;"&gt; or &lt;/span&gt;&lt;b style="font-style: italic;"&gt;NIC&lt;/b&gt;&lt;span style="font-style: italic;"&gt; (network interface card) is a piece of &lt;/span&gt;&lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Computer_hardware" title="Computer hardware"&gt;computer hardware&lt;/a&gt;&lt;span style="font-style: italic;"&gt; designed to allow computers to communicate over a &lt;/span&gt;&lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Computer_network" title="Computer network"&gt;computer network&lt;/a&gt;&lt;span style="font-style: italic;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;- &lt;a href="http://en.wikipedia.org/wiki/Network_card"&gt;Wikipedia&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;A Network card allows you to send / receive messages to / from other computers in the same Network. Hence, the next obvious checkpoint is the Network Card.&lt;br /&gt;&lt;br /&gt;You can use the simple PING command to ensure that the Network Card is working as expected. You just need to open a Command Prompt ( Terminal in LINUX ) &amp;amp; type :-&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;ping &lt;span style="font-weight: bold;"&gt;localhost&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;You should see a reply from the Network Card like this :-&lt;br /&gt;&lt;br /&gt;Pinging sandeep-personal [127.0.0.1] with 32 bytes of data:&lt;br /&gt;&lt;br /&gt;Reply from 127.0.0.1: bytes=32 time 1ms TTL=128&lt;br /&gt;Reply from 127.0.0.1: bytes=32 time 1ms TTL=128&lt;br /&gt;Reply from 127.0.0.1: bytes=32 time 1ms TTL=128&lt;br /&gt;Reply from 127.0.0.1: bytes=32 time 1ms TTL=128&lt;br /&gt;&lt;br /&gt;If you don't get this response, you can conclude on these :-&lt;br /&gt;&lt;br /&gt;1. The Network Card is not properly installed.&lt;br /&gt;2. The Network Card is not properly configured.&lt;br /&gt;3. The Network Card is no longer functional.&lt;br /&gt;&lt;br /&gt;Now, it's time to call up the IT Help Desk &amp;amp; tell them that there's a problem with the Network Card.&lt;br /&gt;&lt;br /&gt;At the end of this exercise, you have :-&lt;br /&gt;&lt;br /&gt;* tried some basic troubleshooting steps.&lt;br /&gt;* identified the source of the problem.&lt;br /&gt;* communicated effectively to the IT Support Staff.&lt;br /&gt;&lt;br /&gt;You can now confidently communicate with the IT Support Staff &amp;amp; they'd be more than happy to work with an "educated" colleague.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-5882910843404490923?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/5882910843404490923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=5882910843404490923' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/5882910843404490923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/5882910843404490923'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/01/network-troubleshooting-2-check.html' title='Network Troubleshooting - 2 : Check the Adapters'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-5551106103409122480</id><published>2008-01-25T02:43:00.000-08:00</published><updated>2008-01-28T00:32:22.032-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><title type='text'>Network Troubleshooting - 1 : Check the Cables</title><content type='html'>Check the Cables !&lt;br /&gt;&lt;br /&gt;Yes, the most simplest method is toe check if Network Cable is properly connected to the computer.&lt;br /&gt;&lt;br /&gt;Here's a small Checklist that I use :-&lt;br /&gt;&lt;br /&gt;* The Network Cable is connected correctly to the Network Card (usually, rear of the Computer)&lt;br /&gt;* The Network LEDs are flashing green - continuous or blinking.&lt;br /&gt;&lt;br /&gt;If any of the above are not correct, I am sure there's something wrong with connection. If the Cable is connected correctly &amp;amp; your computer is still unable to get on the Network, you might want to try with a new Network Cable.&lt;br /&gt;&lt;br /&gt;If it works - you have solved the problem :)&lt;br /&gt;&lt;br /&gt;If you don't get this response, you can conclude on these :-&lt;br /&gt;&lt;br /&gt;1. The Network Card is not able to get a signal from the Network.&lt;br /&gt;2. The Network Card is not properly installed.&lt;br /&gt; 3. The Network Card is not properly configured.&lt;br /&gt; 4. The Network Card is no longer functional.&lt;br /&gt;&lt;br /&gt;Now, it's time to call up the IT Help Desk &amp;amp; tell them that there's a problem with the Network Card.&lt;br /&gt;&lt;br /&gt;At the end of this exercise, you have :-&lt;br /&gt;&lt;br /&gt;* tried some basic troubleshooting steps.&lt;br /&gt;* identified the source of the problem.&lt;br /&gt;* communicated effectively to the IT Support Staff.&lt;br /&gt;&lt;br /&gt;You can now confidently communicate with the IT Support Staff &amp;amp; they'd be more than happy to work with an "educated" colleague.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-5551106103409122480?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/5551106103409122480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=5551106103409122480' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/5551106103409122480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/5551106103409122480'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/01/network-troubleshooting-1-check-cables.html' title='Network Troubleshooting - 1 : Check the Cables'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-902638770473083209</id><published>2008-01-25T02:15:00.000-08:00</published><updated>2008-01-25T02:58:13.789-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><title type='text'>Network Troubleshooting - 0 : Need</title><content type='html'>A fairly good understanding of Networking concepts is important if your are working on a Multi-Tiered Distributed Project.&lt;br /&gt;&lt;br /&gt;You could be working on JEE or any other Technology stack - without a basic understanding of he underlying network, you will frequently find yourself wondering why some of the components "don't talk to each other".&lt;br /&gt;&lt;br /&gt;You need to have a basic understanding of the underlying Network, a few common problems &amp;amp; simple troubleshooting.  It will help you articulate the nature of the problem to your Stakeholders &amp;amp; most importantly to your IT Help Desk Staff.&lt;br /&gt;&lt;br /&gt;I also ask a few networking questions during my interview sessions to gauge if the candiate if aware of some of the basic facts.&lt;br /&gt;&lt;br /&gt;I am definitely not an expert in Networking, but I would like to share some observations from my limited experience.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-902638770473083209?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/902638770473083209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=902638770473083209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/902638770473083209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/902638770473083209'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/01/network-troubleshooting-0.html' title='Network Troubleshooting - 0 : Need'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-6233296786885778777</id><published>2008-01-24T04:52:00.000-08:00</published><updated>2008-03-14T06:10:37.644-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EJB'/><title type='text'>EJB 3.1 : Formation of the Expert Group</title><content type='html'>The EJB 3.1 expert group is working on for the next version of the Java  EE EJB specification.&lt;br /&gt;&lt;br /&gt;EJB 3.0 brought simplicity to Java EE 5 by moving away from a  heavyweight programming model. EJB 3.1 aims to build on those successes  by moving further down the path of simplicity as well as adding a  handful of much-needed features.&lt;br /&gt;&lt;br /&gt;Here are a few interesting features :-&lt;br /&gt;&lt;br /&gt;1. EJB Interfaces are Optional.&lt;br /&gt;2. The Singleton Beans are Here&lt;br /&gt;3. Support for direct use of EJBs in the servlet container&lt;br /&gt;4. EJB Timer Service enhancements&lt;br /&gt;5. Support for stateful web services via Stateful Session Bean web  service endpoints.&lt;br /&gt;&lt;br /&gt;Reza Rehman is one of the members of the EJB 3.1 Expert group. He has  promised to write more articles in future regarding EJB 3.1.&lt;br /&gt;&lt;br /&gt;You can get  more information here :-&lt;br /&gt;&lt;br /&gt;&lt;a class="moz-txt-link-freetext" href="http://www.theserverside.com/tt/articles/article.tss?l=NewFeaturesinEJB3-1"&gt;http://www.theserverside.com/tt/articles/article.tss?l=NewFeaturesinEJB3-1&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-6233296786885778777?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/6233296786885778777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=6233296786885778777' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/6233296786885778777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/6233296786885778777'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/01/ejb-31-formation-of-expert-group.html' title='EJB 3.1 : Formation of the Expert Group'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-8093160933353540383</id><published>2008-01-24T04:29:00.000-08:00</published><updated>2008-01-24T04:48:13.750-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Requirements'/><title type='text'>User Requirements for User Interface Design</title><content type='html'>User interface is the face of your application &amp;amp; unless it thrills all the stakeholders, your Project is never going to be successful.&lt;br /&gt;&lt;br /&gt;I often notice the same mistakes committed in User Interface Design at the early stages of a Project. Here are some of those "evils"  :-&lt;br /&gt;&lt;br /&gt;1.  Scope : The Scope of the Project is usually not defined clearly &amp;amp; as a result, a lot of unwanted action items creep into the scope.&lt;br /&gt;&lt;br /&gt;2. Ambiguity : Often, the lack of clarity in defining a particular requirement leads to multiple interpretations.&lt;br /&gt;&lt;br /&gt;3. Assumptions : Often, the Developers assume things on the behalf of the Users. Again, this may lead to multiple interpretations.&lt;br /&gt;&lt;br /&gt;4. StakeHolders : it's very important to involve all the Stakeholders in the Project ( Users, Managers, Developers, etc. ) early. Else, UI redesign might become the main focus of the Project !&lt;br /&gt;&lt;br /&gt;Here are some thing that I do to capture the User Requirements ( on a Page/Page basis ) :-&lt;br /&gt;&lt;br /&gt;1. Description&lt;br /&gt;2. Trigger    &lt;br /&gt;3. Success &amp;amp; Failure Criteria.&lt;br /&gt;4. Items on the page&lt;br /&gt;5. Clairifications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-8093160933353540383?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/8093160933353540383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=8093160933353540383' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/8093160933353540383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/8093160933353540383'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2008/01/user-requirements-for-user-interface.html' title='User Requirements for User Interface Design'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-115158151130851387</id><published>2006-06-29T04:43:00.000-07:00</published><updated>2006-06-29T04:45:11.316-07:00</updated><title type='text'>Oracle : SQL  : TRUNC Function with DATE</title><content type='html'>The TRUNC Function can be used with a DATE Datatype to get interesting results. The TRUNC can be used to get the First Day of the Month, First Day of the year, etc.&lt;br /&gt;&lt;br /&gt;SQL&gt; SELECT TRUNC(SYSDATE,'YYYY') FROM DUAL;&lt;br /&gt;&lt;br /&gt;TRUNC(SYS&lt;br /&gt;---------&lt;br /&gt;01-JAN-06&lt;br /&gt;&lt;br /&gt;SQL&gt; SELECT TRUNC(SYSDATE,'MM') FROM DUAL;&lt;br /&gt;&lt;br /&gt;TRUNC(SYS&lt;br /&gt;---------&lt;br /&gt;01-JUN-06&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-115158151130851387?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/115158151130851387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=115158151130851387' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/115158151130851387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/115158151130851387'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2006/06/oracle-sql-trunc-function-with-date.html' title='Oracle : SQL  : TRUNC Function with DATE'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-113505119290192718</id><published>2005-12-19T19:57:00.000-08:00</published><updated>2005-12-19T19:59:52.916-08:00</updated><title type='text'>LINUX : Swap Space</title><content type='html'>I just learnt how to increase the swap space in LINUX - this link is good :&lt;br /&gt;&lt;br /&gt;http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/custom-guide/s1-swap-adding.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-113505119290192718?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandeepseshan.blogspot.com/feeds/113505119290192718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18303469&amp;postID=113505119290192718' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/113505119290192718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/113505119290192718'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2005/12/linux-swap-space.html' title='LINUX : Swap Space'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-113039555650540446</id><published>2005-10-26T23:43:00.000-07:00</published><updated>2005-10-26T23:45:56.516-07:00</updated><title type='text'>JavaScript " null " and "undefined"</title><content type='html'>JavaScript :&lt;br /&gt;&lt;br /&gt;I need to check if every object is null or undefined - if neither, I must proceed with the validation. Else, Javascript throws ugly errors on the screen.&lt;br /&gt;&lt;br /&gt;Check for null&lt;br /&gt;&lt;br /&gt;if(object!=null) // the object isn't null.&lt;br /&gt;&lt;br /&gt;Check for undefined&lt;br /&gt;&lt;br /&gt;if(object) // the object is not 'undefined'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-113039555650540446?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/113039555650540446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/113039555650540446'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2005/10/javascript-null-and-undefined.html' title='JavaScript &quot; null &quot; and &quot;undefined&quot;'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-18303469.post-113030630630815371</id><published>2005-10-25T22:55:00.000-07:00</published><updated>2005-10-25T22:58:26.313-07:00</updated><title type='text'>JavaScript DOM</title><content type='html'>I just discovered that JavaScript DOM does have some problems - I ran into problems doing the cross - browser testing. Apprarently, some part of the code didn't work in Netscape &amp; Mozilla.&lt;br /&gt;&lt;br /&gt;E.g; IE recognizes the &lt;span style="color: rgb(51, 51, 255);"&gt;parentElement&lt;/span&gt; keyword but Netscae wants &lt;span style="color: rgb(255, 0, 0);"&gt;parentNode&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I need to scrouge the net for a compatibility list.........&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18303469-113030630630815371?l=sandeepseshan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/113030630630815371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18303469/posts/default/113030630630815371'/><link rel='alternate' type='text/html' href='http://sandeepseshan.blogspot.com/2005/10/javascript-dom.html' title='JavaScript DOM'/><author><name>Sandeep Seshan</name><uri>http://www.blogger.com/profile/16984486602335978061</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
