<?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-1616408254489092693</id><updated>2011-11-27T16:56:15.038-08:00</updated><category term='Develop'/><category term='Server'/><category term='UML'/><category term='Tomcat'/><category term='SoapUI'/><category term='Design'/><category term='Architecture'/><category term='J2EE'/><category term='Database'/><category term='Eclipse'/><category term='HTML'/><title type='text'>Technical Gyan</title><subtitle type='html'>Tit bits of the gyan in the Technology space</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://techwheel.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://techwheel.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Aravind</name><uri>http://www.blogger.com/profile/13738844195261433118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_BpHmpm8QIio/SDlUZ8l2zfI/AAAAAAAAADU/QBjGOZg7rjU/S220/pisa_black_white.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1616408254489092693.post-5342950120420757280</id><published>2010-03-14T09:24:00.000-07:00</published><updated>2010-03-14T10:46:55.154-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tomcat'/><title type='text'>Thread dump in Tomcat</title><content type='html'>In a multithreaded environment if the implementation is not perfect, then deadlocks are common scenarios.  We can analyse the deadlocks by placing log statement at proper locations in the code and analyzing the log, however to exactly pinpoint a deadlock thread dump would be required.  Using the thread dump, we can exactly point out what are the two threads which are fighting for the monitor and prints the stack trace of each thread.  With the stack trace we can easily find the use case where the deadlock occurs.  There are many ways of getting the thread dump and few of them are listed below.&lt;br /&gt;&lt;br /&gt;Unix:&lt;br /&gt;Thread dump can be obtained in the appropriate log by sending the command &lt;br /&gt;&lt;span style="color:blue;"&gt;kill -3 PID&lt;/span&gt;, where PID is the process id of the Tomcat jvm.&lt;br /&gt;&lt;br /&gt;Windows:&lt;br /&gt;If your tomcat is running as a windows console, then you can open the console and type &amp;lt;ctrl&amp;gt;+&amp;lt;break&amp;gt;.  This would print out the thread dump on the console.  Make sure you increase the screen buffer memory size to capture the entire thread dump.  However If your tomcat is running as a windows service, then you can obtain the thread dump by using the Tomcat monitor.&lt;br /&gt;&lt;br /&gt;More on Tomcat as Windows service:&lt;br /&gt;The Tomcat service monitor when started will bring an icon on the system tray.  Right click on the icon and select "Thread Dump" in the menu options.  This will trigger the generation of thread dump and the thread dump stack trace will be logged to the file system based on the Tomcat service configuration.  &lt;br /&gt;&lt;br /&gt;With the default settings, the tomcat log redirection would be set to auto.  This can be verified by opening the Logging tab of the Tomcat service editor.  With the default configuration, the threaddump would be either in jakarta_service, stdout or stderr logs.  Or if you have configured tomcat service to redirect to a specific file then you will find the stack trace in the configured file.  However if you not configured the logging properly for the tomcat service, then the stack trace would be lost.  You will have to configure the service with proper values for logging and restart the tomcat service.&lt;br /&gt;&lt;br /&gt;There are also other hacks of sending the &amp;lt;ctrl&amp;gt;+&amp;lt;break&amp;gt; signal to the tomcat service.  For instance there is an application called SendSignal.exe which can send &amp;lt;ctrl&amp;gt;+&amp;lt;break&amp;gt; signal to tomcat service by running the command: &lt;span style="color:blue;"&gt;sendsignal PID&lt;/span&gt;, where PID is the process id of the tomcat service.  The thread dump stack trace would be logged to file system based the tomcat service configuration.  However it may not work in all scenarios based on the security settings.  Atleast I couldn't get it working as it always gave me the error related to insufficient privileges, though both the service and sendsignal were run by the same user.&lt;br /&gt;&lt;br /&gt;NOTE: &lt;span style="color:blue;"&gt;sc queryex &amp;lt;service_name&amp;gt;&lt;/span&gt; will give you the process id of the service.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616408254489092693-5342950120420757280?l=techwheel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techwheel.blogspot.com/feeds/5342950120420757280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1616408254489092693&amp;postID=5342950120420757280' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/5342950120420757280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/5342950120420757280'/><link rel='alternate' type='text/html' href='http://techwheel.blogspot.com/2010/03/thread-dump-in-tomcat.html' title='Thread dump in Tomcat'/><author><name>Aravind</name><uri>http://www.blogger.com/profile/13738844195261433118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_BpHmpm8QIio/SDlUZ8l2zfI/AAAAAAAAADU/QBjGOZg7rjU/S220/pisa_black_white.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616408254489092693.post-7175476227580656438</id><published>2010-03-13T11:22:00.000-08:00</published><updated>2010-03-14T10:52:50.303-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Tomcat'/><title type='text'>Tomcat as a Windows service</title><content type='html'>Tomcat, a very familiar name in J2ee world.  An excellent example of how open source is growing so powerful in the server domain.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;In Windows, Tomcat can be setup in two ways&lt;/div&gt;&lt;div&gt;1. Install the Tomcat as a standalone server&lt;/div&gt;&lt;div&gt;2. Install the Tomcat as a windows service&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first method is fairly simple, which is nothing but just extracting the tomcat archive and running the startup script to run the Tomcat.  Normally in a developers local system he would just extract the archive and run the Tomcat, however for running the Tomcat on the server the second method is preferred. Again there are two ways of installing Tomcat as a Windows service.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. If you are running the Tomcat installable exe file then follow the instructions to install the Tomcat as a service.&lt;/div&gt;&lt;div&gt;2. If you have just extracted the Tomcat and wish to setup Tomcat as a Windows service or If you have already installed the Tomcat with the default name and would like to install another Tomcat instance with different Windows service name, then there are set of steps one should follow.  Below are more details of the same.  Lets take a look of it one by one.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Under the Tomcat bin directory you would find two interesting executable files.  Assuming that you are using Tomcat with 6.x version, however if you are using different version then the file names would be different accordingly.&lt;/div&gt;&lt;div&gt;Tomcat6.exe - This is a service application for running Tomcat6 as Windows service&lt;/div&gt;&lt;div&gt;Tomcat6w.exe - GUI application for monitoring and configuring Tomcat services.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;By invoking these executables with specific parameters we can install, update, edit, run, stop, monitor, delete the Windows service.  However as these parameters are more techincal, Tomcat also provides a batch script, service.bat, with two simple commands install/remove.  The usage of this batch script is as below.&lt;/div&gt;&lt;div&gt;&lt;span style="color:blue;" style="white-space:nowrap"&gt;Usage: service install/remove [service_name]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The service_name is the name of the Windows service and is an optional parameter.  If you do not specify the service name then by default it will attempt to install/uninstall the service with name tomcat6.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you are planning to write a batch script of your own, similar to service.bat, then refer to Windows service HOW-TO in locally installed tomcat documentation or in the internet with link &lt;a href="http://tomcat.apache.org/tomcat-6.0-doc/windows-service-howto.html"&gt;http://tomcat.apache.org/tomcat-6.0-doc/windows-service-howto.html&lt;/a&gt;.  It would also help you by looking at what all are being configured in the service.bat script provided by Tomcat.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Tomcat6.exe is used to install, edit, run, stop and delete the Tomcat service.  However if you are looking for a GUI interface for editing the service configuration then the answer to this would be Tomcat6w.exe.  Tomcat6w.exe is used only for configuring and monitoring the Tomcat services, so it is a prerequisite to have the Tomcat service already installed for running Tomcat6w.exe.  There are two modes of running this application.&lt;/div&gt;&lt;div&gt;1. Run as a GUI based service editor&lt;/div&gt;&lt;div&gt;2. Run as a GUI based service monitor&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;By just running this exe without any parameter it would by default attempt to open the service editor with service name as file name without 'w'.  Here it would be Tomcat6, assuming that you are running Tomcat6w.exe.   If your service name is different, i.e., other than the Tomcat6, then you can open this service configuration by running the command: &lt;span style="color:blue;" style="white-space:nowrap"&gt;Tomcat6w //ES//&amp;lt;service_name&amp;gt;&lt;/span&gt;.  Or much simpler solution is to make a copy of this executable file and rename it as &amp;lt;service_name&amp;gt;w.exe.  In this case by just running this new file it would open the editor for windows service with the name as &amp;lt;service_name&amp;gt;.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To run the Tomcat as a monitor, you need to specify the command as: &lt;span style="color:blue;" style="white-space:nowrap"&gt;Tomcat6w //MS//&amp;lt;service_name&amp;gt;&lt;/span&gt;.  It would be beneficial if you write a simple batch script, say monitor.bat, under Tomcat bin directory with just above command for monitoring purpose.  Again remember if you have made a copy of Tomcat6w with service name as said above then the command can also be &lt;span style="color:blue;" style="white-space:nowrap"&gt;&amp;lt;service_name&amp;gt;w //MS//&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In summary, below steps help you in managing the Tomcat as a windows service.&lt;/div&gt;&lt;div&gt;1. Install: In command prompt, cd to Tomcat bin and run the command: &lt;span style="color:blue;" style="white-space:nowrap"&gt;service install &amp;lt;service_name&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;2. Edit: Make a copy of file tomcat6w.exe and rename it to &amp;lt;service_name&amp;gt;w.exe.  Just run this file to open service editor.&lt;/div&gt;&lt;div&gt;3. Monitor: Prepare a batch script with command: &lt;span style="color:blue;" style="white-space:nowrap"&gt;tomcat6w //MS//&amp;lt;service_name&amp;gt;&lt;/span&gt;  (or) &lt;span style="color:blue;" style="white-space:nowrap"&gt;&amp;lt;service_name&amp;gt;w //MS//&lt;/span&gt;.  Run this script to open service monitor.&lt;/div&gt;&lt;div&gt;4. Uninstall: In command prompt, cd to Tomcat bin and run the command: &lt;span style="color:blue;" style="white-space:nowrap"&gt;service remove &amp;lt;service_name&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note: The Windows service name and service display name are different and service name is case insensitive.&lt;/div&gt;&lt;div&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/1616408254489092693-7175476227580656438?l=techwheel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techwheel.blogspot.com/feeds/7175476227580656438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1616408254489092693&amp;postID=7175476227580656438' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/7175476227580656438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/7175476227580656438'/><link rel='alternate' type='text/html' href='http://techwheel.blogspot.com/2010/03/tomcat-as-windows-service.html' title='Tomcat as a Windows service'/><author><name>Aravind</name><uri>http://www.blogger.com/profile/13738844195261433118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_BpHmpm8QIio/SDlUZ8l2zfI/AAAAAAAAADU/QBjGOZg7rjU/S220/pisa_black_white.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616408254489092693.post-677550585863571500</id><published>2009-10-27T08:24:00.000-07:00</published><updated>2009-10-28T11:56:33.879-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SoapUI'/><title type='text'>SoapUI for Data Setup - Use Case</title><content type='html'>With Soap UI having very useful features, I find this tool helpful for more and more purpose than just testing and coverage.  In one of the product implementation, we were trying to setup the initial necessary data (basic and test data) in easy and best way.  We needed the initial setup of few organization profiles and users to proceed further in the product implementation.  We had three options - 1. Create manually through UI (painful), 2. Create through web service, 3. Write stored procedures (complicated).  As second option seemed easy and clean we built the web service requests and ran each of them to setup data.  However we felt there was still some more scope for improvement on this.  And then flashed the test suite functionality of SoapUI!!&lt;br /&gt;&lt;br /&gt;Once I had the idea it was very easy to setup the project on SoapUI with one test case under a test suite.  That's it.  I created one test step (web service request) for each profile to be created.  However user creation required some of the profile information.   Property Transfer came in handy to transfer the required values from the response of a specific profile creation request to the user creation request.  (I tried many ways to do this with Property Expansion, however couldn't find a way to do this).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_BpHmpm8QIio/SuiQhKz7x5I/AAAAAAAAAIs/e_P3Wur-i8A/s1600-h/soapui-AppDataSetup-snap.bmp"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 237px;" src="http://2.bp.blogspot.com/_BpHmpm8QIio/SuiQhKz7x5I/AAAAAAAAAIs/e_P3Wur-i8A/s320/soapui-AppDataSetup-snap.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5397723052915804050" /&gt;&lt;/a&gt;&lt;br /&gt;The snapshot of the setup is as shown in the figure.  As you can see there are multiple SOAP requests, one each for profile/user creation.  The property transfer worked fine, however I observed one weird behavior.  Though the response xml did not contain any namespace prefix, In Property Transfer I still had to declare the namespace and mention the xpath elements with this namespace prefix.  I still need to find a reason for this behavior.&lt;br /&gt;&lt;br /&gt;Another notable thing to mention here is to turn on the option to close http connection after every request.  Normally SoapUI will open a http connection and sends the web service requests one by one.  However due to few unknown problems on data size limit I encountered, the test case was failing at some point midway through the test steps.  However after turning on the option to close http connection after every request the data setup ran very smoothly.  This option can be accessed under File -&gt; Preferences -&gt; Http Settings.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616408254489092693-677550585863571500?l=techwheel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techwheel.blogspot.com/feeds/677550585863571500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1616408254489092693&amp;postID=677550585863571500' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/677550585863571500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/677550585863571500'/><link rel='alternate' type='text/html' href='http://techwheel.blogspot.com/2009/10/soapui-for-data-setup-use-case.html' title='SoapUI for Data Setup - Use Case'/><author><name>Aravind</name><uri>http://www.blogger.com/profile/13738844195261433118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_BpHmpm8QIio/SDlUZ8l2zfI/AAAAAAAAADU/QBjGOZg7rjU/S220/pisa_black_white.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_BpHmpm8QIio/SuiQhKz7x5I/AAAAAAAAAIs/e_P3Wur-i8A/s72-c/soapui-AppDataSetup-snap.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616408254489092693.post-4517322344261221084</id><published>2009-02-10T09:19:00.000-08:00</published><updated>2009-10-28T11:57:09.576-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SoapUI'/><title type='text'>SoapUI - Property Expansion</title><content type='html'>While profiling one of my web services I was looking for an effective tool for load testing my web service.  Initially thought of JMeter, but due to my happy experience with SoapUI in the past I decided to use SoapUI.&lt;br /&gt;&lt;br /&gt;My request xml had multiple fields however couple of fields I had to send the same data.  This wouldn't have been a problem during unit testing, but while load testing this service the value of these fields should be unique per test request.  So my problem was say If I am sending 50 requests then in each request the value of these fields though common should be unique.  Example request would be as below...&lt;br /&gt;&lt;pre style="border: thin solid rgb(0, 89, 155); font-size: 8pt; background-color: rgb(218, 225, 235); height: 100%; line-height: 100%; white-space: pre-wrap;"&gt;&amp;lt;soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:web = "http://www.xyz.com/webservices/"&amp;gt;&lt;br /&gt;&amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;&amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;   &amp;lt;web:MigrateOrdersRequest&amp;gt;&lt;br /&gt;       &amp;lt;web:Header&amp;gt;...&amp;lt;/web:Header&amp;gt;&lt;br /&gt;       &amp;lt;web:Credentials&amp;gt;...&amp;lt;web:Credentials&amp;gt;&lt;br /&gt;       &amp;lt;web:Order&amp;gt;&lt;br /&gt;           ...&lt;br /&gt;           &amp;lt;web:OrderNumber&amp;gt;PO10001&amp;lt;/web:OrderNumber&amp;gt;&lt;br /&gt;           ...&lt;br /&gt;           &amp;lt;web:OrderLines&amp;gt;&lt;br /&gt;               &amp;lt;web:OrderLine&amp;gt;&lt;br /&gt;                   ...&lt;br /&gt;                   &amp;lt;web:SerialNumber&amp;gt;PO10001&amp;lt;/web:SerialNumber&amp;gt;&lt;br /&gt;                   ...&lt;br /&gt;               &amp;lt;/web:orderLine&amp;gt;&lt;br /&gt;               &amp;lt;web:OrderLine&amp;gt;...&amp;lt;/web:OrderLine&amp;gt;&lt;br /&gt;           &amp;lt;/web:OrderLines&amp;gt;&lt;br /&gt;       &amp;lt;/web:Order&amp;gt;&lt;br /&gt;   &amp;lt;web:MigrateOrdersRequest&amp;gt;&lt;br /&gt;&amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;&amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here I have to pass both PO number and Serial Number unique and same.  I initially looked for groovy script, but didn't work out for me.  The other feature which really impressed me was Property Expansion which really did it.  The property expansion will evaluate the property for you in the soap request may be it is from implicit objects, properties or any random math expression.&lt;br /&gt;&lt;br /&gt;The solution initially looked tough was very very simple in the end.  I just created a new TestCase in my soapUI testSuite with just one test step which was the soap request.  And I created a load test step in the same test case (visibly load test will have only one test step).  I used simple strategy with limit as 5 seconds and Test Delay of 5000 milliseconds and giving as many threads as required to mimic the scenario where 'n' (say 50) test requests hit the server.  With other strategies where Test Delay was lesser than limit, the counter was not actually unique as the same thread after Test Delay was creating a new request.  The modified request is as below.&lt;br /&gt;&lt;pre style="border: thin solid rgb(0, 89, 155); font-size: 8pt; background-color: rgb(218, 225, 235); height: 100%; line-height: 100%; white-space: pre-wrap;"&gt;&amp;lt;soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:web = "http://www.xyz.com/webservices/"&amp;gt;&lt;br /&gt;&amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;&amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;   &amp;lt;web:MigrateOrdersRequest&amp;gt;&lt;br /&gt;       &amp;lt;web:Header&amp;gt;...&amp;lt;/web:Header&amp;gt;&lt;br /&gt;       &amp;lt;web:Credentials&amp;gt;...&amp;lt;web:Credentials&amp;gt;&lt;br /&gt;       &amp;lt;web:Order&amp;gt;&lt;br /&gt;           ...&lt;br /&gt;           &amp;lt;web:OrderNumber&amp;gt;PO1000${=context.getProperty("ThreadIndex")}${=context.getProperty("RunCount")}&amp;lt;/web:OrderNumber&amp;gt;&lt;br /&gt;           ...&lt;br /&gt;           &amp;lt;web:OrderLines&amp;gt;&lt;br /&gt;               &amp;lt;web:OrderLine&amp;gt;&lt;br /&gt;                   ...&lt;br /&gt;                   &amp;lt;web:SerialNumber&amp;gt;PO1000${=context.getProperty("ThreadIndex")}${=context.getProperty("RunCount")}&amp;lt;/web:SerialNumber&amp;gt;&lt;br /&gt;                   ...&lt;br /&gt;               &amp;lt;/web:orderLine&amp;gt;&lt;br /&gt;               &amp;lt;web:OrderLine&amp;gt;...&amp;lt;/web:OrderLine&amp;gt;&lt;br /&gt;           &amp;lt;/web:OrderLines&amp;gt;&lt;br /&gt;       &amp;lt;/web:Order&amp;gt;&lt;br /&gt;   &amp;lt;web:MigrateOrdersRequest&amp;gt;&lt;br /&gt;&amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;&amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here after every load test the PO1000 needs to be modified to give next set of unique numbers.  The catch here is that ${=&amp;lt;expression&amp;gt;}was actually evaluating to a value by soapUI at runtime.  This expression can be any expression with the objects available in the context like properties, implicits etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616408254489092693-4517322344261221084?l=techwheel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techwheel.blogspot.com/feeds/4517322344261221084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1616408254489092693&amp;postID=4517322344261221084' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/4517322344261221084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/4517322344261221084'/><link rel='alternate' type='text/html' href='http://techwheel.blogspot.com/2009/02/soapui-property-expansion.html' title='SoapUI - Property Expansion'/><author><name>Aravind</name><uri>http://www.blogger.com/profile/13738844195261433118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_BpHmpm8QIio/SDlUZ8l2zfI/AAAAAAAAADU/QBjGOZg7rjU/S220/pisa_black_white.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616408254489092693.post-3227998808035199976</id><published>2009-02-07T10:14:00.001-08:00</published><updated>2009-02-07T21:04:25.536-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='Design'/><title type='text'>Database design - basics</title><content type='html'>Working&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616408254489092693-3227998808035199976?l=techwheel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techwheel.blogspot.com/feeds/3227998808035199976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1616408254489092693&amp;postID=3227998808035199976' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/3227998808035199976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/3227998808035199976'/><link rel='alternate' type='text/html' href='http://techwheel.blogspot.com/2009/02/database-design-basics.html' title='Database design - basics'/><author><name>Aravind</name><uri>http://www.blogger.com/profile/13738844195261433118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_BpHmpm8QIio/SDlUZ8l2zfI/AAAAAAAAADU/QBjGOZg7rjU/S220/pisa_black_white.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616408254489092693.post-6947792409215755877</id><published>2009-02-06T20:13:00.000-08:00</published><updated>2009-02-08T09:31:47.296-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Design'/><title type='text'>Design - Singleton Pattern</title><content type='html'>JVM is a virtual machine where you find threads, objects, classes, classloaders, garbage collector etc having their own living space in the machine.  Of all these it is the threads which keeps the metabolism going.  When all the threads are dead the virtual machine dies.  During its lifetime these threads create, edit or act upon multiple objects.  Objects hold data and defines the behavior.  In certain instances we need specialized objects holding data which needs to be shared across the virtual machine.  This requires us to maintain only one instance of the object which is shared across multiple threads in the jvm.  This is defined by Singleton pattern.  Below are my thoughts and understandings of this pattern.&lt;br /&gt;&lt;br /&gt;The basic definition of this pattern is as below.&lt;br /&gt;1. Make the object constructor private.  This allows the control on object creation.&lt;br /&gt;2. Define the static object reference to self to hold the instance of this object.&lt;br /&gt;3. Define the static getter method to get a reference to the object.&lt;br /&gt;There are many flavors of pattern implementation, which are as below.&lt;br /&gt;&lt;br /&gt;A. A very simple way of implementing Singleton is as below.  This works in both the situations of single and multi-threaded environment.&lt;br /&gt;&lt;pre style="font-size:8pt;background-color:#DAE1EB;height:100%;border:solid thin #00599B;line-height:100%;"&gt;public class Singleton{&lt;br /&gt;   private static final Singleton instance = new Singleton();&lt;br /&gt;   //Other data attributes go here...&lt;br /&gt;   private Singleton(){}&lt;br /&gt;   public static Singleton getInstance(){&lt;br /&gt;      return instance;&lt;br /&gt;   }&lt;br /&gt;   //Other methods go here...&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The above method is simple and very effective, but this may not be desirable in few design situations.  The above method does early initialization of the object while the below methods talk about the lazy initializations.&lt;br /&gt;&lt;br /&gt;B. When more control is needed, like handling the situations when the initialization in the constructor throwing exception.  Though exception may be handled in the constructor or a new exception can be thrown from constructor, we may want to return null value to the to the calling method rather than return this partially initialized instance.&lt;br /&gt;&lt;pre style="font-size:8pt;background-color:#DAE1EB;height:100%;border:solid thin #00599B;line-height:100%;"&gt;//CASE: Single threaded environment:&lt;br /&gt;public class Singleton{&lt;br /&gt;   private static Singleton instance = null;&lt;br /&gt;   //Other data attributes go here...&lt;br /&gt;   private Singleton(){}&lt;br /&gt;   public static Singleton getInstance(){&lt;br /&gt;      if(instance = null) instance = new Singleton();&lt;br /&gt;      return instance;&lt;br /&gt;   }&lt;br /&gt;   //Other methods go here...&lt;br /&gt;}&lt;br /&gt;//CASE: Multi threaded environment&lt;br /&gt;public class Singleton{&lt;br /&gt;   private static Singleton instance = null;&lt;br /&gt;   //Other data attributes go here...&lt;br /&gt;   private Singleton(){}&lt;br /&gt;   private static synchronized Singleton createInstance(){&lt;br /&gt;      if(instance == null){&lt;br /&gt;         //Exception handling can be done here.&lt;br /&gt;         instance = new Singleton();&lt;br /&gt;      }&lt;br /&gt;      return instance;&lt;br /&gt;   }&lt;br /&gt;   public static Singleton getInstance(){&lt;br /&gt;      Singleton singleton = instance;&lt;br /&gt;      if(singleton = null){&lt;br /&gt;         singleton = createInstance();&lt;br /&gt;      }&lt;br /&gt;      return singleton;&lt;br /&gt;   }&lt;br /&gt;   //Other methods go here...&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;C. There is also the other reason why we may not do the early initialization.  If we wish to extend from the Singleton class.  Below style talks of this in the multi threaded environment.&lt;br /&gt;&lt;pre style="font-size:8pt;background-color:#DAE1EB;height:100%;border:solid thin #00599B;line-height:100%;"&gt;//CASE: Parent:&lt;br /&gt;public class Singleton{&lt;br /&gt;   protected static Singleton instance = null;&lt;br /&gt;   //Other data attributes go here...&lt;br /&gt;   protected Singleton(){}&lt;br /&gt;   private static synchronized Singleton createInstance(){&lt;br /&gt;      if(instance == null){&lt;br /&gt;         instance = new Singleton();&lt;br /&gt;      }&lt;br /&gt;      return instance;&lt;br /&gt;   }&lt;br /&gt;   public static Singleton getInstance(){&lt;br /&gt;      Singleton singleton = instance;&lt;br /&gt;      if(singleton = null){&lt;br /&gt;         singleton = createInstance();&lt;br /&gt;      }&lt;br /&gt;      return singleton;&lt;br /&gt;   }&lt;br /&gt;   //Other methods go here...&lt;br /&gt;}&lt;br /&gt;//CASE: Child&lt;br /&gt;public class ChildSingleton extends Singleton{&lt;br /&gt;   //Other data attributes go here...&lt;br /&gt;   protected ChildSingleton(){}&lt;br /&gt;   private static synchronized Singleton createInstance(){&lt;br /&gt;      //Overriding the createInstance behaviour&lt;br /&gt;      if(instance == null){&lt;br /&gt;         instance = new ChildSingleton();&lt;br /&gt;      }&lt;br /&gt;      return instance;&lt;br /&gt;   }&lt;br /&gt;   //Other methods go here...&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;However be careful in the above method as the protected access specifier indicates that it can be accessed by the other classes in the same package as well, which gives a leak to create multiple instances.&lt;br /&gt;&lt;br /&gt;D.One of the good approaches I have come across.  This works well in all situations and is lazy initialization as well.&lt;br /&gt;&lt;pre style="font-size:8pt;background-color:#DAE1EB;height:100%;border:solid thin #00599B;line-height:100%;"&gt;public class Singleton{&lt;br /&gt;   //Other data attributes go here...&lt;br /&gt;   private Singleton(){}&lt;br /&gt;&lt;br /&gt;   public static Singleton getInstance(){&lt;br /&gt;      return SingletonHolder.INSTANCE;&lt;br /&gt;   }&lt;br /&gt;   //Other methods go here...&lt;br /&gt;&lt;br /&gt;   //Inner class&lt;br /&gt;   private static class SingletonHolder{&lt;br /&gt;      private static final Singleton INSTANCE = new Singleton();&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;But beware that Singleton may not really be a single instance and there can be many leaks.  There are some more good articles on this topic.  Few of them are mentioned below.&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Singleton_pattern"&gt;http://en.wikipedia.org/wiki/Singleton_pattern&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-04-2003/jw-0425-designpatterns.html"&gt;http://www.javaworld.com/javaworld/jw-04-2003/jw-0425-designpatterns.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616408254489092693-6947792409215755877?l=techwheel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techwheel.blogspot.com/feeds/6947792409215755877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1616408254489092693&amp;postID=6947792409215755877' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/6947792409215755877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/6947792409215755877'/><link rel='alternate' type='text/html' href='http://techwheel.blogspot.com/2009/02/design-singleton-pattern.html' title='Design - Singleton Pattern'/><author><name>Aravind</name><uri>http://www.blogger.com/profile/13738844195261433118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_BpHmpm8QIio/SDlUZ8l2zfI/AAAAAAAAADU/QBjGOZg7rjU/S220/pisa_black_white.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616408254489092693.post-6056482098581590359</id><published>2009-01-29T21:31:00.001-08:00</published><updated>2009-02-06T18:55:56.929-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Develop'/><category scheme='http://www.blogger.com/atom/ns#' term='J2EE'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>J2EE Remote debugging</title><content type='html'>To enable remote debugging both server and client needs to be configured.  The server should be enabled to listen to debug connections and client should open a connection and interact with server for debug information.  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;On the Server:&lt;/b&gt;&lt;br /&gt;Below are the jvm parameters which have to be passed to any server to enable debugging.&lt;br /&gt;&lt;span style="color:blue;"&gt;-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7010&lt;/span&gt;&lt;br /&gt;Below are the meaning of each parameter&lt;br /&gt;&lt;span style="color:blue;"&gt;Xdebug&lt;/span&gt;- Enables debugging (start the jvm and listen to debug connections)&lt;br /&gt;&lt;span style="color:blue;"&gt;Xnoagent&lt;/span&gt;- Disables VM support for old jdb.  Basically it disables the old way of communicating with the debugee.  It is optional.&lt;br /&gt;&lt;span style="color:blue;"&gt;Xrunjdwp&lt;/span&gt;-Makes use of transport and the JDWP protocol to communicate with a separate debugger application.  The sub-options specify the details required like&lt;br /&gt;    transport=dt_socket specifies to use socket connection on the port specified by the address.&lt;br /&gt;    transport=dt_shmem uses available shared memory transport address.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;On the Client: (Here it is eclipse)&lt;/b&gt;&lt;br /&gt;Follow the steps below:&lt;br /&gt;1. Open java perspective&lt;br /&gt;2. Open the java class where you want to place breakpoint&lt;br /&gt;3. Add breakpoint&lt;br /&gt;4. Now Go to menu bar Run-&gt;Debug Configurations (In older versions I think it is Run-&gt;Open Debug Dialog).&lt;br /&gt;5. Right click on the 'Remote Java Application' in the left section of popup window.  select New.&lt;br /&gt;6. The class and package would be automatically selected for you as you had opened the java file just before you opened debug configurations.&lt;br /&gt;7. Give proper host and port as mentioned in the server above, Apply and click debug.&lt;br /&gt;8. Once you click debug eclipse will try to connect to server on the port.&lt;br /&gt;Now run the application and you will see that the the program control would stop at the breakpoint you just added when your breakpoint is reached in the program flow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616408254489092693-6056482098581590359?l=techwheel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techwheel.blogspot.com/feeds/6056482098581590359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1616408254489092693&amp;postID=6056482098581590359' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/6056482098581590359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/6056482098581590359'/><link rel='alternate' type='text/html' href='http://techwheel.blogspot.com/2009/01/j2ee-remote-debugging.html' title='J2EE Remote debugging'/><author><name>Aravind</name><uri>http://www.blogger.com/profile/13738844195261433118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_BpHmpm8QIio/SDlUZ8l2zfI/AAAAAAAAADU/QBjGOZg7rjU/S220/pisa_black_white.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616408254489092693.post-4861977595586227750</id><published>2008-10-19T10:50:00.000-07:00</published><updated>2009-02-05T20:26:32.185-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>More Eclipse!!</title><content type='html'>1. Update the file &amp;lt;eclipse&amp;gt;\configuration\.settings\org.eclipse.ui.ide.prefs to edit or remove RECENT workspaces popup.&lt;br /&gt;2. Useful short cut keys&lt;br /&gt;   &amp;lt;ctrl&amp;gt; + &amp;lt;space&amp;gt; = on the editor this does smart insert&lt;br /&gt;   &amp;lt;ctrl&amp;gt; + &amp;lt;shift&amp;gt; + r = open resource (can be any file java, xml etc)&lt;br /&gt;   &amp;lt;ctrl&amp;gt; + &amp;lt;shift&amp;gt; + t = open type (java/class file, even searches inside the library jars.&lt;br /&gt;   &amp;lt;ctrl&amp;gt; + w = close currently open editor window in workspace&lt;br /&gt;   &amp;lt;ctrl&amp;gt; + &amp;lt;shift&amp;gt; + w = close all open editor windows in workspace&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616408254489092693-4861977595586227750?l=techwheel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techwheel.blogspot.com/feeds/4861977595586227750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1616408254489092693&amp;postID=4861977595586227750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/4861977595586227750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/4861977595586227750'/><link rel='alternate' type='text/html' href='http://techwheel.blogspot.com/2008/10/more-eclipse.html' title='More Eclipse!!'/><author><name>Aravind</name><uri>http://www.blogger.com/profile/13738844195261433118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_BpHmpm8QIio/SDlUZ8l2zfI/AAAAAAAAADU/QBjGOZg7rjU/S220/pisa_black_white.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616408254489092693.post-9166649090430601817</id><published>2008-06-25T01:14:00.000-07:00</published><updated>2009-02-06T02:40:33.273-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UML'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Design'/><title type='text'>UML - Building Blocks</title><content type='html'>UML defines how the system or application can be represented visually in number of diagrams.  The System's design is basically made of diagrams and the diagrams contain many related elements.  A system's architecture and specification is shown with multiple diagrams.  There are various diagrams which UML defines which can be used to show the system at various levels and views.  All the diagrams and the elements in it constitute the model of the software system or application.  The model is nothing but the blueprint of the system.&lt;br /&gt;&lt;br /&gt;To understand UML, one needs to understand basic building blocks, rules guiding them and the common design concepts.  &lt;br /&gt;&lt;br /&gt;The building blocks (vocabulary of language) of UML are:&lt;br /&gt;1. Things&lt;br /&gt;2. Relationships&lt;br /&gt;3. Diagrams&lt;br /&gt;Lets go one by one to get a better picture...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Things&lt;/b&gt; are the elements of UML model which is used to build a model&lt;br /&gt;There are four kinds of things in the UML&lt;br /&gt;i) Structural things (nouns) - Classes, Interfaces, Collaborations, Use Cases, Active Classes, components and nodes&lt;br /&gt;ii) Behavioral things (verbs) - Interaction (messages exchanged), State machine&lt;br /&gt;iii) Grouping things (organisation of structural things) - Package&lt;br /&gt;iv) Annotational things (documentation) - Annotations&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Relationships&lt;/b&gt; are the elements which indicate how two or more things are related to each other.  There are various relationships, which are:&lt;br /&gt;i) Dependency (semantic relation) - indicates that change to one thing may affect the semantics of other thing.  One of the commonly seen relation is Use-Dependency, where one thing uses other thing to perform certain action.&lt;br /&gt;ii) Association (structural relation) - indicates whole and its part relationship&lt;br /&gt;iii) Generalization (inheritence relation) - the specialized element (the child) are substitutable for objects of generalized element (the parent).  In this way the child shares the structure and behavior of the parent.&lt;br /&gt;iv) Realization - one classifier specifies the contract that another classifier gaurantees to carry out. This relationship can be found in two places: between interfaces and the classes or components that realize them, and between use cases and the collaborations that realize them.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Diagrams&lt;/b&gt; are the graphical representation using things and relationships to visualize a system with specific perspective.  So a diagram is a projection into a system. In theory, a diagram may contain any combination of things and relationships.  In Practice, however, a small number of common combinations arise, which are consistent with five most useful views that comprise the architecture of a software-intensive system.  In UML1.0 there are nine such diagrams supporting this.&lt;br /&gt;1. Class Diagram&lt;br /&gt;2. Object Diagram&lt;br /&gt;3. Use Case Diagram&lt;br /&gt;4. Sequence Diagram&lt;br /&gt;5. Collaboration Diagram&lt;br /&gt;6. Statechart Diagram&lt;br /&gt;7. Activity Diagram&lt;br /&gt;8. Component Diagram&lt;br /&gt;9. Deployment Diagram&lt;br /&gt;&lt;br /&gt;Out of these Class Diagrams, Object Diagrams, Component Diagrams and Deployment Diagrams indicate the structural specification of the software system and the rest of the diagrams are useful in projecting the behaviour of the system.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616408254489092693-9166649090430601817?l=techwheel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techwheel.blogspot.com/feeds/9166649090430601817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1616408254489092693&amp;postID=9166649090430601817' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/9166649090430601817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/9166649090430601817'/><link rel='alternate' type='text/html' href='http://techwheel.blogspot.com/2008/06/uml-basics.html' title='UML - Building Blocks'/><author><name>Aravind</name><uri>http://www.blogger.com/profile/13738844195261433118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_BpHmpm8QIio/SDlUZ8l2zfI/AAAAAAAAADU/QBjGOZg7rjU/S220/pisa_black_white.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616408254489092693.post-6241530526067777140</id><published>2008-05-24T22:44:00.000-07:00</published><updated>2009-02-05T20:26:46.823-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>preformated &lt;pre&gt; text wrap</title><content type='html'>Pre tag displays the text "As-Is" typed in the html tag.  However some times it doesn't give the desired effect, when the text content is continuous and doesn't have line breaks.  Below code-snippet could help in defining the pre tag style to wrap the text and render the remaining starting from next line.&lt;br /&gt;&lt;pre class="snippet"&gt;/* Browser specific (not valid) styles to make preformatted text wrap */  &lt;br /&gt;pre {&lt;br /&gt;white-space: pre-wrap;       /* css-3 */&lt;br /&gt;white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */&lt;br /&gt;white-space: -pre-wrap;      /* Opera 4-6 */&lt;br /&gt;white-space: -o-pre-wrap;    /* Opera 7 */&lt;br /&gt;word-wrap: break-word;       /* Internet Explorer 5.5+ */&lt;br /&gt;}&lt;/pre&gt;Reference and more information:&lt;br /&gt;http://www.w3.org/TR/css3-text/#white-space&lt;br /&gt;http://www.w3.org/TR/CSS21/text.html&lt;br /&gt;http://users.tkk.fi/~tkarvine/pre-wrap-css3-mozilla-opera-ie.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616408254489092693-6241530526067777140?l=techwheel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techwheel.blogspot.com/feeds/6241530526067777140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1616408254489092693&amp;postID=6241530526067777140' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/6241530526067777140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/6241530526067777140'/><link rel='alternate' type='text/html' href='http://techwheel.blogspot.com/2008/05/preformated-text-wrap.html' title='preformated &amp;lt;pre&amp;gt; text wrap'/><author><name>Aravind</name><uri>http://www.blogger.com/profile/13738844195261433118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_BpHmpm8QIio/SDlUZ8l2zfI/AAAAAAAAADU/QBjGOZg7rjU/S220/pisa_black_white.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616408254489092693.post-1563567417039952728</id><published>2008-04-23T23:31:00.002-07:00</published><updated>2009-02-05T20:26:32.185-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>eclipse.ini</title><content type='html'>Troubleshooting steps when eclipse is not running.... (Learnings from web)&lt;br /&gt;&lt;br /&gt;I.&lt;br /&gt;1.) Go to where ever you extracted Eclipse&lt;br /&gt;2.) Do you see any folders with the name of ".metadata"?&lt;br /&gt;3.) If so, delete the following files:&lt;br /&gt;      \.metadata\.plugins\org.eclipse.core.resources\.sn ap&lt;br /&gt;      \.metadata\.plugins\org.eclipse.core.resources\.ro ot\.markers.snap&lt;br /&gt;&lt;br /&gt;II.&lt;br /&gt;1.) Look for any .log files present in the root directory of wherever you installed Eclipse? These give better idea of the problem.&lt;br /&gt;&lt;br /&gt;III.&lt;br /&gt;1.) Go to the Eclipse directory of where you installed it.&lt;br /&gt;2.) Double click the eclipse.ini file to edit it.&lt;br /&gt;3.) Find the following code:Code: --launcher.XXMaxPermSize&lt;br /&gt;4.) Change it to:Code: -launcher.XXMaxPermSize Or, just remove that extraneous dash there.&lt;br /&gt;5.) Save the file, re-open Eclipse.&lt;br /&gt;&lt;br /&gt;IV.&lt;br /&gt;1.) Go to the Eclipse directory of where you installed it (like the last two), and make a copy of eclipse.ini and paste it OUTSIDE of the Eclipse directory.E.g., for me, I have Eclipse installed at: C:\projects\tools\eclipse; I copy eclipse.ini into C:\.&lt;br /&gt;2.) With the eclipse.ini in the eclipse directory, double click it to edit it, select all, delete all contents, save, and then try opening Eclipse again.&lt;br /&gt;&lt;br /&gt;V.&lt;br /&gt;1.) Download an unaltered, unmodified, and latest version of Eclipse and extract it anywhere, apart from where you previously extracted the instance of Eclipse you are using now, and start it up.&lt;br /&gt;2.) If it exhibits the same symptoms as before, i.e. it doesn't start and shows the same error message, then there's something wrong somewhere, log files may help.&lt;br /&gt;&lt;br /&gt;VI.&lt;br /&gt;1.) Although this is IBM's Rational Software Development Platform, at its core, it's still Eclipse: &lt;a href="http://www-1.ibm.com/support/docview...04%204rational"&gt;http://www-1.ibm.com/support/docview...04%204rational&lt;/a&gt;&lt;br /&gt;2.) Follow the instructions, linked above, and see if it works out for you.&lt;br /&gt;&lt;br /&gt;----------------------------------------------------------------------&lt;br /&gt;Make sure no eclipse or Java™ process is running in Task Manager, and see if you can kill all processes before this test is run.&lt;br /&gt;1. Manually delete the cache files at:&lt;br /&gt;C:\Documents and Settings\&lt;userid&gt;\Local Settings\Application Data\javasharedresources&lt;br /&gt;Now run .&lt;br /&gt;2. If it does not work:&lt;br /&gt;- set CLASSPATH to be empty by issuing a command line "set CLASSPATH=" and try starting using eclipse.exe/eclipse and delete cache again if it fails&lt;br /&gt;- set PATH to "." by issuing command line "set PATH=." and try starting using eclipse.exe/eclipse and delete cache file if it fails&lt;br /&gt;&lt;br /&gt;Increase the amount of virtual memory available on the system from the Windows settings (reboot machine to take effect) and also ensure the running the app has plenty of free space and their user profile is not size restricted. If a user's profile (C:\Documents and Settings\&lt;userid&gt;) has a space limitation set on it, the JVM may not be able to allocate space to cache.&lt;br /&gt;***Save a copy of the "eclipse.ini" before making any changes ***&lt;br /&gt;&lt;br /&gt;----------------------------------------&lt;br /&gt;Final Try (for windows os)!!!&lt;br /&gt;In the above method, it may help to set the environment variable 'Path' with the &amp;lt;jdk_install_path&amp;gt;\bin in the beginning of the path variable ("Note: we are NOT appending this value in the end").&lt;br /&gt;The reason for doing this is because while installing few programs, the java executables (java.exe, javaw.exe...) gets installed under windows system folder.  And as this occurs in the beginning of the 'Path' there can be jdk version mismatch, because of which eclipse doesn't startup.&lt;br /&gt;This can be set in advanced tab of system properties dialog box.&lt;br /&gt;eg., set path=c:\j2sdk1.4.2_05\bin;%path% and start eclipse.&lt;br /&gt;----------------------------------------&lt;br /&gt;Wiki: &lt;a href="http://wiki.eclipse.org/Eclipse.ini"&gt;http://wiki.eclipse.org/Eclipse.ini&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616408254489092693-1563567417039952728?l=techwheel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techwheel.blogspot.com/feeds/1563567417039952728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1616408254489092693&amp;postID=1563567417039952728' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/1563567417039952728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/1563567417039952728'/><link rel='alternate' type='text/html' href='http://techwheel.blogspot.com/2008/04/eclipseini.html' title='eclipse.ini'/><author><name>Aravind</name><uri>http://www.blogger.com/profile/13738844195261433118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_BpHmpm8QIio/SDlUZ8l2zfI/AAAAAAAAADU/QBjGOZg7rjU/S220/pisa_black_white.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616408254489092693.post-1216170649568970323</id><published>2008-04-23T23:31:00.001-07:00</published><updated>2009-02-06T20:09:16.647-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UML'/><category scheme='http://www.blogger.com/atom/ns#' term='Design'/><title type='text'>UML - Why?</title><content type='html'>The so called "Programming World" started much before the world's first single chip microprocessor, Intel 4004 was invented in November, 1971.  It has been evolving since then, with newer paradigms seeding the birth of new languages.  As the computing power of the processors increasing at a rapid pace from 8085, 80x86, etc, the programming languages are able to stretch themselves making the language more flexible, efficient and readable.  Today, robots are being programmed to understand not just the syntax and semantics but also the pragmatics of the language.  Let us not get that far but try to understand where the current programming languages are leading to.  For those who are interested in the chronology of languages they can take a look at this site &lt;a href="http://www.scriptol.org/history.php"&gt;http://www.scriptol.org/history.php&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Broadly the programming styles can be categorized into two: Imperative and Declarative (See &lt;a href="http://en.wikipedia.org/wiki/Programming_paradigm"&gt;http://en.wikipedia.org/wiki/Programming_paradigm&lt;/a&gt; for more paradigms).  Every language is basically a set of language grammar which the language compiler translates to machine understandable instructions.  &lt;br /&gt;&lt;br /&gt;Most of the languages which were used for development were typed and with the increasing complexity of software development, there arose a necessity for a language which a human can easily understand.  The advent of Object Oriented paradigm helped in this direction with the concepts of objects and behavior similar to the real world objects.  During 1990's UML or Unified Modeling Language took birth gradually with the union of ideas from three people Grady Booch, Jim Rumbaugh, and Ivar Jacobson.  This language gave a visual representation of the system from various aspects which even an average programmer could easily understand.  By being able to put it into diagrams, UML eased the software development to a great extent.  With the various views and diagrams of the system one could easily get both the bigger picture as well as the surgical view of the system.  In general UML introduced a standardized visual specification for object modeling.&lt;br /&gt;&lt;br /&gt;Now lets talk about the need and how UML helps.&lt;br /&gt;In the current situation,&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Interested ones can look at the more links below,&lt;br /&gt;UML History graph: &lt;a href="http://en.wikipedia.org/wiki/File:OO-historie.jpg"&gt;http://en.wikipedia.org/wiki/File:OO-historie.jpg&lt;/a&gt;&lt;br /&gt;UML Specifications: &lt;a href="http://www.omg.org/technology/documents/modeling_spec_catalog.htm#UML"&gt;http://www.omg.org/technology/documents/modeling_spec_catalog.htm#UML&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616408254489092693-1216170649568970323?l=techwheel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techwheel.blogspot.com/feeds/1216170649568970323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1616408254489092693&amp;postID=1216170649568970323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/1216170649568970323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/1216170649568970323'/><link rel='alternate' type='text/html' href='http://techwheel.blogspot.com/2008/04/future1.html' title='UML - Why?'/><author><name>Aravind</name><uri>http://www.blogger.com/profile/13738844195261433118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_BpHmpm8QIio/SDlUZ8l2zfI/AAAAAAAAADU/QBjGOZg7rjU/S220/pisa_black_white.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616408254489092693.post-8166774281253512270</id><published>2008-04-23T23:29:00.000-07:00</published><updated>2008-04-23T23:31:05.248-07:00</updated><title type='text'>What is techwheel</title><content type='html'>Saved for future..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616408254489092693-8166774281253512270?l=techwheel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techwheel.blogspot.com/feeds/8166774281253512270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1616408254489092693&amp;postID=8166774281253512270' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/8166774281253512270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616408254489092693/posts/default/8166774281253512270'/><link rel='alternate' type='text/html' href='http://techwheel.blogspot.com/2008/04/what-is-techwheel.html' title='What is techwheel'/><author><name>Aravind</name><uri>http://www.blogger.com/profile/13738844195261433118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_BpHmpm8QIio/SDlUZ8l2zfI/AAAAAAAAADU/QBjGOZg7rjU/S220/pisa_black_white.jpg'/></author><thr:total>0</thr:total></entry></feed>
