<?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/opensearch/1.1/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0' gd:etag='W/&quot;CEYDSX48fSp7ImA9WhJQFUU.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715</id><updated>2012-07-29T10:16:18.075-07:00</updated><category term='webservice'/><category term='xml'/><category term='hibernate'/><category term='Collections'/><category term='JBoss'/><category term='hacking tips'/><category term='funny'/><category term='ejb'/><category term='coding in java'/><category term='wps'/><category term='spring'/><category term='security'/><category term='jsp'/><category term='struts2'/><category term='aspectj'/><category term='Design Patterns'/><title>Notes</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default?redirect=false&amp;v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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>112</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry gd:etag='W/&quot;CEcCQnk5eCp7ImA9WhJQFUU.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-6511756336946560114</id><published>2012-07-27T10:44:00.000-07:00</published><updated>2012-07-29T10:14:23.720-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T10:14:23.720-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='wps'/><title>Websphere Process Server training docs</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div class="MsoNormal"&gt;
&lt;a href="http://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/index.jsp?topic=/com.ibm.iea.wpi_v6/wpswid/6.2/SCA/WBPMv62_SCA_SCAToolsAndExamples/player.html" target="_blank"&gt;http://publib.boulder.ibm.com/&lt;wbr&gt;&lt;/wbr&gt;infocenter/ieduasst/v1r1m0/&lt;wbr&gt;&lt;/wbr&gt;index.jsp?topic=/com.ibm.iea.&lt;wbr&gt;&lt;/wbr&gt;wpi_v6/wpswid/6.2/SCA/WBPMv62_&lt;wbr&gt;&lt;/wbr&gt;SCA_SCAToolsAndExamples/&lt;wbr&gt;&lt;/wbr&gt;player.html&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Human tasks&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
http://&lt;a href="http://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/index.jsp?topic=/com.ibm.iea.wpi_v6/wpswid/6.1/WID/WPIv61_WIDOverview/player.html" target="_blank"&gt;publib.boulder.ibm.&lt;wbr&gt;&lt;/wbr&gt;com/infocenter/ieduasst/&lt;wbr&gt;&lt;/wbr&gt;v1r1m0/index.jsp?topic=/com.&lt;wbr&gt;&lt;/wbr&gt;ibm.iea.wpi_v6/wpswid/6.1/WID/&lt;wbr&gt;&lt;/wbr&gt;WPIv61_WIDOverview/player.html&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;a href="http://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/topic/com.ibm.iea.wpi_v6/wpswid/6.0/Selectors/WPSWIDv6_Selectors_Overview/playershell.swf" target="_blank"&gt;http://publib.boulder.ibm.com/&lt;wbr&gt;&lt;/wbr&gt;infocenter/ieduasst/v1r1m0/&lt;wbr&gt;&lt;/wbr&gt;topic/com.ibm.iea.wpi_v6/&lt;wbr&gt;&lt;/wbr&gt;wpswid/6.0/Selectors/WPSWIDv6_&lt;wbr&gt;&lt;/wbr&gt;Selectors_Overview/&lt;wbr&gt;&lt;/wbr&gt;playershell.swf&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&amp;nbsp;Selectors&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;a href="http://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/topic/com.ibm.iea.wpi_v6/wpswid/6.0/BusinessRules/WPSWIDv6_BusinessRules_Overview/playershell.swf" target="_blank"&gt;http://publib.boulder.ibm.com/&lt;wbr&gt;&lt;/wbr&gt;infocenter/ieduasst/v1r1m0/&lt;wbr&gt;&lt;/wbr&gt;topic/com.ibm.iea.wpi_v6/&lt;wbr&gt;&lt;/wbr&gt;wpswid/6.0/BusinessRules/&lt;wbr&gt;&lt;/wbr&gt;WPSWIDv6_BusinessRules_&lt;wbr&gt;&lt;/wbr&gt;Overview/playershell.swf&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;wbr&gt;&lt;/wbr&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Business rules&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;a href="http://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/index.jsp?topic=/com.ibm.iea.wpi_v6/wpswid/6.0/BusinessStateMachine/WPSWIDv6_BusinessStateMachine/player.html" target="_blank"&gt;http://publib.boulder.ibm.com/&lt;wbr&gt;&lt;/wbr&gt;infocenter/ieduasst/v1r1m0/&lt;wbr&gt;&lt;/wbr&gt;index.jsp?topic=/com.ibm.iea.&lt;wbr&gt;&lt;/wbr&gt;wpi_v6/wpswid/6.0/&lt;wbr&gt;&lt;/wbr&gt;BusinessStateMachine/WPSWIDv6_&lt;wbr&gt;&lt;/wbr&gt;BusinessStateMachine/player.&lt;wbr&gt;&lt;/wbr&gt;html&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&amp;nbsp;BSM&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;a href="http://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/index.jsp?topic=/com.ibm.iea.wpi_v6/wpswid/6.2/MediationFlows/WBPMv62_MediationModules/player.html" target="_blank"&gt;http://publib.boulder.ibm.com/&lt;wbr&gt;&lt;/wbr&gt;infocenter/ieduasst/v1r1m0/&lt;wbr&gt;&lt;/wbr&gt;index.jsp?topic=/com.ibm.iea.&lt;wbr&gt;&lt;/wbr&gt;wpi_v6/wpswid/6.2/&lt;wbr&gt;&lt;/wbr&gt;MediationFlows/WBPMv62_&lt;wbr&gt;&lt;/wbr&gt;MediationModules/player.html&lt;/a&gt;&lt;/div&gt;
&lt;a href="http://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/topic/com.ibm.iea.wpi_v6/wpswid/6.0.2/MediationLabs/WPIv602_ESB_UnModeledFaultsLab.pdf" target="_blank"&gt;http://publib.boulder.ibm.com/&lt;wbr&gt;&lt;/wbr&gt;infocenter/ieduasst/v1r1m0/&lt;wbr&gt;&lt;/wbr&gt;topic/com.ibm.iea.wpi_v6/&lt;wbr&gt;&lt;/wbr&gt;wpswid/6.0.2/MediationLabs/&lt;wbr&gt;&lt;/wbr&gt;WPIv602_ESB_&lt;wbr&gt;&lt;/wbr&gt;UnModeledFaultsLab.pdf&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3476107016780045715-6511756336946560114?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/6511756336946560114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/websphere-process-server-training-docs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/6511756336946560114?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/6511756336946560114?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/websphere-process-server-training-docs.html' title='Websphere Process Server training docs'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;DU4DRXk-fSp7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-7499717255271460904</id><published>2012-07-27T06:55:00.000-07:00</published><updated>2012-07-29T09:06:14.755-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:06:14.755-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='coding in java'/><title>requierment for enhanced for loop in java (J2SE5.0)</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
&lt;br /&gt;
Enhanced for loops allow convenient iteration over collections, without the need for an explicitly defined iterator. This reduces the need for boilerplate iteration code and the corresponding opportunities for errors.&lt;br /&gt;
as per JSR 121 &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3476107016780045715-7499717255271460904?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/7499717255271460904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/requierment-for-enhanced-for-loop-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/7499717255271460904?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/7499717255271460904?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/requierment-for-enhanced-for-loop-in.html' title='requierment for enhanced for loop in java (J2SE5.0)'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;DU4MQncyeSp7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-818002532235508743</id><published>2012-07-25T11:08:00.000-07:00</published><updated>2012-07-29T09:06:23.991-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:06:23.991-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='coding in java'/><title>Running Java without Main method</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div class="MsoNormal" style="text-autospace: none;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;span style="background: none repeat scroll 0% 0% rgb(255, 255, 255);"&gt;StaticBlockClass&lt;/span&gt;.java&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-autospace: none;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;~~~~~~~~~~~~~~~~~~~~~ &lt;/span&gt;&lt;b&gt;&lt;span style="color: #7f0055; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-autospace: none;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-autospace: none;"&gt;
&lt;b&gt;&lt;span style="color: #7f0055; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;package&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; com.anil.builder.design.&lt;wbr&gt;&lt;/wbr&gt;pattern;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-autospace: none;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-autospace: none;"&gt;
&lt;b&gt;&lt;span style="color: #7f0055; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: #7f0055; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;class&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;span style="background: none repeat scroll 0% 0% rgb(255, 255, 255);"&gt;StaticBlockClass&lt;/span&gt; {&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-autospace: none;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-autospace: none;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: #7f0055; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;static&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;{&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-autospace: none;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.&lt;/span&gt;&lt;i&gt;&lt;span style="color: #0000c0; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;out&lt;/span&gt;&lt;/i&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;.println(&lt;/span&gt;&lt;span style="color: #2a00ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;"i dont have main method"&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;);&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-autospace: none;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-autospace: none;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-autospace: none;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;}&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;TestStaticClient.java&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;~~~~~~~~~~~~~~~~~~~~~ &lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-autospace: none;"&gt;
&lt;b&gt;&lt;span style="color: #7f0055; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;package&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; com.anil.builder.design.&lt;wbr&gt;&lt;/wbr&gt;pattern;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-autospace: none;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-autospace: none;"&gt;
&lt;b&gt;&lt;span style="color: #7f0055; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: #7f0055; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;class&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; TestStaticClient {&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-autospace: none;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-autospace: none;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: #7f0055; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: #7f0055; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;static&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: #7f0055; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;void&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; main(String[] args) &lt;/span&gt;&lt;b&gt;&lt;span style="color: #7f0055; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;throws&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; ClassNotFoundException, InstantiationException, IllegalAccessException {&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-autospace: none;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Class.&lt;i&gt;forName&lt;/i&gt;(&lt;/span&gt;&lt;span style="color: #2a00ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;"com.anil.&lt;wbr&gt;&lt;/wbr&gt;builder.design.pattern.&lt;wbr&gt;&lt;/wbr&gt;StaticBlockClass"&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;);&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-autospace: none;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&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/3476107016780045715-818002532235508743?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/818002532235508743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/running-java-without-main-method.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/818002532235508743?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/818002532235508743?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/running-java-without-main-method.html' title='Running Java without Main method'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;DU4MSHw6fip7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-326638777162703067</id><published>2012-07-24T11:16:00.000-07:00</published><updated>2012-07-29T09:06:29.216-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:06:29.216-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title>Builder DesignPattern</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Builder Design pattern is used when there is a requirement for creating complex objects.&lt;br /&gt;
if it is a simple object you can make use of factory design pattern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Car.java&lt;br /&gt;
~~~~~~~~~&lt;br /&gt;
package com.anil.builder.design.&lt;br /&gt;
&lt;div id=":1ox"&gt;
&lt;wbr&gt;&lt;/wbr&gt;pattern;&lt;br /&gt;
&lt;br /&gt;
public class Car {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private String engine;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private String tyre;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private String paint;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public String getEngine() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return engine;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void setEngine(String engine) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.engine = engine;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public String getTyre() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return tyre;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void setTyre(String tyre) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.tyre = tyre;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public String getPaint() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return paint;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void setPaint(String paint) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.paint = paint;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
------------------------------&lt;wbr&gt;&lt;/wbr&gt;----------------------&lt;br /&gt;
&lt;br /&gt;
CarBuilder.java&lt;br /&gt;
~~~~~~~~~~~~~~~&lt;br /&gt;
&lt;br /&gt;
package com.anil.builder.design.&lt;wbr&gt;&lt;/wbr&gt;pattern;&lt;br /&gt;
&lt;br /&gt;
public interface CarBuilder {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public String makeEngine();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public String makeTyre();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public String makePaint();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void makeCar();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public Car getCar();&lt;br /&gt;
}&lt;br /&gt;
------------------------------&lt;wbr&gt;&lt;/wbr&gt;----------------------------&lt;br /&gt;
&lt;br /&gt;
USCarBuilder.java&lt;br /&gt;
~~~~~~~~~~~~~~~~~~&lt;br /&gt;
&lt;br /&gt;
package com.anil.builder.design.&lt;wbr&gt;&lt;/wbr&gt;pattern;&lt;br /&gt;
&lt;br /&gt;
public class USCarBuilder implements CarBuilder {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private Car car;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public String makeEngine() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // TODO Auto-generated method stub&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return "US Engine added ";&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public String makeTyre() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return "APPOLO tyres added";&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public String makePaint() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return "Red colour added";&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void makeCar() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; car=new Car();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; car.setEngine(makeEngine());&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; car.setTyre(makeTyre());&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; car.setPaint(makePaint());&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public Car getCar() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // TODO Auto-generated method stub&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return car;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
------------------------------&lt;wbr&gt;&lt;/wbr&gt;--------------------------&lt;br /&gt;
&lt;br /&gt;
GermanCarBuilder.java&lt;br /&gt;
~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;
&lt;br /&gt;
package com.anil.builder.design.&lt;wbr&gt;&lt;/wbr&gt;pattern;&lt;br /&gt;
&lt;br /&gt;
public class GermanCarBuilder implements CarBuilder {&lt;br /&gt;
&lt;br /&gt;
private Car car;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public String makeEngine() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // TODO Auto-generated method stub&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return "German Engine";&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public String makeTyre() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return "German tyres";&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public String makePaint() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return "Blue";&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void makeCar() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; car=new Car();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; car.setEngine(makeEngine());&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; car.setTyre(makeTyre());&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; car.setPaint(makePaint());&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public Car getCar() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return car;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
------------------------------&lt;wbr&gt;&lt;/wbr&gt;----------------------&lt;br /&gt;
&lt;br /&gt;
Director.java&lt;br /&gt;
~~~~~~~~~~~~~&lt;br /&gt;
package com.anil.builder.design.&lt;wbr&gt;&lt;/wbr&gt;pattern;&lt;br /&gt;
&lt;br /&gt;
public class Director {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private CarBuilder carBuilder;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public Director(CarBuilder carBuilder) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; super();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.carBuilder = carBuilder;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public CarBuilder getCarBuilder() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return carBuilder;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void setCarBuilder(CarBuilder carBuilder) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.carBuilder = carBuilder;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void build() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; carBuilder.makeCar();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
------------------------------&lt;wbr&gt;&lt;/wbr&gt;-----------------------------&lt;br /&gt;
Test.java&lt;br /&gt;
~~~~~~~~~&lt;br /&gt;
package com.anil.builder.design.&lt;wbr&gt;&lt;/wbr&gt;pattern;&lt;br /&gt;
&lt;br /&gt;
public class Test {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public static void main(String[] args) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CarBuilder builder=new USCarBuilder();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Director director=new Director(builder);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; director.build();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Car car=builder.getCar();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(" Car Engine : "+car.getEngine());&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;b&gt;Pattern Definition&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;Moves the Construction logic of the Object from the Object Class to Builder Class&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Improves&lt;/b&gt;&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Object Construction&lt;/li&gt;
&lt;li&gt;Making new Changes&lt;/li&gt;
&lt;li&gt;Modular Design &lt;/li&gt;
&lt;/ul&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/3476107016780045715-326638777162703067?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/326638777162703067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/builder-designpattern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/326638777162703067?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/326638777162703067?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/builder-designpattern.html' title='Builder DesignPattern'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;DU4NRX0-eSp7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-416572913519584636</id><published>2012-07-19T11:59:00.000-07:00</published><updated>2012-07-29T09:06:34.351-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:06:34.351-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title>Abstract Factory Design Pattern in Java</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;Definition&lt;/b&gt; : Provides an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
Button.java&lt;br /&gt;
~~~~~~~~~&lt;br /&gt;
package com.anil.product;&lt;br /&gt;
&lt;br /&gt;
public abstract class Button {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public abstract void add(String os);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
WinButton.java&lt;br /&gt;
~~~~~~~~~~~~&lt;br /&gt;
package com.anil.product;&lt;br /&gt;
&lt;br /&gt;
public class WinButton extends Button {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void add(String os) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(" Button Added name&amp;nbsp; "+os+" for Windows");&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
LinuxButton.java&lt;br /&gt;
~~~~~~~~~~~~&lt;br /&gt;
package com.anil.product;&lt;br /&gt;
&lt;br /&gt;
public class LinuxButton extends Button {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void add(String os) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(" Button Added name&amp;nbsp; "+os+" for Linux");&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ComboBox.java&lt;br /&gt;
~~~~~~~~~~~~&lt;br /&gt;
package com.anil.product;&lt;br /&gt;
&lt;br /&gt;
public abstract class ComboBox {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public abstract void add(String os);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
WinComboBox.java&lt;br /&gt;
~~~~~~~~~~~~~~~~&lt;br /&gt;
package com.anil.product;&lt;br /&gt;
&lt;br /&gt;
public class WinComboBox extends ComboBox {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void add(String os) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(" Combo Box Added with name&amp;nbsp; "+os+" for Windows" );&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
LinuxComboBox.java&lt;br /&gt;
~~~~~~~~~~~~~~~~&lt;br /&gt;
package com.anil.product;&lt;br /&gt;
&lt;br /&gt;
public class LinuxComboBox extends ComboBox {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void add(String os) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(" Combo Box Added name&amp;nbsp; "+os+" for Linux");&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OSComponents.java&lt;br /&gt;
~~~~~~~~~~~~~~~&lt;br /&gt;
package com.anil.product;&lt;br /&gt;
&lt;br /&gt;
public abstract class OSComponents {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public abstract ComboBox createCombo();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public abstract Button createButton();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
WindowsComponents.java&lt;br /&gt;
~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;
package com.anil.product;&lt;br /&gt;
&lt;br /&gt;
public class WindowsComponents extends OSComponents {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public ComboBox createCombo() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return new WinComboBox();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public Button createButton() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return new WinButton();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
LinuxComponents.java&lt;br /&gt;
~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;
package com.anil.product;&lt;br /&gt;
&lt;br /&gt;
public class LinuxComponents extends OSComponents {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public ComboBox createCombo() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return new LinuxComboBox();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public Button createButton() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return new LinuxButton();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AbstractOSComponentsFactory.&lt;wbr&gt;&lt;/wbr&gt;java&lt;br /&gt;
&lt;div id=":1ps"&gt;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;wbr&gt;&lt;/wbr&gt;~~~&lt;br /&gt;
&lt;br /&gt;
package com.anil.product;&lt;br /&gt;
&lt;br /&gt;
public abstract class AbstractOSComponentsFactory {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public abstract ComboBoxInf createCombo();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public abstract ButtonInf createButton();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public static AbstractOSComponentsFactory getOSFactory(String s) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (s == "win") {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return new WindowsComponentsFactory();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return new LinuxComponentsFactory();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
AbstractFactoryClient.java&lt;br /&gt;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;
package com.anil.product;&lt;br /&gt;
&lt;br /&gt;
public class AbstractFactoryClient {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public static void main(String os[]) {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AbstractOSComponentsFactory factory =AbstractOSComponentsFactory.&lt;wbr&gt;&lt;/wbr&gt;getOSFactory("win");&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; factory.createButton().add("&lt;wbr&gt;&lt;/wbr&gt;windows1");&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; factory.createCombo().add("&lt;wbr&gt;&lt;/wbr&gt;windows2");&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;/div&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;Benefits&lt;/b&gt;&lt;br /&gt;
* Isolates concrete classes&lt;br /&gt;
* Allows to change product family easily&lt;br /&gt;
* Promotes consistency among products&lt;b&gt;&lt;br /&gt;Usage&lt;/b&gt;&lt;br /&gt;
* When the system needs to be independent of how its products are created composed and represented.&lt;br /&gt;
* When the system needs to be configured with one of multiple families of products.&lt;br /&gt;
* When a family of products need to be used together and this constraint needs to be enforced.&lt;br /&gt;
* When you need to provide a library of products, expose their interfaces not the implementation.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3476107016780045715-416572913519584636?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/416572913519584636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/abstract-factory-design-pattern-in-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/416572913519584636?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/416572913519584636?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/abstract-factory-design-pattern-in-java.html' title='Abstract Factory Design Pattern in Java'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;AkcESXg5eyp7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-7780378454923714404</id><published>2012-07-16T13:22:00.000-07:00</published><updated>2012-07-29T09:06:48.623-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:06:48.623-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title>Session Facade</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Problem&lt;br /&gt;
&lt;br /&gt;
In a multitiered Java 2 Platform, Enterprise Edition (J2EE) application environment, the following problems arise.&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
if Client is exposed to the Business Objects of the application(DAO,Session Beans or Entity Beans) there will be a tight coupling between the client and the Business Objects.&lt;br /&gt;
&lt;br /&gt;
if the application grows eventually the number of business objects will grow so that Client logic will become more and more complex.&lt;br /&gt;
&lt;br /&gt;
if the Client is Accessing the Enterprise beans directly so There will be a heavy usage of the n/w.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if Multiple Clients are using the Business objects there will not be uniformity in the way client uses them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To resolve the above issues we can make use of Session Facade Design pattern&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Structure&lt;/b&gt; :&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Session Facade class diagram&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img align="bottom" alt="Figure 8.15" border="0" height="252" name="Graphic15" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/147290.jpg" width="458" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style="font-family: inherit;"&gt;
  &lt;span style="font-size: small;"&gt;Participants and Collaborations&lt;/span&gt;&lt;/h3&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;span style="font-size: small;"&gt;in the below Figure&amp;nbsp; contains the  sequence diagram that shows the interactions of a Session Facade with  two entity beans, one session bean, and a DAO, all acting as  participants in fulfilling the request from the client.&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: inherit;"&gt;
&lt;b&gt;Session Facade sequence diagram :&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;img align="bottom" alt="Figure 8.16" border="0" name="Graphic16" src="http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/147344.jpg" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
you can define a Session Facade as&lt;br /&gt;
&lt;br /&gt;
1. &lt;b&gt;Stateless Session bean : &lt;/b&gt;if Business process include single method call in your business process&lt;br /&gt;
2. &lt;b&gt;Statefull Session bean : &lt;/b&gt; if Business process include multiple method calls in your business process&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Uses of Session Facade&lt;/b&gt;:&lt;br /&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;Introduces Business-Tier Controller Layer&lt;/li&gt;
&lt;li&gt;Exposes Uniform Interface&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Reduces Coupling, Increases Manageability&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Improves Performance, Reduces Fine-Grained Methods&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Provides Coarse-Grained Access&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Centralizes Security Management&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Centralizes Transaction Control&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Exposes Fewer Remote Interfaces to Clients &lt;/li&gt;
&lt;/ol&gt;
&lt;b&gt;sample code&lt;/b&gt; :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="font-size: small;"&gt;ProjectResourceManagerSession.java&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="font-size: small;"&gt;package corepatterns.apps.psa.ejb;

import java.util.*;
import java.rmi.RemoteException;
import javax.ejb.*;
import javax.naming.*;
import corepatterns.apps.psa.core.*;
import corepatterns.util.ServiceLocator;
import corepatterns.util.ServiceLocatorException;

// Note: all try/catch details not shown for brevity.

public class ProjectResourceManagerSession
  implements SessionBean {

  private SessionContext context;

  // Remote references for the
  // entity Beans encapsulated by this facade
  private Resource resourceEntity = null;
  private Project projectEntity = null;
  ...

  // default create
  public void ejbCreate() 
  throws CreateException {
  }

  // create method to create this facade and to
  // establish connections to the required entity
  // beans
  // using primary key values
  public void ejbCreate(
    String resourceId, String projectId, ...)
  throws CreateException, ResourceException {

    try {
      // locate and connect to entity beans
      connectToEntities(resourceId, projectId, ...);
    } catch(...) {
      // Handle exceptions
    }
  }

  // method to connect the session facade to its 
  // entity beans using the primary key values
  private void connectToEntities (
    String resourceId, String projectId)
  throws ResourceException {
    resourceEntity = getResourceEntity(resourceId);
    projectEntity = getProjectEntity(projectId);
    ...
  }

  // method to reconnect the session facade to a
  // different set of entity beans using primary key
  // values
  public resetEntities(String resourceId,
    String projectId, ...)
  throws PSAException {

    connectToEntities(resourceId, projectId, ...);
  }

  // private method to get Home for Resource
  private ResourceHome getResourceHome()
  throws ServiceLocatorException {
    return ServiceLocator.      getInstance().getHome(
        "ResourceEntity", ResourceHome.class);
  }

  // private method to get Home for Project
  private ProjectHome getProjectHome()
  throws ServiceLocatorException {
    return ServiceLocator.      getInstance().getHome(
        "ProjectEntity", ProjectHome.class);  
  }

  // private method to get Resource entity
  private Resource getResourceEntity(
    String resourceId)   throws ResourceException {
    try {
      ResourceHome home = getResourceHome();
      return (Resource) 
        home.findByPrimaryKey(resourceId);
    } catch(...) {
      // Handle exceptions
    }
  }

  // private method to get Project entity
  private Project getProjectEntity(String projectId)
  throws ProjectException {
    // similar to getResourceEntity
    ...
  }

  // Method to encapsulate workflow related
  // to assigning a resource to a project.
  // It deals with Project and Resource Entity beans
  public void assignResourceToProject(int numHours)
  throws PSAException {

    try {
      if ((projectEntity == null) ||
          (resourceEntity == null)) {

        // SessionFacade not connected to entities
        throw new PSAException(...);
      }

      // Get Resource data
      ResourceTO resourceTO =
          resourceEntity.getResourceData();

      // Get Project data
      ProjectTO projectTO =
        projectEntity.getProjectData();
      // first add Resource to Project
      projectEntity.addResource(resourceTO);
      // Create a new Commitment for the Project
      CommitmentTO commitment = new
        CommitmentTO(  ...);

      // add the commitment to the Resource
      projectEntity.addCommitment(commitment);

    } catch(...) {
      // Handle exceptions
    }
  }

  // Similarly implement other business methods to
  // facilitate various use cases/interactions
  public void unassignResourceFromProject()
  throws PSAException {
    ...
  }

  // Methods working with ResourceEntity
  public ResourceTO getResourceData()
  throws ResourceException {
    ...
  }

  // Update Resource Entity Bean
  public void setResourceData(ResourceTO resource) 
  throws ResourceException {
    ...
  }

  // Create new Resource Entity bean
  public ResourceTO createNewResource(ResourceTO 
    resource)   throws ResourceException {
    ...
  }

  // Methods for managing resource's blockout time
  public void addBlockoutTime(Collection blockoutTime) 
  throws RemoteException,BlockoutTimeException {
    ...
  }
  
  public void updateBlockoutTime(
    Collection blockoutTime)   
  throws RemoteException, BlockoutTimeException {
    ...
  }
  
  public Collection getResourceCommitments() 
  throws RemoteException, ResourceException {
    ...
  }

  // Methods working with ProjectEntity
  public ProjectTO getProjectData()
  throws ProjectException {
    ...
  }

  // Update Project Entity Bean
  public void setProjectData(ProjectTO project) 
  throws ProjectException {
    ...
  }

  // Create new Project Entity bean
  public ProjectTO createNewProject(ProjectTO project)
  throws ProjectException {
    ...
  }

  ...

  // Other session facade method examples

  // This proxies a call to a Transfer Object Assembler
  // to obtain a composite Transfer Object.
  // See Transfer Object Assembler pattern
  public ProjectCTO getProjectDetailsData()
  throws PSAException {
    try {
      ProjectTOAHome projectTOAHome = (ProjectTOAHome)
        ServiceLocator.getInstance().getHome(
          "ProjectTOA", ProjectTOAHome.class);
      // Transfer Object Assembler session bean
      ProjectTOA projectTOA = 
          projectTOAHome.create(...);
      return projectTOA.getData(...);
    } catch (...) {
        // Handle / throw exceptions
    }
  }

  // These method proxies a call to a ValueListHandler
  // to get a list of projects. See Value List Handler 
  // pattern.
  public Collection getProjectsList(Date start, 
  Date end) throws PSAException {
    try {
      ProjectListHandlerHome projectVLHHome = 
        (ProjectVLHHome)
          ServiceLocator.getInstance().getHome(
            "ProjectListHandler",
            ProjectVLHHome.class);
      // Value List Handler session bean
      ProjectListHandler projectListHandler = 
        projectVLHHome.create();
      return projectListHandler.getProjects(
                    start, end);
    } catch (...) {
        // Handle / throw exceptions
    }
  }

  ...

  public void ejbActivate() {
    ...
  }

  public void ejbPassivate() {
    context = null;
  }

  public void setSessionContext(SessionContext ctx) {
       this.context = ctx;
  }

  public void ejbRemove() {
    ...
  }
}&lt;/span&gt;&lt;/pre&gt;
&lt;span class="sp20"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="sp20"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="sp20"&gt;&lt;b&gt;Remote Interface&lt;/b&gt; :&lt;/span&gt;&lt;br /&gt;
&lt;span class="sp20"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="sp20"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre&gt;package corepatterns.apps.psa.ejb;

import java.rmi.RemoteException;
import javax.ejb.*;
import corepatterns.apps.psa.core.*;

// Note: all try/catch details not shown for brevity.

public interface ProjectResourceManager
  extends EJBObject {

  public resetEntities(String resourceId,
  String projectId, ...)
  throws RemoteException, ResourceException ;

  public void assignResourceToProject(int numHours)
  throws RemoteException, ResourceException ;

  public void unassignResourceFromProject()
  throws RemoteException, ResourceException ;

  ...

  public ResourceTO getResourceData()
  throws RemoteException, ResourceException ;

  public void setResourceData(ResourceTO resource) 
  throws RemoteException, ResourceException ;

  public ResourceTO createNewResource(ResourceTO resource)
  throws ResourceException ;

  public void addBlockoutTime(Collection blockoutTime) 
  throws RemoteException,BlockoutTimeException ;
  
  public void updateBlockoutTime(Collection blockoutTime) 
  throws RemoteException,BlockoutTimeException ;
  
  public Collection getResourceCommitments()
  throws RemoteException, ResourceException;

  public ProjectTO getProjectData()
  throws RemoteException, ProjectException ;
  
  public void setProjectData(ProjectTO project) 
  throws RemoteException, ProjectException ;

  public ProjectTO createNewProject(ProjectTO project)
  throws RemoteException, ProjectException ;

  ...

  public ProjectCTO getProjectDetailsData()
  throws RemoteException, PSAException ;

  public Collection getProjectsList(Date start, 
  Date end) throws RemoteException, PSAException ;

  ...
}&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="font-family: inherit;"&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style="font-family: inherit; font-size: large;"&gt;&lt;b&gt;Home Interface&lt;/b&gt; :&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="sp20"&gt;&lt;span class="sp20"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre&gt;package corepatterns.apps.psa.ejb;

import javax.ejb.EJBHome;
import java.rmi.RemoteException;
import corepatterns.apps.psa.core.ResourceException;
import javax.ejb.*;

public interface ProjectResourceManagerHome 
extends EJBHome {
    
    public ProjectResourceManager create() 
            throws RemoteException,CreateException;
    public ProjectResourceManager create(String
        resourceId, String projectId, ...) 
            throws RemoteException,CreateException;
}&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;Note : the usage of Session Facade is depend on the application.For a smaller&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;application Session Facade does add much.it is useful when your application goes bigger&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Resource :&lt;br /&gt;
&lt;a href="http://www.oracle.com/technetwork/java/sessionfacade-135203.html" rel="nofollow" target="_blank"&gt;&lt;b&gt;&amp;nbsp;http://www.oracle.com/technetwork/java/sessionfacade-135203.html&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;&lt;a href="http://www.oracle.com/technetwork/java/sessionfacade-141285.html" rel="nofollow" target="_blank"&gt;http://www.oracle.com/technetwork/java/sessionfacade-141285.html&amp;nbsp; &lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3476107016780045715-7780378454923714404?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/7780378454923714404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/session-facade.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/7780378454923714404?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/7780378454923714404?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/session-facade.html' title='Session Facade'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;AkcFRXg9fSp7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-7258654554931045275</id><published>2012-07-15T12:58:00.000-07:00</published><updated>2012-07-29T09:06:54.665-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:06:54.665-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='jsp'/><title>JSP Static include and Dynamic include</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
&lt;b&gt;Static Include :&lt;/b&gt; &lt;i&gt;&amp;lt;%@include file="secondInclude.jsp"%&amp;gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
used to add or include static content in jsp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Dynamic Include :&lt;/b&gt; &lt;i&gt;&amp;lt;jsp:include page="include.jsp"&amp;gt;&amp;lt;/jsp:include&amp;gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
used to addup Dynamic content in JSP.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3476107016780045715-7258654554931045275?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/7258654554931045275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/jsp-static-include-and-dynamic-include.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/7258654554931045275?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/7258654554931045275?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/jsp-static-include-and-dynamic-include.html' title='JSP Static include and Dynamic include'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;AkcGQX8-cCp7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-1201000674214287248</id><published>2012-07-15T12:48:00.000-07:00</published><updated>2012-07-29T09:07:00.158-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:07:00.158-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='jsp'/><title>Implecit Objects of jsp</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;b&gt;request&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;response&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;out&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;session&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;page &lt;/b&gt;: (like &lt;b&gt;&lt;i&gt;this &lt;/i&gt;&lt;/b&gt;references current jsp instance)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;pageContext &lt;/b&gt;: with context info it has access to all implicit variables of the page and used for setting the attributes of different scopes and has methods  for including another URL's contents, and for forwarding or redirecting to  another URL.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Ex :&amp;nbsp; pageContext.include( test.jsp ); pageContext.forward( test.jsp );&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;b&gt;application : &lt;/b&gt;this Object is Like &lt;b&gt;ServletContext.&lt;/b&gt; &lt;/li&gt;
&lt;li&gt;&lt;b&gt;Exception&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;config&lt;/b&gt; : this Object is Like &lt;b&gt;ServletConfig.&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3476107016780045715-1201000674214287248?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/1201000674214287248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/implecit-objects-of-jsp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/1201000674214287248?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/1201000674214287248?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/implecit-objects-of-jsp.html' title='Implecit Objects of jsp'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;AkcGSX47fip7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-8570404532466681283</id><published>2012-07-15T12:15:00.000-07:00</published><updated>2012-07-29T09:07:08.006-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:07:08.006-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='Collections'/><category scheme='http://www.blogger.com/atom/ns#' term='coding in java'/><title>Collection  Hierarchy in Java</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img alt="" src="data:image/png;base64,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" style="margin-left: auto; margin-right: auto;" /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;b&gt;Collection Interface Hierarchy&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
_____________________________________________________________________________________________ &lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img alt="" height="392" src="data:image/png;base64,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" style="margin-left: auto; margin-right: auto;" width="640" /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;b&gt;The Core Collection Interfaces and Their Implementations&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
_____________________________________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img alt="" src="data:image/png;base64,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" style="margin-left: auto; margin-right: auto;" /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;b&gt;The Core Map Interfaces and Their Implementations&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&amp;nbsp; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3476107016780045715-8570404532466681283?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/8570404532466681283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/collection-hierarchy-in-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/8570404532466681283?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/8570404532466681283?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/collection-hierarchy-in-java.html' title='Collection  Hierarchy in Java'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;AkcHQnczfyp7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-6474414353931780221</id><published>2012-07-14T15:03:00.000-07:00</published><updated>2012-07-29T09:07:13.987-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:07:13.987-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='coding in java'/><title>java Stack vs Heap</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;Heap&amp;nbsp; Stores :&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
class(&lt;span class="postbody"&gt;static fields&lt;/span&gt;) and instance variables,&lt;span class="postbody"&gt; method code&amp;nbsp;&lt;/span&gt; and Object instances.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Stack&amp;nbsp; Stores :&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
local method/local variables and method calls.&lt;br /&gt;
&lt;br /&gt;
According to java 6 some of the instances may be stored in &lt;b&gt;Stack&lt;/b&gt; also&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;public class Bicycle{&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;// Class Variable&lt;/pre&gt;
&lt;pre&gt;    private &lt;b&gt;static&lt;/b&gt; int numberOfBicycles = 0;
&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;pre&gt;// instance variable&amp;nbsp;      
    private int id;&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;// Object instace &lt;/pre&gt;
&lt;pre&gt;   private  Bicycle  b=null;&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;public int Method1() {&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;    // local variables&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;     int i=1;&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;     return i;
    }&lt;/pre&gt;
&lt;pre&gt;}&lt;/pre&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3476107016780045715-6474414353931780221?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/6474414353931780221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/java-stack-vs-heap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/6474414353931780221?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/6474414353931780221?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/java-stack-vs-heap.html' title='java Stack vs Heap'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;AkcARns6eSp7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-8932563503882816745</id><published>2012-07-14T14:23:00.000-07:00</published><updated>2012-07-29T09:07:27.511-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:07:27.511-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='coding in java'/><title>Use of Class.forName()</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
When we create an instance of a class using new operator, it does two things&lt;br /&gt;
&lt;br /&gt;
1. Load the class in to memory, if it is not loaded -&lt;br /&gt;
which means creating in-memory representation of the class from the  .class file so that an instance can be created out of it. This includes  initializing static variables (resolving of that class)&lt;br /&gt;
2. create an instance of that class and store the reference to the variable.&lt;br /&gt;
&lt;br /&gt;
Class.forName does only the first thing.&lt;br /&gt;
It loads the class in to memory and return that reference as an instance  of Class. If we want to create an instance then, we can call  newInstance method of that class. which will invoke the default  constructor (no argument constructor).&lt;br /&gt;
Note that if the default constructor is not accessible, then newInstance  method will throw an IllegalAccessException. and if the class is an  abstract class or interface or it does not have a default constructor,  then it will throw an InstantiationException. If any exception araises  during resolving of that class, it will throw an  ExceptionInInitializerError.&lt;br /&gt;
&lt;br /&gt;
If the default constructor is not defined, then we have to invoke the defiend constructor using reflection API.&lt;br /&gt;
&lt;br /&gt;
But the main advantage with Class.forName is, it can accept the class  name as a String argument. So we can pass the class name dynamically.  But if we create an instance of a class using new operator, the class  name can't be changed dynamically.&lt;br /&gt;
&lt;br /&gt;
Class.forName() inturn will call loadClass method of the caller  ClassLoader (ClassLoder of the class from where Class.forName is  invoked).&lt;br /&gt;
&lt;br /&gt;
By default, the Class.forName() resolve that class. which means, initialize all static variables inside that class.&lt;br /&gt;
same can be changed using the overloaded method of Class.forName(String name,boolean initialize,ClassLoader loader)&lt;br /&gt;
&lt;br /&gt;
The main reason for loading jdbc driver using Class.forName() is, the driver can change dynamically.&lt;br /&gt;
in the static block all Drivers will create an instance of itself and  register that class with DriverManager using  DriverManager.registerDriver() method. Since the Class.forName(String  className) by default resolve the class, it will initialize the static  initializer.&lt;br /&gt;
So when we call Class.forName("com.sun.jdbc.odbc.JdbcOdbcDriver"), &lt;br /&gt;
the Driver class will be loaded, instanciated and registers with DriverManager&lt;br /&gt;
&lt;br /&gt;
So if you are using new Operator you have to do the following things.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Driver drv = new com.sun.jdbc.odbc.JdbcOdbcDriver();&lt;br /&gt;
DriverManager.registerDriver(drv);&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3476107016780045715-8932563503882816745?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/8932563503882816745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/use-of-classforname.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/8932563503882816745?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/8932563503882816745?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/use-of-classforname.html' title='Use of Class.forName()'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;AkcBQHc6fSp7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-3850470733686823740</id><published>2012-07-14T14:02:00.000-07:00</published><updated>2012-07-29T09:07:31.915-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:07:31.915-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='coding in java'/><title>Why String is final in Java ?  or why String is Immutable?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif; text-align: left;"&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif; text-align: left;"&gt;
&lt;span style="font-size: small;"&gt;The above two Questions are related&amp;nbsp; as&amp;nbsp; Immutable --&amp;gt; final&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif; text-align: left;"&gt;
&lt;span style="font-size: small;"&gt;consider the below scenario &lt;b&gt;If String is not a Final Class&lt;/b&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif; text-align: left;"&gt;
&lt;span style="font-size: small;"&gt;i had a String Object&amp;nbsp; String super="&lt;b&gt;Java&lt;/b&gt;"; &lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif; text-align: left;"&gt;
&lt;span style="font-size: small;"&gt;i have two subclasses of String&amp;nbsp; super( parent Class)&amp;nbsp; Class A and Class B.if Class A changes&amp;nbsp; its reference to A="J2EE" then the reference of Class B also points to J2EE.which is not a&lt;i&gt;&lt;b&gt; thread safe&lt;/b&gt;&lt;/i&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif; text-align: left;"&gt;
&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif; text-align: left;"&gt;
&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;b&gt;Some of the reasons why it made as Immutable :&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif; text-align: left;"&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span class="comment-copy"&gt;The designers wanted to guarantee that the  invariants of String could not be changed by a sub-class. To guarantee  that String itself would not change they implemented parent delegation  in class loaders&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt;Another reason of &lt;b&gt;Why String is immutable in Java&lt;/b&gt; is to &lt;b&gt;allow String to cache its hashcode&lt;/b&gt; , being immutable String in Java caches its hashcode and do not &lt;span class="IL_AD" id="IL_AD2"&gt;calculate&lt;/span&gt; every time we call hashcode method of String, which makes it very fast as hashmap key to be used in hashmap in Java.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt;The absolutely most important reason that String is immutable is that it   is used by the class loading mechanism, and thus have profound and   fundamental security aspects.As in JVM&amp;nbsp; String is mostly used parameter for loading classes or opening the connections. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt;and one more reason is for thread safety.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="background-color: white; border: medium none; color: black; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif; overflow: hidden; text-align: left; text-decoration: none;"&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; border: medium none; color: black; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif; overflow: hidden; text-align: left; text-decoration: none;"&gt;
&lt;span style="font-size: small;"&gt;so the Question is how we can design a Immutable class&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; border: medium none; color: black; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif; overflow: hidden; text-align: left; text-decoration: none;"&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt; Declare all fields &lt;b&gt;Private Final.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt; Set all fields in the &lt;b&gt;constructor&lt;/b&gt;. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt; Don't provide any methods that modify the state of the object; provide &lt;b&gt;only getter methods &lt;/b&gt;(no setters). &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt; &lt;b&gt;Declare the class final&lt;/b&gt;, so that no methods may be overridden. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt; Ensure exclusive access to any mutable components, e.g. &lt;b&gt;by returning copies. &lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style="background-color: white; border: medium none; color: black; overflow: hidden; text-align: left; text-decoration: none;"&gt;
&lt;div style="background-color: white; border: medium none; color: black; overflow: hidden; text-align: left; text-decoration: none;"&gt;
&lt;/div&gt;
&lt;div style="background-color: white; border: medium none; color: black; overflow: hidden; text-align: left; text-decoration: none;"&gt;
Example : &lt;/div&gt;
&lt;div style="background-color: white; border: medium none; color: black; overflow: hidden; text-align: left; text-decoration: none;"&gt;
&lt;/div&gt;
&lt;div style="background-color: white; border: medium none; color: black; overflow: hidden; text-align: left; text-decoration: none;"&gt;
&lt;pre&gt;&lt;span style="font-size: small;"&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;import&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; java.util.Date;
&lt;/span&gt;&lt;span class="comment" style="font-family: inherit;"&gt;/**
* Planet is an immutable class, since there is no way to change
* its state after construction.
*/&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;public&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; &lt;/span&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;final&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; &lt;/span&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;class&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; Planet {

  &lt;/span&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;public&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; Planet (&lt;/span&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;double&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; aMass, String aName, Date aDateOfDiscovery) {
     fMass = aMass;
     fName = aName;
     &lt;/span&gt;&lt;span class="comment" style="font-family: inherit;"&gt;//make a private copy of aDateOfDiscovery&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;     &lt;/span&gt;&lt;span class="comment" style="font-family: inherit;"&gt;//this is the only way to keep the fDateOfDiscovery&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;     &lt;/span&gt;&lt;span class="comment" style="font-family: inherit;"&gt;//field private, and shields this class from any changes that &lt;/span&gt;&lt;span style="font-family: inherit;"&gt;     &lt;/span&gt;&lt;span class="comment" style="font-family: inherit;"&gt;//the caller may make to the original aDateOfDiscovery object&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;     fDateOfDiscovery = &lt;/span&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;new&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; Date(aDateOfDiscovery.getTime());
  }

  &lt;/span&gt;&lt;span class="comment" style="font-family: inherit;"&gt;/**
  * Returns a primitive value.
  *
  * The caller can do whatever they want with the return value, without 
  * affecting the internals of this class. Why? Because this is a primitive 
  * value. The caller sees its "own" double that simply has the
  * same value as fMass.
  */&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
  &lt;/span&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;public&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; &lt;/span&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;double&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; getMass() {
    &lt;/span&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;return&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; fMass;
  }

  &lt;/span&gt;&lt;span class="comment" style="font-family: inherit;"&gt;/**
  * Returns an immutable object.
  *
  * The caller gets a direct reference to the internal field. But this is not 
  * dangerous, since String is immutable and cannot be changed.
  */&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
  &lt;/span&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;public&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; String getName() {
    &lt;/span&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;return&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; fName;
  }
&lt;/span&gt;&lt;span class="comment" style="font-family: inherit;"&gt;//  /**
//  * Returns a mutable object - likely bad style.
//  *
//  * The caller gets a direct reference to the internal field. This is usually dangerous, 
//  * since the Date object state can be changed both by this class and its caller.
//  * That is, this class is no longer in complete control of fDate.
//  */
//  public Date getDateOfDiscovery() {
//    return fDateOfDiscovery;
//  }&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
  &lt;/span&gt;&lt;span class="comment" style="font-family: inherit;"&gt;/**
  * Returns a mutable object - good style.
  * 
  * Returns a defensive copy of the field.
  * The caller of this method can do anything they want with the
  * returned Date object, without affecting the internals of this
  * class in any way. Why? Because they do not have a reference to 
  * fDate. Rather, they are playing with a second Date that initially has the 
  * same data as fDate.
  */&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
  &lt;/span&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;public&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; Date getDateOfDiscovery() {
    &lt;/span&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;return&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; &lt;/span&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;new&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; Date(fDateOfDiscovery.getTime());
  }

  &lt;/span&gt;&lt;span class="comment" style="font-family: inherit;"&gt;// PRIVATE //&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
  &lt;/span&gt;&lt;span class="comment" style="font-family: inherit;"&gt;/**
  * Final primitive data is always immutable.
  */&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
  &lt;/span&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;private&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; &lt;/span&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;final&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; &lt;/span&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;double&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; fMass;

  &lt;/span&gt;&lt;span class="comment" style="font-family: inherit;"&gt;/**
  * An immutable object field. (String objects never change state.)
  */&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
  &lt;/span&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;private&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; &lt;/span&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;final&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; String fName;

  &lt;/span&gt;&lt;span class="comment" style="font-family: inherit;"&gt;/**
  * A mutable object field. In this case, the state of this mutable field
  * is to be changed only by this class. (In other cases, it makes perfect
  * sense to allow the state of a field to be changed outside the native
  * class; this is the case when a field acts as a "pointer" to an object
  * created elsewhere.)
  */&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
  &lt;/span&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;private&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; &lt;/span&gt;&lt;span class="keyword" style="font-family: inherit;"&gt;final&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; Date fDateOfDiscovery;
}&lt;/span&gt;&lt;/span&gt;
 &lt;/pre&gt;
&lt;/div&gt;
&lt;div style="background-color: white; border: medium none; color: black; overflow: hidden; text-align: left; text-decoration: none;"&gt;
&lt;/div&gt;
&lt;/div&gt;
References :&lt;br /&gt;
&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;http://www.javapractices.com/topic/TopicAction.do?Id=29&lt;/li&gt;
&lt;li&gt;http://renaud.waldura.com/doc/java/final-keyword.shtml&lt;/li&gt;
&lt;li&gt;http://stackoverflow.com/questions/2068804/why-is-string-final-in-java&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3476107016780045715-3850470733686823740?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/3850470733686823740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/why-string-is-final-in-java-or-why.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/3850470733686823740?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/3850470733686823740?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/why-string-is-final-in-java-or-why.html' title='Why String is final in Java ?  or why String is Immutable?'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;AkcBR307eip7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-8196355454653514975</id><published>2012-07-14T04:27:00.000-07:00</published><updated>2012-07-29T09:07:36.302-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:07:36.302-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='coding in java'/><title>String pool in java</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
The easiest way of creating a String object is using a string literal:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;String str1 = "You cannot change me!";&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;String str2 = "You cannot change me!";&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
here str1 and str2 holds the same String literal.&lt;br /&gt;
&lt;br /&gt;
so at the Compile time&amp;nbsp; java compiler optimizes handling of string literals(and c&lt;b&gt;ompile-time constant&lt;br /&gt;expressions&lt;/b&gt; that evaluate to strings)&lt;br /&gt;
&lt;br /&gt;
so for the above two String &lt;b&gt;str1 &lt;/b&gt;and &lt;b&gt;str2&lt;/b&gt; holds the same character sequence so they will be sharing a single string reference .these type of String are said to be "&lt;b&gt;Interned&lt;/b&gt;".&lt;br /&gt;
&lt;br /&gt;
The String class maintains a&lt;b&gt; private pool &lt;/b&gt;where such strings are &lt;b&gt;interned&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
and if you call any methods on &lt;b&gt;str2 &lt;/b&gt;wont effect the &lt;b&gt;str1 &lt;/b&gt;reference.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;String str3 = "You cannot" + "change me!";&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
this intern can be applied to &lt;b&gt;str3 &lt;/b&gt;also&lt;br /&gt;
&lt;br /&gt;
&lt;div style="color: red;"&gt;
&lt;b&gt;String s = "change me!";&lt;/b&gt;&lt;/div&gt;
&lt;div style="color: red;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="color: red;"&gt;
&lt;b&gt;String str5 = "You cannot" + s ;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&amp;nbsp;&lt;b&gt;intern &lt;/b&gt;will not be applied to &lt;b&gt;str5 &lt;/b&gt;so a new string will be created for &lt;b&gt;str5&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
and finally &lt;b&gt;A string constructed with new operator will always creates a new reference in jvm&lt;/b&gt;. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3476107016780045715-8196355454653514975?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/8196355454653514975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/string-pool-in-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/8196355454653514975?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/8196355454653514975?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/string-pool-in-java.html' title='String pool in java'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;AkcDQX09eyp7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-1903708623890593714</id><published>2012-07-10T12:03:00.000-07:00</published><updated>2012-07-29T09:07:50.363-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:07:50.363-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='webservice'/><title>Adding SOAP header in Webservice Handler</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
In this program in&amp;nbsp; "handleRequest" method i added a Username/password in SOAP Header.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
import javax.xml.namespace.QName;&lt;br /&gt;
import javax.xml.rpc.handler.Handler;&lt;br /&gt;
import javax.xml.rpc.handler.HandlerInfo;&lt;br /&gt;
import javax.xml.rpc.handler.MessageContext;&lt;br /&gt;
import javax.xml.rpc.handler.soap.SOAPMessageContext;&lt;br /&gt;
import javax.xml.soap.Name;&lt;br /&gt;
import javax.xml.soap.SOAPElement;&lt;br /&gt;
import javax.xml.soap.SOAPEnvelope;&lt;br /&gt;
import javax.xml.soap.SOAPException;&lt;br /&gt;
import javax.xml.soap.SOAPHeader;&lt;br /&gt;
import javax.xml.soap.SOAPHeaderElement;&lt;br /&gt;
import javax.xml.soap.SOAPMessage;&lt;br /&gt;
import javax.xml.soap.SOAPPart;&lt;br /&gt;
&lt;br /&gt;
public class WSDLServiceHandler implements Handler {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;private static final String HDR_PREFIX = "wsse";&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;private static final String HDR_URI = "http://schemas.xmlsoap.org/ws/2002/07/secext";&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;@Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public void destroy() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;@Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public QName[] getHeaders() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;@Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public boolean handleFault(MessageContext context) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;@Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public boolean handleRequest(MessageContext context) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SOAPMessageContext smc = (SOAPMessageContext) context;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SOAPMessage msg = smc.getMessage();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SOAPPart part = msg.getSOAPPart();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SOAPEnvelope env = part.getEnvelope();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SOAPHeader sh = msg.getSOAPHeader();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (sh == null) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;sh = env.addHeader();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Name nameHdr = env.createName("Security", HDR_PREFIX, HDR_URI);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SOAPHeaderElement security = sh.addHeaderElement(nameHdr);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;security.setMustUnderstand(false);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;security.addNamespaceDeclaration(HDR_PREFIX, HDR_URI);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SOAPElement userNameToken = security.addChildElement("UsernameToken", HDR_PREFIX);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;userNameToken.addNamespaceDeclaration(HDR_PREFIX, HDR_URI);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SOAPElement userName = userNameToken.addChildElement("Username",HDR_PREFIX);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;userName.addNamespaceDeclaration(HDR_PREFIX, HDR_URI);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;userName.addTextNode("USERNAME");&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SOAPElement password = userNameToken.addChildElement("Password",HDR_PREFIX);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;password.addNamespaceDeclaration(HDR_PREFIX, HDR_URI);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;password.addTextNode("UserPassword");&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;String soapEnvelope = env.toString();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (SOAPException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;@Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public boolean handleResponse(MessageContext context) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;@Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public void init(HandlerInfo config) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&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/3476107016780045715-1903708623890593714?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/1903708623890593714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/adding-soap-header-in-webservice-handler.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/1903708623890593714?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/1903708623890593714?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/adding-soap-header-in-webservice-handler.html' title='Adding SOAP header in Webservice Handler'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;AkcMQHk-fyp7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-8849526294113037784</id><published>2012-07-09T12:09:00.000-07:00</published><updated>2012-07-29T09:08:01.757-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:08:01.757-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><title>create SOAP Element From XML String</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&amp;nbsp;import java.io.IOException;&lt;br /&gt;
import java.io.StringReader;&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import javax.xml.parsers.*;&lt;br /&gt;
import javax.xml.soap.*;&lt;br /&gt;
import org.xml.sax.InputSource;&lt;br /&gt;
import org.xml.sax.SAXException;&lt;br /&gt;
&lt;br /&gt;
public class Test{&lt;br /&gt;
&lt;br /&gt;
public static SOAPElement createSOAPElementFromXMLString(String xmlString)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throws ParserConfigurationException, IOException, SAXException&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StringReader stringReader = new StringReader(xmlString);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InputSource inputSource = new InputSource(stringReader);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SAXParserFactory factory = SAXParserFactory.newInstance();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; factory.setNamespaceAware(true);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SAXParser parser = factory.newSAXParser();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SoapElementSaxHandler handler = new SoapElementSaxHandler();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parser.parse(inputSource, handler);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return handler.getSOAPElement();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SoapElementSaxHandler.java&lt;br /&gt;
&amp;nbsp;~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import javax.xml.soap.*;&lt;br /&gt;
import org.xml.sax.Attributes;&lt;br /&gt;
import org.xml.sax.SAXException;&lt;br /&gt;
import org.xml.sax.helpers.DefaultHandler;&lt;br /&gt;
&lt;br /&gt;
public class SoapElementSaxHandler extends DefaultHandler&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public SoapElementSaxHandler()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prefixURIMapping = new HashMap();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uris = new ArrayList();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rootElement = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentElement = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public SOAPElement getSOAPElement()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return rootElement;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void startDocument()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throws SAXException&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; soapFactory = SOAPFactory.newInstance();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch(SOAPException e)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new SAXException("Can't create a SOAPFactory instance", e);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void startPrefixMapping(String prefix, String uri)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prefixURIMapping.put(uri, prefix);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uris.add(uri);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void characters(char ch[], int start, int length)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throws SAXException&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String str = String.valueOf(ch);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(length &amp;gt; 0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentElement.addTextNode(str.substring(start, start + length));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch(SOAPException e)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new SAXException("Can't add a text node into SOAPElement from text", e);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void endElement(String uri, String localName, String qName)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(currentElement != rootElement)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentElement = currentElement.getParentElement();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void startElement(String namespaceURI, String localName, String qName, Attributes atts)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throws SAXException&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String prefix = (String)prefixURIMapping.get(namespaceURI);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(rootElement == null &amp;amp;&amp;amp; currentElement == null)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rootElement = soapFactory.createElement(localName, prefix, namespaceURI);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentElement = rootElement;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentElement = currentElement.addChildElement(localName, prefix, namespaceURI);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(uris.size() &amp;gt; 0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i = 0; i &amp;lt; uris.size(); i++)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String uri = (String)uris.get(i);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String pre = (String)prefixURIMapping.get(uri);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentElement.addNamespaceDeclaration(pre, uri);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uris.clear();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i = 0; i &amp;lt; atts.getLength(); i++)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; javax.xml.soap.Name attriName;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(atts.getURI(i) != null)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String attriPre = (String)prefixURIMapping.get(atts.getURI(i));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attriName = soapFactory.createName(atts.getLocalName(i), attriPre, atts.getURI(i));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attriName = soapFactory.createName(atts.getLocalName(i));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentElement.addAttribute(attriName, atts.getValue(i));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch(SOAPException e)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new SAXException(e);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private HashMap prefixURIMapping;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private ArrayList uris;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private SOAPElement rootElement;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private SOAPElement currentElement;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private SOAPFactory soapFactory;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&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/3476107016780045715-8849526294113037784?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/8849526294113037784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/create-soap-element-from-xml-string.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/8849526294113037784?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/8849526294113037784?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/create-soap-element-from-xml-string.html' title='create SOAP Element From XML String'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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>2</thr:total></entry><entry gd:etag='W/&quot;AkcMRn8yfip7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-3184546513783169982</id><published>2012-07-09T12:05:00.000-07:00</published><updated>2012-07-29T09:08:07.196-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:08:07.196-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><title>Create DomElement From XML String</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
import java.io.StringReader;&lt;br /&gt;
import javax.xml.parsers.DocumentBuilder;&lt;br /&gt;
import javax.xml.parsers.DocumentBuilderFactory;&lt;br /&gt;
import org.w3c.dom.*;&lt;br /&gt;
import org.xml.sax.InputSource;&lt;br /&gt;
&lt;br /&gt;
public class DomParser{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;public static Element createDomElementFromXMLString(String xmlString)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InputSource inputSource;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StringReader stringReader = new StringReader(xmlString);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inputSource = new InputSource(stringReader);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Document document;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document = docBuilder.parse(inputSource);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return document.getDocumentElement();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JVM INSTR pop ;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&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/3476107016780045715-3184546513783169982?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/3184546513783169982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/create-domelement-from-xml-string.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/3184546513783169982?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/3184546513783169982?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/create-domelement-from-xml-string.html' title='Create DomElement From XML String'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;AkcNQ305eCp7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-216214797881358891</id><published>2012-07-07T14:20:00.000-07:00</published><updated>2012-07-29T09:08:12.320-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:08:12.320-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='webservice'/><title>Web Service Security  using Apache Rampart</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div class="post-header"&gt;
&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;span style="color: #6600cc; font-family: times new roman; font-size: 130%; font-weight: bold;"&gt;&lt;span style="font-size: 180%;"&gt;Web Service Security Encryption with Rampart 1.4 and Axis2 1.4.1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
&lt;span style="color: #cc33cc; font-size: 130%;"&gt;&lt;br /&gt;&lt;span style="color: #993399; font-weight: bold;"&gt;Writing Client Based on the .JKS and .CER files&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Download  axis2-1.4.1-bin.zip (Standard Binary Distribution)  from axis site,   the URL is http://ws.apache.org/axis2/download/1_4/download.cgi&lt;/li&gt;
&lt;li&gt;Download  rampart-dist-1.4-bin.zip (Standard Binary Distribution) from Apache  Rampart, the URL is  http://ws.apache.org/rampart/download/1.4/download.cgi&lt;/li&gt;
&lt;li&gt;Copy these 2 zip files in C:\ and extract it.&lt;/li&gt;
&lt;/ul&gt;
&lt;span style="color: #993399; font-size: 130%;"&gt;&lt;span style="font-weight: bold;"&gt;Creating Project in Eclipse AND CREATING CLIENT AND STUB&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Create a new Project in C:\ using Eclipse with the name TestWSS.     File --&amp;gt; New --&amp;gt; Java Project&lt;/li&gt;
&lt;li&gt;Set your class path to JAVA_HOME&lt;/li&gt;
&lt;li&gt;Open Command Prompt and Go to C:\axis2-1.4.1-bin\axis2-1.4.1\bin&lt;/li&gt;
&lt;li&gt;Execute axis2.bat&lt;/li&gt;
&lt;li&gt;Copy your wsdl file into C:\axis2-1.4.1-bin\axis2-1.4.1\bin (Assume the wsdl file name is meal.wsdl).&lt;/li&gt;
&lt;li&gt;Execute the below command from command prompt&lt;/li&gt;
&lt;li&gt;C:\axis2-1.4.1-bin\axis2-1.4.1\bin&amp;gt;wsdl2java -uri C:\axis2-1.4.1-bin\axis2-1.4.1\bin\meal.wsdl&lt;/li&gt;
&lt;li&gt;After  executing the above command you will get the stub and Handler class in  the C:\axis2-1.4.1-bin\axis2-1.4.1\bin with package.&lt;/li&gt;
&lt;/ul&gt;
&lt;span style="color: #993399; font-size: 130%;"&gt;&lt;span style="font-weight: bold;"&gt;Placing Client Files in Project SRC and applying signature through Rampart 1.4&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="color: black;"&gt;Copy generated file into C:\TestWSS\src folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color: black;"&gt;Create  a folder parallel to src with the name client-repo and copy module  directory from C:\rampart-dist-1.4-bin\rampart-1.4\ to  C:\TestWSS\client-repo.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color: black;"&gt;This module folder should contain rampart-1.4.mar and addressing-1.41.mar&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color: black;"&gt;Add  all .jar files present in the C:\rampart-dist-1.4-bin\rampart-1.4\lib  directory needs to add to the Eclipse Project build path.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color: black;"&gt;Add all .jar files present in the C:\axis2-1.4-bin\axis2-1.4\lib directory needs to add to the Eclipse Project build path.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color: black;"&gt;Refresh  the project in Eclipse and compile it this time you won’t get any  compilation errors because we already set the required jars to the class  path.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style="color: #993399; font-size: 130%;"&gt;&lt;span style="font-weight: bold;"&gt;Writing Client Policy File&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
As  you can see, the above security policy contains two main security  assertions: an asymmetric binding assertion and a signed parts  assertion. Asymmetric binding defines what keys to be used and a few  additional properties such as which algorithms to be used in  cryptographic operations, layout of the security header, etc. Signed  parts assertion defines what parts of the message should be signed. In  this tutorial we will be signing the SOAP body of the message.&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/3476107016780045715-216214797881358891?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/216214797881358891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/web-service-security-using-apache.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/216214797881358891?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/216214797881358891?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/web-service-security-using-apache.html' title='Web Service Security  using Apache Rampart'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;AkcNSX05fyp7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-379722494987577504</id><published>2012-07-07T14:18:00.000-07:00</published><updated>2012-07-29T09:08:18.327-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:08:18.327-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='coding in java'/><title>Identifying Special Characters in a Given String</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
package special;&lt;br /&gt;
&lt;br /&gt;
public class IdentifySpecialChar {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public static void main(String[] args) {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;System.out.println(IdentifySpecialChar&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;.identifyingSpecialCharacters("Anil@"));&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (Exception e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public static boolean identifyingSpecialCharacters(String value)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;throws Exception {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;boolean returnVal = false;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;char[] charArray = value.toCharArray();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; charArray.length; i++) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;System.out.println((int) charArray[i]);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if ((((int) charArray[i]) &amp;gt;= 32 &amp;amp;&amp;amp; ((int) charArray[i]) &amp;lt;= 47)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;|| (((int) charArray[i]) &amp;gt;= 58 &amp;amp;&amp;amp; ((int) charArray[i]) &amp;lt;= 64)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;|| (((int) charArray[i]) &amp;gt;= 91 &amp;amp;&amp;amp; ((int) charArray[i]) &amp;lt;= 96)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;|| (((int) charArray[i]) &amp;gt;= 123 &amp;amp;&amp;amp; ((int) charArray[i]) &amp;lt;= 127)) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;returnVal = true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return returnVal;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&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/3476107016780045715-379722494987577504?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/379722494987577504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/identifying-special-characters-in-given.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/379722494987577504?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/379722494987577504?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/identifying-special-characters-in-given.html' title='Identifying Special Characters in a Given String'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;AkYERnc7eyp7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-5153224172409988183</id><published>2012-07-07T13:54:00.000-07:00</published><updated>2012-07-29T09:08:27.903-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:08:27.903-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='hacking tips'/><title>PC Tips &amp; Tricks</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div class="post-header"&gt;
&lt;/div&gt;
&lt;b&gt;Create desktop icon for restart and shutdown &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Do the following:&lt;br /&gt;
1. Right click on your desktop&lt;br /&gt;
2. Then in NEW click on SHORTCUT&lt;br /&gt;
3. A shortcut wizard will appear&lt;br /&gt;
4. Type this in the box:&lt;br /&gt;
shutdown -s -t 00&lt;br /&gt;
5. Your done now right click on the folder&amp;gt;properties&amp;gt;Change Icon&lt;br /&gt;
And then choose any appropriate icon&lt;br /&gt;
For restart instead of -s type –r&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;Lock any folder without using any software&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
1. Suppose you have a folder named abcd in D:\abcd.&lt;br /&gt;
2. In the same drive next to the folder create a new notepad file with the exact statement&lt;br /&gt;
ren abcd abcd.{21EC2020-3AEA-1069-A2DD-08002B30309D}&lt;br /&gt;
3. Now save this text file as loc.bat&lt;br /&gt;
4. Create another notepad file and type&lt;br /&gt;
ren abcd.{21EC2020-3AEA-1069-A2DD-08002B30309D} abcd&lt;br /&gt;
5. Save this as key.bat&lt;br /&gt;
6.  Now there are two batch files. Double click loc.bat and your folder  will change into Control Panel and its contents cannot be viewed .&lt;br /&gt;
7. To open the folder double click key.bat and you get back your original folder.&lt;br /&gt;
8.  For more safety keep the key.bat in another location . Only for  unlocking copy paste to the original location and double click&lt;br /&gt;
(don't forget to replace abcd with the folder name)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;br /&gt;Hide your files in jpeg format&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Well,  did you know you could hide your files in a JPEG file? For this, you  will only need to download WinRAR. You just need to have a little  knowledge about Command Prompt and have WinRAR installed.&lt;br /&gt;
1. Gather all the files that you wish to hide in a folder anywhere in your PC (make it in C:\hidden - RECOMMENDED).&lt;br /&gt;
2. Now, add those files in a RAR archive (e.g. secret.rar). This file should also be in the same directory (C:\hidden).&lt;br /&gt;
3. Now, look for a simple JPEG picture file (e.g. logo.jpg). Copy/Paste that file also in C:\hidden.&lt;br /&gt;
4. Now, open Command Prompt (Go to Run and type ‘cmd‘). Make your working directory C:\hidden.&lt;br /&gt;
5.  Now type: “COPY /b logo.jpg + secret.rar output.jpg” (without quotes) -  Now, logo.jpg is the picture you want to show, secret.rar is the file  to be hidden, and output.jpg is the file which contains both. &lt;br /&gt;
6.  Now, after you have done this, you will see a file output.jpg in  C:\hidden. Open it (double-click) and it will show the picture you  wanted to show. Now try opening the same file with WinRAR, it will show  the hidden archive .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Make your start menu run faster&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
1. Go to to 'run' Type regedit.&lt;br /&gt;
2. Browse to HKEY_CURRENT_USER &amp;gt; CONTROL PANEL &amp;gt; DESKTOP&lt;br /&gt;
3. There is an key called 'MenuShowDelay'&lt;br /&gt;
4. Double click on it and change 400 to 0&lt;br /&gt;
5. Click 'ok' and restart your computer to see changes to take effect&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Set Wallpapers in Drives in XP&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
All you have to do is just create a "Notepad" file and copy paste this in your Drive&lt;br /&gt;
[{BE098140-A513-11D0-A3A4-00C04FD706EC}]  iconarea_image=C:\Documents and Settings\All Users\Documents\My  Pictures\Sample Pictures\sunset.jpg iconarea_text=0x00FFFFFF&lt;br /&gt;
Save it as desktop.ini&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Automatically close non-responsive programs&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
With  a small registry tweak, Windows XP can be set to automatically close  any program that 'stops responding' (crashes), eliminating the need for  you to use the task manager to close down the offending software  manually.&lt;br /&gt;
To do this:&lt;br /&gt;
Open REGEDIT and navigate to HKEY_CURRENT_USER\Control Panel\ Desktop&lt;br /&gt;
Modify the REG_SZ entry AutoEndTasks with a value of 1 &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Remove shut down option&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Wanna play with your friends by removing the shutdown option from start menu in their computer.&lt;br /&gt;
Click on start&amp;gt;run(win key+r)&lt;br /&gt;
Then tpye “regedit” there, this opens up the registry editor, now goto&lt;br /&gt;
HKEY_LOCAL_MACHINE&amp;gt;SOFTWARE&amp;gt;Microsoft&amp;gt;Windows&amp;gt;CurrentVersion&amp;gt;Explorer&lt;br /&gt;
Then set “NoClose”=”DWORD:1 &lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3476107016780045715-5153224172409988183?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/5153224172409988183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/pc-tips-tricks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/5153224172409988183?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/5153224172409988183?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/pc-tips-tricks.html' title='PC Tips &amp;amp; Tricks'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;AkYFQnk8eyp7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-6045190600513141400</id><published>2012-07-07T13:52:00.000-07:00</published><updated>2012-07-29T09:08:33.773-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:08:33.773-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='hacking tips'/><title>PC Tricks</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;How to make your Desktop Icons Transparent&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Go to Control Panel  &amp;gt; System, &amp;gt; Advanced &amp;gt; Performance area &amp;gt; Settings button  Visual Effects tab "Use drop shadows for icon labels on the Desktop"&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Speed up your browsing of Windows 2000 &amp;amp; XP machines&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Here's  a great tip to speed up your browsing of Windows XP machines. Its  actually a fix to a bug installed as default in Windows 2000 that scans  shared files for Scheduled Tasks. And it turns out that you can  experience a delay as long as 30 seconds when you try to view shared  files across a network because Windows 2000 is using the extra time to  search the remote computer for any Scheduled Tasks. Note that though the  fix is originally intended for only those affected, Windows 2000 users  will experience that the actual browsing speed of both the Internet  &amp;amp; Windows Explorers improve significantly after applying it since it  doesn't search for Scheduled Tasks anymore. Here's how :&lt;br /&gt;
&lt;br /&gt;
Open up the Registry and go to :&lt;br /&gt;
&lt;br /&gt;
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/Current Version/Explorer/RemoteComputer/NameSpace&lt;br /&gt;
&lt;br /&gt;
Under that branch, select the key :&lt;br /&gt;
&lt;br /&gt;
{D6277990-4C6A-11CF-8D87-00AA0060F5BF}&lt;br /&gt;
&lt;br /&gt;
and delete it.&lt;br /&gt;
&lt;br /&gt;
This  is key that instructs Windows to search for Scheduled Tasks. If you  like you may want to export the exact branch so that you can restore the  key if necessary.&lt;br /&gt;
&lt;br /&gt;
This fix is so effective that it doesn't  require a reboot and you can almost immediately determine yourself how  much it speeds up your browsing processes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Remove the Recycle Bin from the Desktop&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
If you don't use the Recycle Bin to store deleted files , you can get rid of its desktop icon all together.&lt;br /&gt;
&lt;br /&gt;
Run Regedit and go to:&lt;br /&gt;
&lt;br /&gt;
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/explorer/Desktop/NameSpace &lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3476107016780045715-6045190600513141400?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/6045190600513141400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/pc-tricks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/6045190600513141400?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/6045190600513141400?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/pc-tricks.html' title='PC Tricks'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;AkYBRng4eyp7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-5541942939653316935</id><published>2012-07-07T13:49:00.000-07:00</published><updated>2012-07-29T09:09:17.633-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:09:17.633-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='hacking tips'/><title>Hiding folders in windows without any Software</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
go to command prompt  start---&amp;gt;run---&amp;gt;cmd--&amp;gt;d:&lt;br /&gt;
after changing it from C: to D:&lt;br /&gt;
type D:/&amp;gt;attrib +h +s anil&lt;br /&gt;
&amp;nbsp;the above command is to hide the folder  to show the folder&lt;br /&gt;
type D:/&amp;gt;attrib -h -s anil&lt;br /&gt;
in this type of hidding the folder cannot be viewed even if we make advance search or even changing the folders menu to (show all hidden files)&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3476107016780045715-5541942939653316935?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/5541942939653316935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/hiding-folders-in-windows-without-any.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/5541942939653316935?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/5541942939653316935?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/hiding-folders-in-windows-without-any.html' title='Hiding folders in windows without any Software'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;AkYCQn09fCp7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-869822692647517901</id><published>2012-07-04T14:19:00.000-07:00</published><updated>2012-07-29T09:09:23.364-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:09:23.364-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='coding in java'/><title>Simple Chat Demo - (server to client)</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;i&gt;Server.java&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;~~~~~~~~~~&lt;/i&gt;&lt;br /&gt;
package com.newChat.test;&lt;br /&gt;
&lt;br /&gt;
import java.io.BufferedReader;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.InputStream;&lt;br /&gt;
import java.io.InputStreamReader;&lt;br /&gt;
import java.io.OutputStream;&lt;br /&gt;
import java.io.PrintStream;&lt;br /&gt;
import java.net.InetSocketAddress;&lt;br /&gt;
import java.net.ServerSocket;&lt;br /&gt;
import java.net.Socket;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
* message program server side, create server listen on special port&lt;br /&gt;
*&lt;br /&gt;
*/&lt;br /&gt;
public class Server {&lt;br /&gt;
public static void main(String[] args) {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * create UI window&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; UI ui = new UI();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ui.setTitle("server");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ui.setVisible(true);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * create server socket wait client connect&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ServerSocket ss = new ServerSocket(8000);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Socket socket = ss.accept();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // /////////////////////////////////////////////////&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * common access socket method, get output stream&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; OutputStream os = socket.getOutputStream();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; PrintStream ps = new PrintStream(os);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ui.setStream(ps);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * get input stream&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; InputStream is = socket.getInputStream();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; InputStreamReader isr = new InputStreamReader(is);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; BufferedReader reader = new BufferedReader(isr);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * get remote address&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; InetSocketAddress address = (InetSocketAddress) socket&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .getRemoteSocketAddress();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; String host = address.getHostName();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * get message and show it in GUI window&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; String line;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((line = reader.readLine()) != null) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ui.append("From: " + host + "\nMessage: " + line);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; } catch (IOException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;Client.java&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;~~~~~~~~~~~&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
package com.newChat.test;&lt;br /&gt;
&lt;br /&gt;
import java.io.BufferedReader;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.InputStream;&lt;br /&gt;
import java.io.InputStreamReader;&lt;br /&gt;
import java.io.OutputStream;&lt;br /&gt;
import java.io.PrintStream;&lt;br /&gt;
import java.net.InetSocketAddress;&lt;br /&gt;
import java.net.Socket;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
* message program client side create client&lt;br /&gt;
*&lt;br /&gt;
*/&lt;br /&gt;
public class Client {&lt;br /&gt;
public static void main(String[] args) {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp; * create UI window&lt;br /&gt;
&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp; UI ui = new UI();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ui.setTitle("client");&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ui.setVisible(true);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * create client socket connect to server&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Socket socket = new Socket("127.0.0.1", 8000);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // /////////////////////////////////////////////////&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * common access socket method, get output stream&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; OutputStream os = socket.getOutputStream();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; PrintStream ps = new PrintStream(os);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ui.setStream(ps);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * get input stream&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; InputStream is = socket.getInputStream();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; InputStreamReader isr = new InputStreamReader(is);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; BufferedReader reader = new BufferedReader(isr);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * get remote address&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; InetSocketAddress address = (InetSocketAddress) socket&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .getRemoteSocketAddress();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; String host = address.getHostName();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; * get message and show it in GUI window&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; String line;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((line = reader.readLine()) != null) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ui.append("From: " + host + ": Message: " + line);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; } catch (IOException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;UI.java&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;~~~~~~~&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
package com.newChat.test;&lt;br /&gt;
&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.io.PrintStream;&lt;br /&gt;
&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTextArea;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
&amp;nbsp;* UI window for message program, construct GUI window&lt;br /&gt;
&amp;nbsp;* &lt;br /&gt;
&amp;nbsp;* &lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
public class UI extends JFrame implements ActionListener {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private JTextArea textArea;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private JTextField textField;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private JButton button;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private PrintStream stream;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* construct method&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public UI() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;init();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Create Message GUI Window&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private void init() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setDefaultCloseOperation(DISPOSE_ON_CLOSE);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;setBounds(200, 200, 400, 300);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; * add textArea for show&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;textArea = new JTextArea();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;textArea.setEditable(false);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;JScrollPane scrollPane = new JScrollPane(textArea);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;add(scrollPane);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; * add send text field button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;JPanel panel = new JPanel(new BorderLayout());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;add(panel, BorderLayout.SOUTH);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;textField = new JTextField();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;panel.add(textField);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;button = new JButton("Send");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;button.addActionListener(this);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;panel.add(button, BorderLayout.EAST);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void actionPerformed(ActionEvent e) {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; * append send message to textArea clear send text field&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;String text = textField.getText();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;textArea.append("Send: ");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;textArea.append(text);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;textArea.append("\n");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;textArea.setAutoscrolls(true);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;textField.setText("");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;textField.requestFocus();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; * send text to remote&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;stream.println(text);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* get outputStream&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setStream(PrintStream stream) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;this.stream = stream;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* append get message to textArea&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void append(String text) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;textArea.append("Get: ");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;textArea.append(text);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;textArea.append("\n");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* main method test GUI use&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;new UI().setVisible(true);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;i&gt;&lt;b&gt; &lt;/b&gt;&lt;/i&gt;&lt;br /&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/3476107016780045715-869822692647517901?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/869822692647517901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/simple-chat-demo-server-to-client.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/869822692647517901?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/869822692647517901?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/simple-chat-demo-server-to-client.html' title='Simple Chat Demo - (server to client)'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;AkYCSXg-cCp7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-3717120717510849238</id><published>2012-07-04T14:10:00.000-07:00</published><updated>2012-07-29T09:09:28.658-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:09:28.658-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='coding in java'/><title>File Copy with GUI in Java</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp;CopyGUI.java&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;~~~~~~~~~~~~~ &lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
package com.copyFile.test;&lt;br /&gt;
&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.io.File;&lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.io.FileOutputStream;&lt;br /&gt;
&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFileChooser;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JOptionPane;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JProgressBar;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.event.ChangeEvent;&lt;br /&gt;
import javax.swing.event.ChangeListener;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
&amp;nbsp;* Copy File GUI&lt;br /&gt;
&amp;nbsp;* &lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
public class CopyGUI extends JFrame implements ActionListener, ChangeListener {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private static final long serialVersionUID = 1L;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private JLabel fromLabel;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private JLabel toLabel;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private JTextField fromField;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private JTextField toField;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private JButton fromButton;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private JButton toButton;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private JProgressBar progressBar;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private JButton beginButton;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private File fromFile;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private File toFile;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private long fileLength;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private String fileName;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public CopyGUI() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; init();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private void init() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; setDefaultCloseOperation(DISPOSE_ON_CLOSE);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; setBounds(200, 200, 400, 300);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; setResizable(false);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; setTitle("File Copy GUI");&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; JPanel panel = new JPanel(null);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; add(panel);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* add button and lebel&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fromLabel = new JLabel("From:");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fromLabel.setBounds(40, 20, 50, 20);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fromField = new JTextField();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fromField.setBounds(100, 20, 200, 20);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fromButton = new JButton("Browse");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fromButton.setBounds(300, 20, 80, 20);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fromButton.addActionListener(this);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; toLabel = new JLabel("To: ");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; toLabel.setBounds(40, 40, 50, 20);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; toField = new JTextField();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; toField.setBounds(100, 40, 200, 20);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; toButton = new JButton("Browse");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; toButton.setBounds(300, 40, 80, 20);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; toButton.addActionListener(this);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; panel.add(fromLabel);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; panel.add(fromField);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; panel.add(fromButton);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; panel.add(toLabel);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; panel.add(toField);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; panel.add(toButton);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* add progress bar&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; progressBar = new JProgressBar();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; progressBar.setBounds(50, 100, 300, 30);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; progressBar.addChangeListener(this);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; panel.add(progressBar);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; beginButton = new JButton("Begin Copy");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; beginButton.setBounds(200, 200, 100, 20);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; beginButton.addActionListener(this);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; panel.add(beginButton);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void actionPerformed(ActionEvent e) {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* choose from file&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (e.getSource() == fromButton) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; JFileChooser fileChooser = new JFileChooser();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fileChooser.setMultiSelectionEnabled(false);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int op = fileChooser.showOpenDialog(this);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (op == JFileChooser.APPROVE_OPTION) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fromFile = fileChooser.getSelectedFile();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fileName = fromFile.getName();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fromField.setText(fromFile.getAbsolutePath());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* choose to file&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (e.getSource() == toButton) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; JFileChooser fileChooser = new JFileChooser();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int op = fileChooser.showOpenDialog(this);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (op == JFileChooser.APPROVE_OPTION) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; toFile = fileChooser.getSelectedFile();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (fileName != null) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fileName = fromFile.getName();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; toField.setText(toFile.getAbsolutePath() + fileName);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* begin copy method&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (e.getSource() == beginButton) {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* before copy check from file and to file&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ("".equals(fromField.getText())) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; JOptionPane.showMessageDialog(this, "Input from File!");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ("".equals(toField.getText())) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; JOptionPane.showMessageDialog(this, "Input to File!");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* get copy from file and to file&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fromFile = new File(fromField.getText());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; toFile = new File(toField.getText());&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* if to file exist, ask user information&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (toFile.exists()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int op = JOptionPane.showConfirmDialog(this, toFile.getName()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; + " file exist! \n Do your want to cover it?",&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; "Confirm Window", JOptionPane.YES_NO_OPTION);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (op == JOptionPane.NO_OPTION) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; JOptionPane.showMessageDialog(this, "Copy Canceled");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fromField.setText("");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; toField.setText("");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* get file length, set progressBar max value&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fileLength = fromFile.length();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; progressBar.setMaximum((int) fileLength);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* copy method add to a new thread when copying, increase progress&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* bar&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Runnable r1 = new Runnable() {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void run() {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FileInputStream fis = new FileInputStream(fromFile);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FileOutputStream fos = new FileOutputStream(toFile);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] buf = new byte[2048];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int size = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int flag = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; while ((size = fis.read(buf)) != -1) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fos.write(buf, 0, size);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; flag += size;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; progressBar.setValue(flag);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fis.close();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fos.close();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (Exception e1) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e1.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* start new thread&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Thread t1 = new Thread(r1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; t1.start();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* update progress bar value&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void stateChanged(ChangeEvent e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (e.getSource() == progressBar) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (progressBar.getValue() == progressBar.getMaximum()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; JOptionPane.showMessageDialog(this, "Copy Over");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; progressBar.setValue(0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Main method&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; new CopyGUI().setVisible(true);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&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/3476107016780045715-3717120717510849238?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/3717120717510849238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/file-copy-with-gui-in-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/3717120717510849238?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/3717120717510849238?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/file-copy-with-gui-in-java.html' title='File Copy with GUI in Java'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;AkYDSH0-eSp7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-6601135288193846128</id><published>2012-07-04T13:56:00.000-07:00</published><updated>2012-07-29T09:09:39.351-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:09:39.351-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='coding in java'/><title>Simple Chat Demo With Error Check - (client to client)</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;i&gt;&lt;b&gt;Server.java&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;~~~~~~~~~~&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
//Simple Chat Demo With Error Check - (client to client)(Java)&lt;br /&gt;
&lt;br /&gt;
// Server.java&lt;br /&gt;
&lt;br /&gt;
package com.chat.test;&lt;br /&gt;
&lt;br /&gt;
import java.io.DataInputStream;&lt;br /&gt;
import java.io.DataOutputStream;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.InputStream;&lt;br /&gt;
import java.io.OutputStream;&lt;br /&gt;
import java.net.InetSocketAddress;&lt;br /&gt;
import java.net.ServerSocket;&lt;br /&gt;
import java.net.Socket;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
&amp;nbsp;* Simple Chat Demo with error check server side&lt;br /&gt;
&amp;nbsp;* &lt;br /&gt;
&amp;nbsp;* &lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
public class Server {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private boolean running;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private ServerSocket ss;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private Socket s;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* use ArrayList to store all connect client&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private List&amp;lt;Client&amp;gt; clients = new ArrayList&amp;lt;Client&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* construct method create server and wait client connect&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public Server(int port) throws IOException {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ss = new ServerSocket(port);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("server start!");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; running = true;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* wait client connect&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; while (running) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; s = ss.accept();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* when client connect, add it to clients list and create new thread&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* to access it&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Client c = new Client(s);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; clients.add(c);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("connect new client!");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("client numbers: " + clients.size());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; new Thread(c).start();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* client access thread&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private class Client implements Runnable {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private Socket socket;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private DataInputStream dis;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private DataOutputStream dos;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private boolean isConnected;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* construct method, get input stream and output stream&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public Client(Socket socket) throws IOException {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.socket = socket;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; InputStream is = socket.getInputStream();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dis = new DataInputStream(is);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; OutputStream os = socket.getOutputStream();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dos = new DataOutputStream(os);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; isConnected = true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* use output stream send text to client&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void send(String text) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dos.writeUTF(text);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* run method&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @see java.lang.Runnable#run()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void run() {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* get remote address and port&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; InetSocketAddress address = (InetSocketAddress) socket&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; .getRemoteSocketAddress();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String host = address.getHostName();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int port = address.getPort();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* if connected, wait client send message to server.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; while (isConnected) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String text = dis.readUTF();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Get " + host + ":" + port&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; + " Message: " + text);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Iterator clients list, send get text to all client use&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* test remote address method, to control text not send to&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* sender&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for (Client c : clients) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (!c.socket.getRemoteSocketAddress().equals(address))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; c.send(text);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* if readInput stream error occurs, then client&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* disconnected. close all client connect resource.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (dis != null)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dis.close();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dos.close();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; socket.close();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; isConnected = false;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; clients.remove(this);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("disconnect client!");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Client numbers: "&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; + clients.size());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException e1) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e1.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* server main method create new server at 4444 port&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; new Server(4444);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;Client.java&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;~~~~~~~~~~~~&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&amp;nbsp;package com.chat.test;&lt;br /&gt;&lt;br /&gt;import java.awt.BorderLayout;&lt;br /&gt;import java.awt.TextField;&lt;br /&gt;import java.awt.event.ActionEvent;&lt;br /&gt;import java.awt.event.ActionListener;&lt;br /&gt;import java.io.DataInputStream;&lt;br /&gt;import java.io.DataOutputStream;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.io.InputStream;&lt;br /&gt;import java.io.OutputStream;&lt;br /&gt;import java.net.InetSocketAddress;&lt;br /&gt;import java.net.Socket;&lt;br /&gt;&lt;br /&gt;import javax.swing.JButton;&lt;br /&gt;import javax.swing.JFrame;&lt;br /&gt;import javax.swing.JPanel;&lt;br /&gt;import javax.swing.JScrollPane;&lt;br /&gt;import javax.swing.JTextArea;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;&amp;nbsp;* Simple Chat Demo with error check client side&lt;br /&gt;&amp;nbsp;* &lt;br /&gt;&amp;nbsp;* &lt;br /&gt;&amp;nbsp;*/&lt;br /&gt;public class Client extends JFrame implements ActionListener {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private JTextArea textArea;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private TextField textField;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private newClient client;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private JButton button;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public Client() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;init();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * create client windows&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private void init() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;setDefaultCloseOperation(EXIT_ON_CLOSE);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;setBounds(200, 200, 400, 300);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;setTitle("Client");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; * add textArea to show message&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;textArea = new JTextArea();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;textArea.setEditable(false);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;textArea.setLineWrap(true);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;add(new JScrollPane(textArea));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; * add send textField and sendButton to send message&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;JPanel panel = new JPanel(new BorderLayout());&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;add(panel, BorderLayout.SOUTH);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;textField = new TextField();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;textField.addActionListener(this);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;panel.add(textField);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;button = new JButton();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;button.addActionListener(this);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;panel.add(button, BorderLayout.EAST);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; * connect to server&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;connect();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * action access method, send text to server&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void actionPerformed(ActionEvent e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;String text = textField.getText();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;textArea.append("Send: ");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;textArea.append(text);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;textArea.append("\n");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;textField.setText("");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;textField.requestFocus();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; * client send message to server&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;client.send(text);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * connect to server&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void connect() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Socket socket = new Socket("127.0.0.1", 4444);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;System.out.println("client start");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; * create new thread to access connection&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;client = new newClient(socket);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;new Thread(client).start();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (IOException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * add text to textArea&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void append(String text) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;textArea.append(text);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;textArea.append("\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * connect access method&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;class newClient implements Runnable {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;private Socket socket;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;private DataInputStream dis;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;private DataOutputStream dos;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;private boolean isConnect;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; * construct method, get input stream and output stream&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;public newClient(Socket socket) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.socket = socket;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;isConnect = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;InputStream is = socket.getInputStream();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;dis = new DataInputStream(is);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;OutputStream os = socket.getOutputStream();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;dos = new DataOutputStream(os);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (IOException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; * send textField's text to server&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void send(String text) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;dos.writeUTF(text);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (IOException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; * thread access method&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void run() {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; * get remote address&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;InetSocketAddress address = (InetSocketAddress) socket&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;.getRemoteSocketAddress();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;String host = address.getHostName();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;int port = address.getPort();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; * wait server send text, if get text from server, add text to&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; * textArea&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;while (isConnect) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;String text = dis.readUTF();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;append("Get From " + host + ":" + port + " Message: "&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;+ text);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (IOException e) {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; * if readInput stream error occurs, then server is&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; * disconnect, release all connect resources&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;System.out.println("server closed");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;dis.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;dos.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;isConnect = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;socket.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (IOException e1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;e1.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}// end while&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * main method create new server&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public static void main(String[] args) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;new Client().setVisible(true);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;/b&gt;&lt;/i&gt;&lt;br /&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/3476107016780045715-6601135288193846128?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/6601135288193846128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/simple-chat-demo-with-error-check.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/6601135288193846128?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/6601135288193846128?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/simple-chat-demo-with-error-check.html' title='Simple Chat Demo With Error Check - (client to client)'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</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 gd:etag='W/&quot;AkYNQXY7eSp7ImA9WhJQFUo.&quot;'><id>tag:blogger.com,1999:blog-3476107016780045715.post-3356379000720924308</id><published>2012-07-04T13:30:00.000-07:00</published><updated>2012-07-29T09:09:50.801-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2012-07-29T09:09:50.801-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='coding in java'/><title>Simple HTTP Server with Response Action(Java)</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;ConnectorTest.java&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;~~~~~~~~~~~~~~~&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
package com.anils.test;&lt;br /&gt;
&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.net.ServerSocket;&lt;br /&gt;
import java.net.Socket;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
&amp;nbsp;* Simulator HTTP Server, can accept user request, according request send&lt;br /&gt;
&amp;nbsp;* response, ConnectorTest where main ServerSocket&lt;br /&gt;
&amp;nbsp;* &lt;br /&gt;
&amp;nbsp;* &lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
public class ConnectorTest implements Runnable {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private final int port;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private ServerSocket serverSocket;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public ConnectorTest(int port) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.port = port;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* create serverSocket, listen on special port&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; serverSocket = new ServerSocket(port);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; new Thread(this).start();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void run() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; while (true) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* wait client connection&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Socket socket = serverSocket.accept();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; new HttpdTest(socket);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* main method, entry of system&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; new ConnectorTest(8888);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;HttpdTest.java&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;~~~~~~~~~~~~~~&lt;/b&gt;&lt;/i&gt; &lt;br /&gt;
&lt;br /&gt;
package com.anils.test;&lt;br /&gt;
&lt;br /&gt;
import java.io.BufferedReader;&lt;br /&gt;
import java.io.File;&lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.io.FileReader;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.InputStream;&lt;br /&gt;
import java.io.InputStreamReader;&lt;br /&gt;
import java.io.OutputStream;&lt;br /&gt;
import java.io.PrintWriter;&lt;br /&gt;
import java.net.Socket;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
&amp;nbsp;* Simulator HTTP Server, can accept user request, according request send&lt;br /&gt;
&amp;nbsp;* response, HttpdTest were access thread&lt;br /&gt;
&amp;nbsp;* &lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
public class HttpdTest implements Runnable {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private final Socket socket;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static final String BASE_PATH = "d:/root";&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* construct method&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param socket&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , client connect socket&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public HttpdTest(Socket socket) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.socket = socket;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; new Thread(this).start();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* main access method, access request, send response, then close&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void run() {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // access request&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // access response&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // close&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* get input stream and output stream&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; InputStream inputStream = socket.getInputStream();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; InputStreamReader inputStreamReader = new InputStreamReader(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; inputStream);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BufferedReader reader = new BufferedReader(inputStreamReader);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; OutputStream outputStream = socket.getOutputStream();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PrintWriter writer = new PrintWriter(outputStream);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* get first line, http head message&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String headLine = reader.readLine();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* split head message, get method, request file and HTTP protocol&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String[] split = headLine.split(" ");&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* if is not GET method, can't access&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (!"GET".equals(split[0])) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // can't access&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String path = split[1];&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* if end folder where '/', then add default index.html to path&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (path.endsWith("/")) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; path = path + "index.html";&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* get absolute path of file&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String filename = BASE_PATH + path;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; File file = new File(filename);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* check request file exist, if not exist, response not found page&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* message&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (!file.exists() || file.isDirectory()) {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* send http response head format&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; writer.println("HTTP/1.1 404 ok");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; writer.println();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; writer.flush();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; socket.close();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* send request file found message&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; writer.println("HTTP/1.1 200 ok");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String lowerName = filename.toLowerCase();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* according file extention, send http head message&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (lowerName.endsWith(".txt") || lowerName.endsWith(".html")) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; writer.println("Content-Type: text/html");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (lowerName.endsWith(".jpg")) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; writer.println("Content-Type: image/jpeg");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; writer.println();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (lowerName.endsWith(".txt") || lowerName.endsWith(".html")) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* if file ends with .txt or .html, get request file, read file&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* content, and send content to client&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FileReader fileReader = new FileReader(file);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; char[] buf = new char[256];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int count = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; while ((count = fileReader.read(buf)) != -1) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; writer.write(buf, 0, count);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fileReader.close();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (lowerName.endsWith(".jpg")) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* if file ends with .jpg, get request jpg file, read file&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* content, and send content to client&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FileInputStream fileInputStream = new FileInputStream(file);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] buf = new byte[250];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int count = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; while ((count = fileInputStream.read(buf)) != -1) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; outputStream.write(buf, 0, count);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; outputStream.flush();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* remember call flush method&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; writer.flush();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; socket.close();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&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/3476107016780045715-3356379000720924308?l=javanotesandconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javanotesandconcepts.blogspot.com/feeds/3356379000720924308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/simple-http-server-with-response.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/3356379000720924308?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3476107016780045715/posts/default/3356379000720924308?v=2'/><link rel='alternate' type='text/html' href='http://javanotesandconcepts.blogspot.com/2012/07/simple-http-server-with-response.html' title='Simple HTTP Server with Response Action(Java)'/><author><name>My Notes</name><uri>http://www.blogger.com/profile/17850413095776406045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>