tag:blogger.com,1999:blog-56420562155002316262024-03-12T20:09:18.874-07:00Lucky RizwanSpreading love.Rizwan Shaikhhttp://www.blogger.com/profile/15921669282151473291noreply@blogger.comBlogger16125tag:blogger.com,1999:blog-5642056215500231626.post-14587125442648354242017-09-16T07:59:00.002-07:002017-09-16T07:59:29.930-07:00Spring bean post processors<div dir="ltr" style="text-align: left;" trbidi="on">
<b>BeanPostProcessor interface allows you to execute some code or perform some action on the bean before its initialization callbacks (afterPropertiesSet method of InitializingBean interface or method specified in init-method attribute is called) and after its initialization callbacks have executed.</b><br />
<br />
<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--><br />
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]-->
<br />
<div class="MsoNormal" style="line-height: 130%; margin-bottom: 7.5pt; text-align: justify;">
Spring provides <b>28 implementations out of the box for BeanPostProcessors</b>
that handle standard functions like autowiring, applying AOP advice. <b>So it is
highly unlikely that you would be creating your own post processor</b>. Instead you
would be using 1 available out of the box. You would be using them indirectly
by using standard spring features such as applying validation annotations on a
method parameter which applies MethodValidationPostProcessor, or making method
calls @Async which applies AsyncAnnotationBeanPostProcessor.</div>
<div class="MsoNormal" style="line-height: 130%; margin-bottom: 7.5pt; text-align: justify;">
<br /></div>
<div class="MsoNormal" style="line-height: 130%; margin-bottom: 7.5pt; text-align: justify;">
Here is a brief overview of the bean lifecycle.</div>
<br />
<ol style="text-align: left;">
<li>Create the bean instance either by a constructor or by a factory method.</li>
<li>Set the values and bean references to the bean properties.</li>
<li>Call the setter methods defined in the all the aware interfaces. (setBeanFactory() method for beans implementing BeanFactoryAware interface, setApplicationContext() method for beans implementing ApplicationContextAware interface.)</li>
<li>Pass the bean instance to the postProcessBeforeInitialization() method of each bean post processor.</li>
<li>Call the initialization callback methods.</li>
<li>Pass the bean instance to the postProcessAfterInitialization() method of each bean post processor.</li>
<li>The bean is ready to be used.</li>
<li>When the container is shut down, call the destruction callback methods. (destroy() method of the DisposableBean interface method specified in destory-method attribute of bean declaration) </li>
</ol>
<br />
<div class="MsoNormal" style="line-height: 130%; margin-bottom: 7.5pt; text-align: justify;">
This post tries to give you a feel of BeanPostProcessor.</div>
<div class="MsoNormal" style="line-height: 130%; margin-bottom: 7.5pt; text-align: justify;">
We will be using Java configuration to create beans.</div>
<div class="MsoNormal" style="line-height: 130%; margin-bottom: 7.5pt; text-align: justify;">
@Configuration<br />@ComponentScan(basePackages= {"com.rizwan.test.spring_bean_postprocessor_demo"})<br />public class AppConfig {<br /><br /> @Bean(initMethod="init", destroyMethod="destroyMethod")<br /> public EmployeeDAO employeeDAO() {<br /> <br /> return new EmployeeDAO();<br /> }<br /> }</div>
<div class="MsoNormal" style="line-height: 130%; margin-bottom: 7.5pt; text-align: justify;">
In the @Bean annotation above, initMethod specifies method name that must be called after creating a new instance of that. It will be called after bean has been instantiated and initialized. destroyMethod gives the name of method that will be called when container is shutdown. It can contain code that will allow us to free resources held by the bean. </div>
<div class="MsoNormal" style="line-height: 130%; margin-bottom: 7.5pt; text-align: justify;">
Let us create a dummy bean which implements InitializingBean, DestroyableBean. This will allow us to see in exactly what sequence are all these methods called.</div>
<div class="MsoNormal" style="line-height: 130%; margin-bottom: 7.5pt; text-align: justify;">
public class EmployeeDAO implements InitializingBean, DisposableBean {<br /><br /> public void afterPropertiesSet() {<br /> <br /> System.out.println("Inside after properties set of InitializatingBean");<br /> }<br /> <br /> public void destroy() {<br /> <br /> System.out.println("Destroy method of Disposable bean");<br /> }<br /> <br /> // Check if init method can return value<br /> public void init() {<br /><br /> System.out.println("Init method of EmployeeDAO");<br /> }<br /><br /> public void destroyMethod() {<br /><br /> System.out.println("Destroy method of EmployeeDAO");<br /> }<br /><br /> public String getEmployeeName(String empId) {<br /> //for simplicity let me return a fixed string regardless of the empId passed in.<br /> return "Rizwan";<br /> }<br />}</div>
<div class="MsoNormal" style="line-height: 130%; margin-bottom: 7.5pt; text-align: justify;">
Here is out CustomBeanPostProcessor.</div>
<div class="MsoNormal" style="line-height: 130%; margin-bottom: 7.5pt; text-align: justify;">
@Component<br />public class CustomBeanPostProcessor implements BeanPostProcessor {<br /><br /> public Object postProcessBeforeInitialization(Object bean, String beanName) {<br /> <br /> System.out.println("Post processing bean with name " + beanName + " before initialization.");<br /> return bean;<br /> }<br /> <br /> public Object postProcessAfterInitialization(Object bean, String beanName) {<br /> <br /> System.out.println("Post processing bean " + beanName + " after initialization");<br /> return bean;<br /> }<br /> <br />}</div>
<div class="MsoNormal" style="line-height: 130%; margin-bottom: 7.5pt; text-align: justify;">
Please note that it must be declared as a @Component for spring to apply it to beans or it you need to a bean of that type in AppConfig class.</div>
<div class="MsoNormal" style="line-height: 130%; margin-bottom: 7.5pt; text-align: justify;">
public static void main( String[] args )<br /> {<br /> AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);<br /> @SuppressWarnings("unused")<br /> EmployeeDAO employeeDAO = context.getBean(EmployeeDAO.class);<br /> context.close();<br /> }</div>
<div class="MsoNormal" style="line-height: 130%; margin-bottom: 7.5pt; text-align: justify;">
Output:</div>
<div class="MsoNormal" style="line-height: 130%; margin-bottom: 7.5pt; text-align: justify;">
Post processing bean with name employeeDAO before initialization.<br />Inside after properties set of InitializatingBean<br />Init method of EmployeeDAO<br />Post processing bean employeeDAO after initialization<br />Destroy method of Disposable bean<br />Destroy method of EmployeeDAO</div>
<div class="MsoNormal" style="line-height: 130%; margin-bottom: 7.5pt; text-align: justify;">
Output clearly indicates that InitializingBean and DisposableBean interfaces are applied before init-method and destroy-method respectively. </div>
<div class="MsoNormal" style="line-height: 130%; margin-bottom: 7.5pt; text-align: justify;">
Please note that the CustomBeanPostProcessor was applied to all the beans including AppConfig and an internalEventListenerProcessor created by Spring. For simplicity I have included output only for the employeeDAO.</div>
<div class="MsoNormal" style="line-height: 130%; margin-bottom: 7.5pt; text-align: justify;">
</div>
<div class="MsoNormal" style="line-height: 130%; margin-bottom: 7.5pt; text-align: justify;">
Hope my post helps someone. Happy learning :)<br /></div>
</div>
Rizwan Shaikhhttp://www.blogger.com/profile/15921669282151473291noreply@blogger.com0tag:blogger.com,1999:blog-5642056215500231626.post-61289423428068604332017-07-18T03:46:00.000-07:002017-07-18T19:31:34.383-07:00Communication between POJOs in Spring / Event publishing mechanism in Spring.<div dir="ltr" style="text-align: left;" trbidi="on">
<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--><br />
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]-->
<br />
<div class="MsoNoSpacing">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Sometimes we want beans to be able to communicate among
themselves. This is typically done by Sender bean having access to Receiver
bean, and then sender sends a message to receiver by using the reference to the
receiver. This creates a tight coupling between sender and receiver. Sender is
aware of the receiver. </span></div>
<div class="MsoNoSpacing">
<br /></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;">
</span><br />
<div class="MsoNoSpacing">
<span style="font-family: "arial" , "helvetica" , sans-serif;">When using IoC POJOs can communicate by interface than by
implementation. This model helps reduce coupling. However it is efficient only
when the sender has to communicate with 1 receiver. When the sender has to
communicate with multiple receivers it has to call the receivers 1 by 1. </span></div>
<div class="MsoNoSpacing">
<br /></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;">
</span><br />
<div class="MsoNoSpacing">
<span style="font-family: "arial" , "helvetica" , sans-serif;">In Spring 1 component can send a message to another component
by publishing an event without knowing who the receiver is. Receiver is also
not aware of the sender. Receiver typically listens to an event. It can listen
to multiple events from different senders. In this way, sender and receiver are
loosely coupled.</span></div>
<div class="MsoNoSpacing">
<br /></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;">
</span><br />
<div class="MsoNoSpacing">
<span style="font-family: "arial" , "helvetica" , sans-serif;">First you must create an event, by extending
ApplicationEvent class. It is an abstract class to prevent instantiation thus disallowing
clients to create instances of ApplicationEvent class, prohibiting them from
publishing generic event. Spring notifies a listener of all events, so you must
filter the events yourself. If you use generics then Spring delivers the
message to listener that listens specifically that event.</span></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;">
</span><br />
<div class="MsoNoSpacing">
<br /></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;">
</span><br />
<div class="MsoNoSpacing">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Create and event by extending ApplicationEvent class. Give
it a constructor that accepts an object that describes the event and pass that object
to super class ApplicationEvent. Application class is abstract and does not
have default constructor, so subclasses are forced to provide a 1 or more arg
constructor.</span></div>
<div class="MsoNoSpacing">
<br /></div>
<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--><br />
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]-->
<br />
<div class="MsoNoSpacing">
<b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">public</span></b><span style="font-family: "consolas"; font-size: 10.0pt;">
<b><span style="color: #7f0055;">class</span></b> CheckoutEvent <b><span style="color: #7f0055;">extends</span></b> ApplicationEvent</span></div>
<div class="MsoNoSpacing">
<span style="font-family: "consolas"; font-size: 10.0pt;">{</span></div>
<div class="MsoNoSpacing">
<b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>private</span></b><span style="font-family: "consolas"; font-size: 10.0pt;"> Date <span style="color: #0000c0;">checkoutTime</span>;</span></div>
<div class="MsoNoSpacing">
<span style="font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span><b><span style="color: #7f0055;">public</span></b>
CheckoutEvent(Object <span style="color: #6a3e3e;">source</span>, Date <span style="color: #6a3e3e;">checkoutTime</span>)</span></div>
<div class="MsoNoSpacing">
<span style="font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>{</span></div>
<div class="MsoNoSpacing">
<span style="font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span><b><span style="color: #7f0055;">super</span></b>(<span style="color: #6a3e3e;">source</span>);</span></div>
<div class="MsoNoSpacing">
<span style="font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span><b><span style="color: #7f0055;">this</span></b>.<span style="color: #0000c0;">checkoutTime</span> = <span style="color: #6a3e3e;">checkoutTime</span>;</span></div>
<div class="MsoNoSpacing">
<span style="font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>}</span></div>
<div class="MsoNoSpacing">
<span style="font-family: "consolas"; font-size: 10.0pt;"> //… some more code specific to the event</span></div>
<span style="font-family: "consolas"; font-size: 10.0pt; line-height: 115%;">}</span><br />
<br />
<div class="MsoNoSpacing">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Create an event publisher by implementing <span style="color: black; font-size: 10pt;">ApplicationEventPublisherAware
</span>interface. It is the <span style="font-family: "arial" , "helvetica" , sans-serif;">i</span></span><span style="font-family: "arial" , "helvetica" , sans-serif;">nterface to be implemented by any object that wishes to
be notified of the ApplicationEventPublisher (typically the ApplicationContext)
that it runs in. </span><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: black; font-size: 10pt;">ApplicationEventPublisher </span> encapsulates the even publishing mechanism.</span></div>
<div class="MsoNoSpacing">
<br /></div>
<br />
<div class="MsoNoSpacing">
<span style="font-family: "arial" , "helvetica" , sans-serif;">In the event publisher method just create the event and publish
it by using calling publishEvent(event) on <span style="color: #0000c0; font-size: 10pt;">applicationEventPublisher </span>instance<span style="color: #0000c0; font-size: 10pt;">.</span></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #646464; font-family: "consolas"; font-size: 10.0pt;">@Component</span><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">(value = </span><span style="color: #2a00ff; font-family: "consolas"; font-size: 10.0pt;">"checkoutEventPublisher"</span><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">)</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">public</span></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> </span><b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">class</span></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">
CheckoutEventPublisher </span><b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">implements</span></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> ApplicationEventPublisherAware</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;">{</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;">
</span></span><b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">private</span></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">
ApplicationEventPublisher </span><span style="color: #0000c0; font-family: "consolas"; font-size: 10.0pt;">applicationEventPublisher</span><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">;</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span><span style="color: #646464;">@Override</span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;">
</span></span><b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">public</span></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> </span><b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">void</span></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">
setApplicationEventPublisher(ApplicationEventPublisher </span><span style="color: #6a3e3e; font-family: "consolas"; font-size: 10.0pt;">applicationEventPublisher</span><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">)</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;">
</span>{</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;">
</span></span><b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">this</span></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">.</span><span style="color: #0000c0; font-family: "consolas"; font-size: 10.0pt;">applicationEventPublisher</span><span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> = </span><span style="color: #6a3e3e; font-family: "consolas"; font-size: 10.0pt;">applicationEventPublisher</span><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">;</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;">
</span>}</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span><b><span style="color: #7f0055;">public</span></b><span style="color: black;"> </span><b><span style="color: #7f0055;">void</span></b><span style="color: black;"> checkout(Object
</span><span style="color: #6a3e3e;">shoppingCart</span><span style="color: black;">)</span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;">
</span>{</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;">
</span>System.</span><b><i><span style="color: #0000c0; font-family: "consolas"; font-size: 10.0pt;">out</span></i></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">.println(</span><span style="color: #2a00ff; font-family: "consolas"; font-size: 10.0pt;">"Checking out"</span><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">);</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;">
</span>CheckoutEvent </span><span style="color: #6a3e3e; font-family: "consolas"; font-size: 10.0pt;">checkoutEvent</span><span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> = </span><b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">new</span></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> CheckoutEvent(</span><span style="color: #6a3e3e; font-family: "consolas"; font-size: 10.0pt;">shoppingCart</span><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">, </span><b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">new</span></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> Date());</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;">
</span></span><span style="color: #0000c0; font-family: "consolas"; font-size: 10.0pt;">applicationEventPublisher</span><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">.publishEvent(</span><span style="color: #6a3e3e; font-family: "consolas"; font-size: 10.0pt;">checkoutEvent</span><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">);</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;">
</span>}</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNoSpacing">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;">}</span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Create a listener<span style="mso-spacerun: yes;">
</span>by implementing ApplicationListener interface and overriding
onApplicationEvent(ApplicationEvent) method. Add the code for processing the
event in it.</span></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;">
</span><br />
<div class="MsoNoSpacing">
<span style="font-family: "arial" , "helvetica" , sans-serif;">You must create a bean for the listener, else it won’t be
notified.</span></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;">
</span><br />
<div class="MsoNoSpacing">
<br /></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;">
</span><br />
<div class="MsoNoSpacing">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Generic listener (Can listen to only 1 event)</span></div>
<div class="MsoNoSpacing">
<span style="font-family: "arial" , "helvetica" , sans-serif;">As of Spring 3.0, an ApplicationListener can generically declare the event type that it is interested in. When registered with a Spring ApplicationContext, events will be filtered accordingly, with the listener getting invoked for matching event objects only.</span></div>
<div class="MsoNoSpacing">
</div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #646464; font-family: "consolas"; font-size: 10.0pt;">@Component</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">public</span></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> </span><b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">class</span></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">
CheckoutEventListener </span><b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">implements</span></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;">
</span>ApplicationListener<CheckoutEvent></span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;">{</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span><span style="color: #646464;">@Override</span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;">
</span></span><b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">public</span></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> </span><b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">void</span></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">
onApplicationEvent(CheckoutEvent </span><span style="color: #6a3e3e; font-family: "consolas"; font-size: 10.0pt;">checkoutEvent</span><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">) {</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;">
</span></span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;">
</span>System.</span><b><i><span style="color: #0000c0; font-family: "consolas"; font-size: 10.0pt;">out</span></i></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">.println(</span><span style="color: #2a00ff; font-family: "consolas"; font-size: 10.0pt;">"Checkout event occured at "</span><span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> + </span><span style="color: #6a3e3e; font-family: "consolas"; font-size: 10.0pt;">checkoutEvent</span><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">.getCheckoutTime());</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;">
</span>}</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNoSpacing">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;">}</span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing" style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Raw listener(Can listen to several events from several
publishers, <span style="font-family: "arial" , "helvetica" , sans-serif;">so </span>you need to check the type of event first before <span style="font-family: "arial" , "helvetica" , sans-serif;">han<span style="font-family: "arial" , "helvetica" , sans-serif;">dling <span style="font-family: "arial" , "helvetica" , sans-serif;">it</span></span></span>)</span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #646464; font-family: "consolas"; font-size: 10.0pt;">@Component</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">public</span></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> </span><b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">class</span></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">
CheckoutEventListener </span><b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">implements</span></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span><u>ApplicationListener</u></span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;">{</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span><span style="color: #646464;">@Override</span></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;">
</span></span><b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">public</span></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> </span><b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">void</span></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">
onApplicationEvent(ApplicationEvent </span><span style="color: #6a3e3e; font-family: "consolas"; font-size: 10.0pt;">event</span><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">)</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;">
</span>{</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;">
</span></span><b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">if</span></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">(</span><span style="color: #6a3e3e; font-family: "consolas"; font-size: 10.0pt;">event</span><span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> </span><b><span style="color: #7f0055; font-family: "consolas"; font-size: 10.0pt;">instanceof</span></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> CheckoutEvent)</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>System.</span><b><i><span style="color: #0000c0; font-family: "consolas"; font-size: 10.0pt;">out</span></i></b><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">.println(</span><span style="color: #2a00ff; font-family: "consolas"; font-size: 10.0pt;">"Checkout
event occured at "</span><span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> + ((CheckoutEvent)</span><span style="color: #6a3e3e; font-family: "consolas"; font-size: 10.0pt;">event</span><span style="color: black; font-family: "consolas"; font-size: 10.0pt;">).getCheckoutTime());</span><span style="font-family: "consolas"; font-size: 10.0pt;"></span></div>
<div class="MsoNoSpacing">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>}</span></div>
<div class="MsoNoSpacing">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;">}</span></div>
</div>
Rizwan Shaikhhttp://www.blogger.com/profile/15921669282151473291noreply@blogger.com0tag:blogger.com,1999:blog-5642056215500231626.post-35872429677725169972017-07-11T06:48:00.001-07:002017-07-11T06:48:49.349-07:00<div dir="ltr" style="text-align: left;" trbidi="on">
Today I was working on a new project in which the persistence layer was based on Hibernate 3.6.3. Was using maven for managing the dependencies.<br />
When I ran the code, I got the error, Caused by:<b> java.lang.NoClassDefFoundError: javassist/util/proxy/MethodFilter</b><br />
...<br /> at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:77)<br /> ... 16 more<br />Caused by: java.lang.ClassNotFoundException: javassist.util.proxy.MethodFilter<br /> at java.net.URLClassLoader$1.run(URLClassLoader.java:200)<br /> at java.security.AccessController.doPrivileged(Native Method)<br /> at java.net.URLClassLoader.findClass(URLClassLoader.java:188)<br /> at java.lang.ClassLoader.loadClass(ClassLoader.java:307)<br /> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)<br /> at java.lang.ClassLoader.loadClass(ClassLoader.java:252)<br /> at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)<br /> ... 21 more<br />
<br />
Solution is to add the maven dependency for javassist.<br />
<dependency><br /> <groupId>org.javassist</groupId><br /> <artifactId>javassist</artifactId><br /> <version>3.22.0-CR1</version><br /> </dependency><br />
<br />
I started thinking why does Hibernate need javassist. BTW javassist is a library which simplifies Java bytecode manipulation. But why does hibernate need to manipulate Java bytecode. Googled a bit and realized that, <span style="font-size: 12.0pt; mso-bidi-font-family: Utopia-Regular;">Hibernate
uses proxies to intercept method invocation on entities to implement lazy
loading. </span><span style="font-family: "Calibri","sans-serif"; font-size: 12.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: Utopia-Regular; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">Lazy loading is loading objects from the
database upon first access. </span><br />
<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--><br />
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]-->
<br />
<div class="MsoNoSpacing">
<span style="font-size: 12.0pt; mso-bidi-font-family: Utopia-Regular;"><br /></span></div>
</div>
Rizwan Shaikhhttp://www.blogger.com/profile/15921669282151473291noreply@blogger.com0tag:blogger.com,1999:blog-5642056215500231626.post-20770789486948771092017-06-15T00:14:00.000-07:002017-06-15T00:14:58.084-07:00ERROR: Failed to check out svn project. vn: E170001: CONNECT of ‘domain’: 403 Forbidden<div dir="ltr" style="text-align: left;" trbidi="on">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><br />
<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves>false</w:TrackMoves>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]-->
<br />
<div class="MsoNoSpacing">
Today I got a 403 forbidden error when I was trying to
checkout code from an SVN repository via Jenkins.</div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">Checking
out <u><span style="color: blue;">https://domain/svn/my/my_repos/myproject</span></u>
at revision '2017-06-15T12:11:23.590 +0530'</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><b>ERROR: Failed to check
out <u><span style="color: blue;">https://domain/svn/my/my_repos/myproject</span></u></b></span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><b>org.tmatesoft.svn.core.SVNAuthenticationException:
svn: E175002: CONNECT request failed on '<u><span style="color: blue;"><a href="http://proxyserver:3128/">http://proxyserver:3128</a></span></u>'</b></span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><b>svn: E170001: CONNECT
of ‘domain’: 403 Forbidden (<u><span style="color: blue;">https://domain</span></u>)</b></span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:110)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:96)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.connect(HTTPConnection.java:263)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:454)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:391)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:379)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:862)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:698)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:118)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1049)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:189)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.wc16.SVNBasicDelegate.getRevisionNumber(SVNBasicDelegate.java:480)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.wc16.SVNBasicDelegate.getLocations(SVNBasicDelegate.java:833)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.wc16.SVNBasicDelegate.createRepository(SVNBasicDelegate.java:527)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at org.tmatesoft.svn.core.internal.wc16.SVNUpdateClient16.doCheckout(SVNUpdateClient16.java:875)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.wc2.old.SvnOldCheckout.run(SvnOldCheckout.java:66)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.wc2.old.SvnOldCheckout.run(SvnOldCheckout.java:18)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:21)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1235)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:119)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:162)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:170)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at hudson.scm.subversion.UpdateUpdater$TaskImpl.perform(UpdateUpdater.java:134)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:162)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:996)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:972)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:948)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.FilePath.act(FilePath.java:997)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.FilePath.act(FilePath.java:975)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:897)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.scm.SubversionSCM.checkout(SubversionSCM.java:833)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at hudson.scm.SCM.checkout(SCM.java:495)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.model.AbstractProject.checkout(AbstractProject.java:1212)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:560)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:485)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.model.Run.execute(Run.java:1735)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.model.ResourceController.execute(ResourceController.java:97)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.model.Executor.run(Executor.java:415)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">org.tmatesoft.svn.core.SVNAuthenticationException:
svn: E175002: CONNECT request failed on '<u><span style="color: blue;"><a href="http://proxyserver:3128/">http://proxyserver:3128</a></span></u>'</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">svn:
E170001: CONNECT of ‘domain’: 403 Forbidden (<a href="https://svnclientprd.hewitt.com/">https://</a><u><span style="color: blue;">domain</span></u>
)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:110)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:96)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.connect(HTTPConnection.java:263)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:454)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:391)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:379)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:862)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:698)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:118)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1049)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:189)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.wc16.SVNBasicDelegate.getRevisionNumber(SVNBasicDelegate.java:480)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.wc16.SVNBasicDelegate.getLocations(SVNBasicDelegate.java:833)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.wc16.SVNBasicDelegate.createRepository(SVNBasicDelegate.java:527)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.wc16.SVNUpdateClient16.doCheckout(SVNUpdateClient16.java:875)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.wc2.old.SvnOldCheckout.run(SvnOldCheckout.java:66)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.wc2.old.SvnOldCheckout.run(SvnOldCheckout.java:18)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:21)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1235)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:119)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">Caused:
java.io.IOException: Failed to check out <u><span style="color: blue;">https://domain/svn/my/my_repos/myproject</span></u></span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:130)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:162)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:170)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.scm.subversion.UpdateUpdater$TaskImpl.perform(UpdateUpdater.java:134)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:162)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:996)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:972)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:948)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.FilePath.act(FilePath.java:997)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.FilePath.act(FilePath.java:975)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.scm.SubversionSCM.checkout(SubversionSCM.java:897)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:833)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at hudson.scm.SCM.checkout(SCM.java:495)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.model.AbstractProject.checkout(AbstractProject.java:1212)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:560)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:485)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.model.Run.execute(Run.java:1735)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.model.ResourceController.execute(ResourceController.java:97)</span></span></div>
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;">
</span></span><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span> </span>at
hudson.model.Executor.run(Executor.java:415)</span></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
I am using standard subversion plugin of Jenkins to
checkout code. </div>
<div class="MsoNoSpacing">
Jenkins configuration is very simple Jenkins. I have just
given the repository URL, global credentials and I have the left the default
settings for remaining fields.</div>
<div class="MsoNoSpacing">
<span style="mso-no-proof: yes;"></span></div>
<div class="MsoNoSpacing">
<img alt="" src="data:image/png;base64,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" /></div>
<div class="MsoNoSpacing">
In the above screenshot, although Jenkins is complaining
that it is unable to access repository, probably due to invalid credentials,
credentials were correct. Even after issue got resolved, Jenkins still gives
that error. So the root cause was something else.</div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
After hours of debugging, I bothered to give a closer look
at error message in build console. It was trying to go through a proxy. Now,
the SVN server was on the company intranet, so there is no need of proxy. Quickly
started to look around, where I have defined the proxy settings. I was running
tomcat via eclipse. Had given –Dhttp.proxyHost=proxyserver –Dhttp.proxyPort=3128
in JVM arguments.</div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
Note:</div>
<div class="MsoNoSpacing">
How to go to JVM arguments?</div>
<div class="MsoNoSpacing" style="margin-left: .5in; mso-list: l0 level1 lfo1; text-indent: -.25in;">
<span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;">1.<span style="font: 7.0pt "Times New Roman";">
</span></span></span>Double click your server in Tomcat.</div>
<div class="MsoNoSpacing" style="margin-left: .5in; mso-list: l0 level1 lfo1; text-indent: -.25in;">
<span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;">2.<span style="font: 7.0pt "Times New Roman";">
</span></span></span>Tomcat settings page opens up.</div>
<div class="MsoNoSpacing" style="margin-left: .5in; mso-list: l0 level1 lfo1; text-indent: -.25in;">
<span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;">3.<span style="font: 7.0pt "Times New Roman";">
</span></span></span>In General Information section, you have Open
Launch Configuration Link. Click it </div>
<div class="MsoNoSpacing" style="margin-left: .5in; mso-list: l0 level1 lfo1; text-indent: -.25in;">
<img alt="" src="data:image/png;base64,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Otrf3+92u2/dumWrcfxj+fu0Do6NjU1PT4fDYXrl4mg0Gg6H6dXsJicnFWSxtbW1ubn56tWrqrJYXV2Ny+LesrIUyuIfPf/b3sFBek2+aDQKaphZgA4CywH/lZrx8fGhoaG7d++63e6zl6+cu3K1r69vZGRkcnIyEolwC7fjK7vjskiPFkdHR0Wy2NnZmaAsbnln588Li3I25v2rFV1yQM721DgGBgbogXA4HKZXagYpzAhAB4Flgv8F3uTk5MjIiM/n6+3t7e7p6evr8/v94+PjoVBIKgf05FpBFoPBIC2LAwMDcrJ4+fLlhoaGCxcucLJ44sQJBVkssdmSLYtbyvd3dHS43W6fzxcIBGZnZ+ljT+F3BGgEdBBICPp2If1nJ8FgkB7TDQ4ODg8P08szRaNR5WGRnCzOzs4qy2J7ezsui/X19amVxZf32hobG10u161bt/r6+gKBQCgUisVisC5V+kPQwd+33AUD027OZu95152z17rPXOk62XjzRP2N4xevH69rPdlw87PLtz7/suvc1x6n6452b07XnfMuz3nXnXNf9XxxzX326u0zVzpPN3372aUOR0PbifobNbXfHLvQcvT8V4fPXv3o9OXqU40HT1x8/9jv9x35ovzQGVv1yb0Havbs/6R436Gd73309rtVb+39YNvuyjdK9r2+01749ruFb5cWWPf87s3dr75RnP/GrrytOy2vvfWLvNd/tvF3/+43G//oH5b5krF/fOuf3tr7wa7yQ7bqk+/XXDhy7pqjoe3s1dvnXZ6Uf0dgnF1q98UWxD+ZYDwIrADcHDkSiczOzk5NTU1OTk5PT3MPDZY9JtI4WvT7/fRo8c6dO9xo8fr166LR4rlz586cOXPq1KkTJ04cO3bs6NGjhw4d4kaLH3zwAT1afGdv6cbtO35eWLTu5VcMGyxaRPC/5hUcPHjw0KFDDofjwoULLpfL7XaPjIyEQqH5+fmV7W0gERYWl5q7h0VSSNBBAFg2/0yGpAb6DsZ9991333333X///ffff/8DDzzwwAMPPPjggw8++OBDDz300EMPffe7312zZs2aNWsefvjhhx9++JFHHnnkkUfWrl27du3a77F8n+VRjh8aHv23f/7YT02Prf/vj/1yA0EHn/r7H/zBH9B1v/e9761du3bNmjUPPvjg/fff/53vfCcZhw8AQLqTbBFUjrh6svhT02M/Nf3gj//lD1geffTR73//+2vXrn344Ycfeugh0EEAAFLGqsqiEFoH16xZAzqYifx/egT/GexfR0MAAAAASUVORK5CYII=" /> </div>
<div class="MsoNoSpacing" style="margin-left: .5in;">
<span style="mso-no-proof: yes;"></span></div>
<div class="MsoNoSpacing" style="margin-left: .5in; mso-list: l0 level1 lfo1; text-indent: -.25in;">
<span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;">4.<span style="font: 7.0pt "Times New Roman";">
</span></span></span>Go to Arguments tab.</div>
<div class="MsoNoSpacing" style="margin-left: .5in; mso-list: l0 level1 lfo1; text-indent: -.25in;">
<span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;">5.<span style="font: 7.0pt "Times New Roman";">
</span></span></span>In the VM arguments section, you can specify the
arguments that you want to pass to the JVM which is running Tomcat.</div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
So after removing proxy settings, it should have ideally
worked. But it didn’t. </div>
<div class="MsoNoSpacing">
Later I figured out that catalina.properties was also
having the proxy settings defined in it.</div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">http.proxyHost=proxyserver</span></b></div>
<b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">
</span></b><div class="MsoNoSpacing">
<b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">http.proxyPort=3128</span></b></div>
<b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">
</span></b><div class="MsoNoSpacing">
<b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">https.proxyHost= proxyserver</span></b></div>
<b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">
</span></b><div class="MsoNoSpacing">
<b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">https.proxyPort=3128</span></b></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
I did not want to comment them, as some other parts of
Jenkins were using it. I was using same tomcat for other applications that
needed the proxy settings. I needed some way to tell Jenkins to <b style="mso-bidi-font-weight: normal;">skip </b>going through the proxy server for
some hosts / domains. <b style="mso-bidi-font-weight: normal;">http.nonProxyHosts</b>
property to the rescue.</div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
Added below 2 lines to catalina.properties. Multiple
domains / hosts in http.nonProxyHosts property can be separated by |. People
use “,” as separator, but that is wrong.</div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">http.nonProxyHosts=localhost<span style="mso-bidi-font-weight: normal;">|</span>*.domain.com</span></b></div>
<b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">
</span></b><div class="MsoNoSpacing">
<b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">https.nonProxyHosts=localhost<span style="mso-bidi-font-weight: normal;">|</span>*.aon.com</span></b></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
With that my checkout started working. Hope that helps someone.</div>
</div>
Rizwan Shaikhhttp://www.blogger.com/profile/15921669282151473291noreply@blogger.com0tag:blogger.com,1999:blog-5642056215500231626.post-43121255354448920712017-05-20T03:33:00.001-07:002017-05-20T03:35:12.050-07:00<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<h1 align="center" style="text-align: center;">
Scheduling in Spring.</h1>
<h1 align="center" style="text-align: center;">
</h1>
<div class="MsoNoSpacing">
<b style="mso-bidi-font-weight: normal;">Pure annotation
based approach.</b></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
Let us use pure Java based configuration. No web.xml. No
Spring configuration xml.</div>
<div class="MsoNoSpacing">
I am going to use maven to create a project for me
eclipse.</div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
Here are my dependencies from pom.xml</div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: teal; font-family: "consolas"; font-size: 10.0pt;"><span style="mso-spacerun: yes;">
</span></span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">dependencies</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 2;"> </span></span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">dependency</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 3;"> </span></span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">groupId</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">org.springframework</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">groupId</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 3;"> </span></span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">artifactId</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">spring-<u>webmvc</u></span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">artifactId</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 3;"> </span></span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">version</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">4.3.7.RELEASE</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">version</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 2;"> </span></span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">dependency</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 2;"> </span></span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">dependency</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 3;"> </span></span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">groupId</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">javax.servlet</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">groupId</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 3;"> </span></span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">artifactId</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">javax.servlet-<u>api</u></span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">artifactId</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 3;"> </span></span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">version</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">3.1.0</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">version</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 2;"> </span></span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">dependency</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 2;"> </span></span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">dependency</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 3;"> </span></span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">groupId</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><u><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">junit</span></u><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">groupId</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 3;"> </span></span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">artifactId</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><u><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">junit</span></u><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">artifactId</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 3;"> </span></span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">version</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">3.8.1</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">version</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 3;"> </span></span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">scope</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">test</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">scope</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 2;"> </span></span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">dependency</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">></span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt; line-height: 115%;"><span style="mso-tab-count: 1;"> </span></span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt; line-height: 115%;"></</span><span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt; line-height: 115%;">dependencies</span><span style="color: teal; font-family: "arial" , "sans-serif"; font-size: 14.0pt; line-height: 115%;">></span></div>
<div class="MsoNormal">
Set the packaging as war</div>
<div class="MsoNormal">
<span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt; line-height: 115%;"><span style="mso-tab-count: 1;"> </span><packaging>war</packaging></span></div>
<div class="MsoNormal">
Since there is going to be no web.xml, we need to tell this
to maven, so that maven generates the war file for us regardless of the present
of deployment descriptor file. So set <failOnMissingWebXml> to false in
maven-war-plugin configuration.</div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-spacerun: yes;"> </span><build></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 2;"> </span><finalName>springscheduler</finalName></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 2;"> </span><plugins></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 3;"> </span><plugin></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 4;"> </span><groupId>org.apache.maven.plugins</groupId></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 4;"> </span><artifactId>maven-war-plugin</artifactId></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 4;"> </span><version>2.5</version></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 4;"> </span><configuration></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 5;"> </span><failOnMissingWebXml>false</failOnMissingWebXml></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 4;"> </span></configuration></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 3;"> </span></plugin></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 2;"> </span><span style="mso-spacerun: yes;"> </span></plugins></span></div>
<div class="MsoNormal">
<span style="color: #3f7f7f; font-family: "arial" , "sans-serif"; font-size: 14.0pt; line-height: 115%;"><span style="mso-tab-count: 1;"> </span></build></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #646464; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">@Configuration</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #646464; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">@ComponentScan</span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">(basePackages=</span><span style="color: #2a00ff; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">"com.rizwan.test"</span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">)</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #646464; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">@EnableScheduling</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">public</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> </span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">class</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">
AppConfig {</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">}</span></div>
<div class="MsoNoSpacing">
@EnableScheduling annotation enables Spring's scheduled
task execution capability, similar to functionality found in Spring's <task:*>
XML namespace. To be used on @Configuration classes<b style="mso-bidi-font-weight: normal;"><span style="color: red;">. Without @EnableScheduling @Schedule
annotation would have no effect. </span></b>It is the xml equivalent of <b style="mso-bidi-font-weight: normal;"><task:annotation-driven />. </b>Just
as without <task:annotationdriven /> scheduling wont happen, similarly without
@EnableScheduling scheduling won’t happen.</div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNoSpacing">
The Java configuration class decorated with
@Configuration annotation. This class eliminates the need for spring
configuration. </div>
<div class="MsoNoSpacing">
Taken straight from Javadoc of @Configuration annotation:
@Configuration Indicates that a class declares one or more @Bean methods and
may be processed by the Spring container to generate bean definitions and
service requests for those beans at runtime.</div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
The AppConfig class here is empty. Note the presence of
@ComponentScan annotation. It configures component scanning for use with
@Configuration. Thus for classes annotated with @Service, @Controller,
@Component, @RESTController, @Repository, etc, a bean will be created
automatically and registered in the spring application context.</div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">public</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> </span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">interface</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> Work {</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">public</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> </span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">void</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> work();</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNoSpacing">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">}</span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #646464; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">@Component</span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">(</span><span style="color: #2a00ff; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">"synch"</span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">)</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">public</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> </span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">class</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">
SynchWorker </span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">implements</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> Work {</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">public</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> </span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">void</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> work() {</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 2;"> </span>System.</span><b><i><span style="color: #0000c0; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">out</span></i></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">.println(</span><span style="color: #2a00ff; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">"Doing
some work"</span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">);</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 1;"> </span>}</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">}</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
Work interface and its implementation represents a Spring
component for doing any work.</div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #646464; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">@Service</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">public</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> </span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">interface</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">
RefreshTokenService {</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">public</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> </span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">void</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> refreshToken();</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNoSpacing">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">}</span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #646464; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">@Service</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">public</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> </span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">class</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">
RefreshTokenServiceImpl </span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">implements</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">
RefreshTokenService {</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 1;"> </span></span><span style="color: #646464; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">@Autowired</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 1;"> </span></span><span style="color: #646464; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">@Qualifier</span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">(</span><span style="color: #2a00ff; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">"synch"</span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">)</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">private</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> <span style="background: silver; mso-highlight: silver;">SynchWorker</span> </span><span style="color: #0000c0; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">worker</span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">;</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">public</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> <span style="background: silver; mso-highlight: silver;">SynchWorker</span>
getWorker() {</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 2;"> </span></span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">return</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> </span><span style="color: #0000c0; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">worker</span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">;</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 1;"> </span>}</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">public</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> </span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">void</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> setWorker(<span style="background: silver; mso-highlight: silver;">SynchWorker</span>
</span><span style="color: #6a3e3e; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">worker</span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">) {</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 2;"> </span></span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">this</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">.</span><span style="color: #0000c0; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">worker</span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> = </span><span style="color: #6a3e3e; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">worker</span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">;</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 1;"> </span>}</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 1;"> </span></span><span style="color: #3f7f5f; font-family: "arial" , "sans-serif"; font-size: 12.0pt;">/*</span><span style="font-family: "arial" , "sans-serif"; font-size: 12.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f5f; font-family: "arial" , "sans-serif"; font-size: 12.0pt;"><span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;"> </span>* fixedDelay -
Execute the annotated method with a fixed period in</span><span style="font-family: "arial" , "sans-serif"; font-size: 12.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f5f; font-family: "arial" , "sans-serif"; font-size: 12.0pt;"><span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;"> </span>* milliseconds
between the end of the last invocation and the start of the</span><span style="font-family: "arial" , "sans-serif"; font-size: 12.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f5f; font-family: "arial" , "sans-serif"; font-size: 12.0pt;"><span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;"> </span>* next. </span><span style="font-family: "arial" , "sans-serif"; font-size: 12.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f5f; font-family: "arial" , "sans-serif"; font-size: 12.0pt;"><span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;"> </span>* </span><span style="font-family: "arial" , "sans-serif"; font-size: 12.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f5f; font-family: "arial" , "sans-serif"; font-size: 12.0pt;"><span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;"> </span>* fixedRate -
Execute the annotated method with a fixed period in</span><span style="font-family: "arial" , "sans-serif"; font-size: 12.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f5f; font-family: "arial" , "sans-serif"; font-size: 12.0pt;"><span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;"> </span>* milliseconds
between invocations. </span><span style="font-family: "arial" , "sans-serif"; font-size: 12.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f5f; font-family: "arial" , "sans-serif"; font-size: 12.0pt;"><span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;"> </span>* </span><span style="font-family: "arial" , "sans-serif"; font-size: 12.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f5f; font-family: "arial" , "sans-serif"; font-size: 12.0pt;"><span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;"> </span>* initialDelay -
Number of milliseconds</span><span style="font-family: "arial" , "sans-serif"; font-size: 12.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f5f; font-family: "arial" , "sans-serif"; font-size: 12.0pt;"><span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;"> </span>* to delay before
the first execution of a fixedRate() or fixedDelay()</span><span style="font-family: "arial" , "sans-serif"; font-size: 12.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f5f; font-family: "arial" , "sans-serif"; font-size: 12.0pt;"><span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;"> </span>* task.</span><span style="font-family: "arial" , "sans-serif"; font-size: 12.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #3f7f5f; font-family: "arial" , "sans-serif"; font-size: 12.0pt;"><span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;"> </span>*/</span><span style="font-family: "arial" , "sans-serif"; font-size: 12.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 1;"> </span></span><span style="color: #646464; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">@Scheduled</span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">(fixedDelay = 1000, initialDelay = 1000)</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">public</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> </span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">void</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> refreshToken() {</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 2;"> </span></span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 2;"> </span></span><span style="color: #0000c0; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">worker</span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">.work();</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 1;"> </span>}</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNoSpacing">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">}</span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
Note that method decorated with @Scheduled annotation
must return void and must not accept any arguments.</div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
Here the scheduling is happening synchronously. This
means unless the previous task is completed, next run of the task won’t start.
It will simply wait for the previous task to complete.</div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
In the asynchronous scheduling next task will start
irrespective of whether previous task has finished. Next task will be typically
started in a new thread.</div>
<div class="MsoNoSpacing">
For asynchronous scheduling, use the <b style="mso-bidi-font-weight: normal;">@Async</b> annotation.</div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: #646464; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-spacerun: yes;"> </span>@Scheduled</span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">(fixedDelay
= 1000, initialDelay = 1000)</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-spacerun: yes;"> </span>@Async</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">public</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> </span><b><span style="color: #7f0055; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">void</span></b><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"> refreshToken() {</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 2;"> </span></span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 2;"> </span></span><span style="color: #0000c0; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">worker</span><span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;">.work();</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: black; font-family: "arial" , "sans-serif"; font-size: 14.0pt;"><span style="mso-tab-count: 1;"> </span>}</span><span style="font-family: "arial" , "sans-serif"; font-size: 14.0pt;"></span></div>
<div class="MsoNoSpacing">
@Scheduled and @Async annotations can be applied on both
refreshToken method of Service class as well as work method of the Worker
component.</div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<br /></div>
</div>
Rizwan Shaikhhttp://www.blogger.com/profile/15921669282151473291noreply@blogger.com0tag:blogger.com,1999:blog-5642056215500231626.post-7042834931690303002017-05-15T05:19:00.001-07:002017-05-15T05:22:51.378-07:00Using @Value annotation in Spring<div dir="ltr" style="text-align: left;" trbidi="on">
Hi guys today in one of the projects that I working on, I had to inject a value into one of the bean properties.<br />
So I decided to use @Value annotation. Sharing the experience I have had.<br />
<br />
I am using Spring 4.3.7.RELEASE. Here are the dependencies in my pom.xml<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;"> <dependencies><br /> <dependency><br /> <groupId>org.springframework</groupId><br /> <artifactId>spring-context</artifactId><br /> <version>4.3.7.RELEASE</version><br /> </dependency><br /> <dependency><br /> <groupId>junit</groupId><br /> <artifactId>junit</artifactId><br /> <version>3.8.1</version><br /> <scope>test</scope><br /> </dependency><br /> </dependencies></span><br />
<br />
<span style="font-family: inherit;">spring-context depends up spring-beans, spring-core, spring-aop, spring-expression and commons-logging. So you do not have to worry about adding those. They will be automatically be added to your Maven dependencies in eclipse.</span><br />
<span style="font-family: inherit;">Go to the Dependencies Hierarchy tab, you will be able to clearly see the hierarchy.</span><br />
<span style="font-family: inherit;"><img alt="" src="data:image/png;base64,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" /> </span><br />
<span style="font-family: inherit;">Here is the class defining Java c<span style="font-family: inherit;">onfiguration.</span></span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">@Configuration<br />@PropertySource("classpath:config/config.properties")<br />public class AppConfig {<br /><br /> @Bean<br /> public Person getPerson(){<br /> <br /> return new Person();<br /> } </span><br />
<span style="font-family: "courier new" , "courier" , monospace;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<br />
<div style="text-align: left;">
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><span style="font-family: inherit;"><span style="font-family: "times" , "times new roman" , serif;">@Configuration annotation is necessary here to indicate that this class will defined java configuration</span>.</span></span></div>
<span style="font-family: inherit;"><span style="font-family: inherit;">@PropertySource provides a convenient and declarative mechanism for adding a <a href="https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/env/PropertySource.html" rel="nofollow" target="_blank">PropertySource</a> to Spring's <a href="http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/env/Environment.html" rel="nofollow" target="_blank">Environment</a>. To be used in conjunction with @Configuration.</span></span><br />
<br />
<span style="font-family: inherit;"><span style="font-family: inherit;">Have created config folder in resources folder of my Maven project and added a file called config.properties to it.</span></span><br />
<br />
<span style="font-family: inherit;"><span style="font-family: inherit;">Config.properties</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace;">person.name=Rizwan</span><br />
<br />
<span style="font-family: inherit;"><span style="font-family: inherit;">Here is the Person bean</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace;">public class Person {<br /><br /> @Value("${person.name}")<br /> private String name;<br /> private int age;</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">//..getter and setters</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">}</span><br />
<span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: "times" , "times new roman" , serif;"> The ${propertyname} syntax tells the Spring container to search for the specified propertyname in Spring's property sources. </span></span></span><br />
<br />
Here is the complete project structure.<br />
<img alt="" src="data:image/png;base64,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" /><br />
<br />
<span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: "times" , "times new roman" , serif;">Thats it, test it.</span></span></span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">public class App <br />{<br /> public static void main( String[] args )<br /> {<br /> ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);<br /> Person person = context.getBean(Person.class);<br /> System.out.println("Hello " + person.getName());<br /> ((AnnotationConfigApplicationContext)context).close();<br /> }<br />}</span><br />
<br />
<span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: "times" , "times new roman" , serif;">Output:</span></span></span><br />
<span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: "times" , "times new roman" , serif;"><span style="font-family: "courier new" , "courier" , monospace;">Hello Rizwan</span></span></span></span><br />
<br />
<span style="font-family: inherit;"><span style="font-family: inherit;"><span style="font-family: "times" , "times new roman" , serif;"><span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "times" , "times new roman" , serif;">In my next post, will try to add few more tips and tricks about @Value annotation, like working with default values and reading from System environment variables.</span> </span><br /> </span></span></span></div>
Rizwan Shaikhhttp://www.blogger.com/profile/15921669282151473291noreply@blogger.com0tag:blogger.com,1999:blog-5642056215500231626.post-88768964302330002162017-04-04T01:50:00.000-07:002017-04-04T01:57:35.097-07:00<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
"Error assembling WAR. webxml attribute is required" </h2>
<br />
Today, when I was trying to generate a WAR file with maven, I got an error saying "Error assembling WAR. webxml attribute is required"<br />
<br />
<br />
<h4 style="text-align: left;">
Complete error message:</h4>
<span style="color: #cc0000;">Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project verizon-dnm-api-consumer: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1]</span><br />
<br />
<span style="color: #cc0000;"><span style="color: black;">This has something to do with the <b>failOnMissingWebXml </b>property of the maven WAR plugin.</span></span><br />
<span style="color: #cc0000;"><span style="color: black;">Servlet 3.0 onwards we need not have a web.xml.</span></span><br />
<span style="color: #cc0000;"><span style="color: black;">When we specify the packing of the application as war (<span style="background-color: #f3f3f3;"><packaging>war</packaging></span>) , maven WAR plugin comes in the picture to generate a WAR file for us even if we have not explicitly configured it. The default value of </span></span><span style="color: #cc0000;"><span style="color: black;"><b>failOnMissingWebXml </b>is false as specified <span style="color: blue;"><a href="http://maven.apache.org/plugins/maven-war-plugin/war-mojo.html#failOnMissingWebXml" rel="nofollow" target="_blank">here</a></span>. But still maven starts expecting a web.xml since we have mentioned the packaging as war.</span></span><br />
<br />
<br />
<h4 style="text-align: left;">
<span style="color: #cc0000;"><span style="color: black;"><b>Solution</b>: set the property </span></span><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><b>failOnMissingWebXml </b>to <b>false.</b> There are two ways to achieve this.</span></span></span></span></h4>
<br />
<ol style="text-align: left;">
</ol>
<span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;">1. Set the property </span></span></span></span><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><b>failOnMissingWebXml </b>to<b> false</b> in the property section of your pom file.</span></span></span></span><br />
<span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"> <span style="background-color: #f3f3f3;"> <properties></span></span></span></span></span><br />
<span style="background-color: #f3f3f3;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"> .... </span></span></span></span></span><br />
<span style="background-color: #f3f3f3;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"> <</span></span></span></span><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;">failOnMissingWebXml </span></span></span></span>>false</</span></span></span></span><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;">failOnMissingWebXml></span></span></span></span></span></span></span></span></span><br />
<span style="background-color: #f3f3f3;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"> ....</span></span></span></span></span></span></span></span></span><br />
<span style="background-color: #f3f3f3;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"> </</span></span></span></span></span></span></span></span><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;">properties></span></span></span></span></span><br />
<span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;">2. Configure the maven WAR plugin with </span></span></span></span><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;">failOnMissingWebXml set to false.</span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"> <span style="background-color: #f3f3f3;"><build></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="background-color: #f3f3f3;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"> <plugins></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="background-color: #f3f3f3;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"> ...</span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="background-color: #f3f3f3;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"> <plugin><br /> <groupId>org.apache.maven.plugins</groupId><br /> <artifactId>maven-war-plugin</artifactId><br /> <version>3.0.0</version><br /> <configuration><br /> <failOnMissingWebXml>false</failOnMissingWebXml><br /> </configuration><br /> </plugin> </span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="background-color: #f3f3f3;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"> </span></span></span></span></span></span></span></span></span></span></span></span><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><plugins></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="background-color: #f3f3f3;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"> </span></span></span></span></span></span></span></span></span></span></span></span><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"></build></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<br />
<span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;">Apart from these two solutions there exists another tweak to get rid of this error. You could add an empty web.xml within WEB-INF. But this is not a clean solution. A file should not exist in your project just because a build tool needs it. Having an empty file will always create doubts on the purpose of this file in anyone new to the project or maven world. </span></span></span></span></span></span></span></span></span></span></span></span><br />
<br />
<span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;">It is also possible that you are getting this error because web.xml is not added within proper directory layout.</span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;"><span style="color: #cc0000;"><span style="color: black;">Refer <a href="https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html" rel="nofollow" target="_blank">this </a>link to learn more about standard directory layout for maven.</span></span></span></span></span></span></span></span></span></span></span></span><br />
<br />
<ol style="text-align: left;">
</ol>
</div>
Rizwan Shaikhhttp://www.blogger.com/profile/15921669282151473291noreply@blogger.com0tag:blogger.com,1999:blog-5642056215500231626.post-13243733661741743042015-02-28T22:40:00.003-08:002015-02-28T22:40:42.703-08:00<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-size: large;"><b>JavaScript tutorial to add and delete elements from an array.</b></span><br />
<br />
<b>push() method:</b> Used to insert an element at the end of the array. Can used for inserting multiple elements at the end of the array by supplying multiple arguments. Using the push method increases the array length by number of arguments to push method.<br />
<br />
<b>pop() method:</b> Works along with pop method. Allows us to remove the last element from the array. Using the pop method decreases the array length by 1. pop() method also returns the element removed from the array. pop() and push() method together make the array behave like a stack(Element that is last inserted into the stack comes out first - Last In First Out - LIFO)<br />
<br />
<b>unshift() method:</b> Used to add an element at the beginning of the array. Can used for inserting multiple elements at the start of the array by supplying multiple arguments. Using the unshift method increases the array length by number of arguments to unshift method. Its shifts the existing elements up the array making their index number of times greater than their current index as the number of arguments passed.<br />
<br />
<b>shift() method(): </b>Its the opposite of unshift method. Used to remove an element at the beginning of the array. Always removes a single element. Arguments passed to the shift method doesn't impact the its result. It reduces the array length by 1. It also shifts the current element up the array making their index 1 lesser than their current index.<br />
<br />
<b>delete operator: </b>Removes the element present at the specified index just as we can delete an object property. The element at the index becomes undefined. But its subtly different. Array behaves as if the index never existed. Using delete operator doesn't affect array length as it remains same.<br />
<br />
You can run find the demo of the above mentioned operator and methods in the code snippet below.<br />
<br />
Save the below code in an file with extesnion .html and open that file in any browser.<br />
To run it just <b>Press F12 </b>in your browser window. <b>Go to console tab</b> and observe the output. <b>Press F5 </b>to refresh the page and the console.<br />
(Make sure the console is enabled)<br />
<br />
<html><br /><br /> <script type="text/javascript"><br /><br /> var array = [1,2,3,4,5];<br /> /*******************************************/<br /> var output = "";<br /> for(e in array){<br /> output += array[e] + ' ';<br /> }<br /> output += '\n';<br /> console.log('Array: ' + output);<br /> /*******************************************/<br /> console.log('pushing element 6');<br /> array.push(6);<br /> /*******************************************/<br /> var output = "";<br /> for(e in array){<br /> output += array[e] + ' ';<br /> }<br /> console.log('Array: ' + output);<br /> /*******************************************/<br /> console.log('pushing element 7,8,9,10');<br /> array.push(7,8,9,10);<br /> /*******************************************/<br /> var output = "";<br /> for(e in array){<br /> output += array[e] + ' ';<br /> }<br /> console.log('Array: ' + output);<br /> /*******************************************/<br /> console.log('popping last element');<br /> var poppedElement = array.pop();<br /> /*******************************************/<br /> var output = "";<br /> for(e in array){<br /> output += array[e] + ' ';<br /> }<br /> console.log('Array: ' + output);<br /> /*******************************************/<br /> console.log('Element popped: ' + poppedElement);<br /> var poppedElement = array.pop(6,7);<br /> /*******************************************/<br /> var output = "";<br /> for(e in array){<br /> output += array[e] + ' ';<br /> }<br /> console.log('Array: ' + output);<br /> /*******************************************/<br /> console.log('Element popped: ' + poppedElement);<br /> console.log('Pop method always removes last element only and reduces aray length');<br /> console.log('Argument passed to pop method has doesn\'t affect output');<br /> console.log('Array length: ' + array.length);<br /> console.log('adding 0 to the beginning of the array');<br /> array.unshift(0);<br /> /*******************************************/<br /> var output = "";<br /> for(e in array){<br /> output += array[e] + ' ';<br /> }<br /> console.log('Array: ' + output);<br /> /*******************************************/<br /> console.log('Adding -3,-2,-1 to the beginning of the array');<br /> array.unshift(-3,-2,-1);<br /> /*******************************************/<br /> var output = "";<br /> for(e in array){<br /> output += array[e] + ' ';<br /> }<br /> console.log('Array: ' + output);<br /> /*******************************************/<br /> console.log('Using shift method affects array length');<br /> console.log('Array length: ' + array.length);<br /> console.log('Removing element from the beginning');<br /> array.shift(3);<br /> /*******************************************/<br /> var output = "";<br /> for(e in array){<br /> output += array[e] + ' ';<br /> }<br /> console.log('Array: ' + output);<br /> /*******************************************/<br /> console.log('Array length: ' + array.length);<br /> console.log('Shift method always removes first element only and reduces aray length');<br /> console.log('Argument passed to shift method doesn\'t affect output');<br /> console.log('Using delete method to remove an array element');<br /> delete array[0];<br /> /*******************************************/<br /> var output = "";<br /> for(e in array){<br /> output += array[e] + ' ';<br /> }<br /> console.log('Array: ' + output);<br /> /*******************************************/<br /> console.log('Array length: ' + array.length);<br /> console.log('Array length is same even after deleting element at index 0');<br /> console.log('So what is present at 0th index: ' + array[0]);<br /> console.log('Does this array even have an index of 0: ' + (0 in array));<br /> console.log('Using the delete operator makes the array sparse');<br /><br /> </script><br /><br /></html><br />
<br /></div>
Rizwan Shaikhhttp://www.blogger.com/profile/15921669282151473291noreply@blogger.com0tag:blogger.com,1999:blog-5642056215500231626.post-30088652198781056422014-04-06T08:06:00.002-07:002014-04-06T08:06:42.448-07:00Exception in thread "main" java.lang.UnsupportedOperationException: The user must supply a JDBC connection<div dir="ltr" style="text-align: left;" trbidi="on">
I got this error when I tried to persist a row in the student table. I was using SQL Server 2008 R2 and Hibernate.<br />
<span style="color: red;">Exception in thread "main" java.lang.UnsupportedOperationException: The user must supply a JDBC connection</span><br />
My hibernate.cfg.xml file is as follows:<br />
<?xml version='1.0' encoding='utf-8'?><br />
<!DOCTYPE hibernate-configuration PUBLIC<br />
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"<br />
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><br />
<hibernate-configuration><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><session-factory><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> <br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> <property name="<span style="color: red;">url</span>">jdbc:sqlserver://MYSERVER:1433;databaseName=MYDB</property><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="<span style="color: red;">username</span>">sa</property><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="<span style="color: red;">password</span>">MYPASSWORD</property><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="<span style="color: red;">driverClassName</span>">com.microsoft.sqlserver.jdbc.SQLServerDriver</property><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="hibernate.show_sql">true</property><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="hibernate.generate_statictics">true</property><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="hibernate.current_session_context_class">thread</property><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="hibernate.hbm2ddl.auto">create</property><br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><mapping class="Student" /><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></session-factory><br />
</hibernate-configuration><br />
<br />
The root cause of this error is the incorrectly specified property names. Actually I copied the property names from the bean which was used to initialize the data source in spring from some other project. And out of my negligence forgot to check the property names.<br />
<br />
<span style="font-size: x-large;">Finally I landed with the correct configuration:</span><br />
<property name="<span style="color: red;">hibernate.connection.url</span>">jdbc:sqlserver://AXIOM:1433;databaseName=S3H4</property><br />
<property name="<span style="color: red;">hibernate.connection.username</span>">sa</property><br />
<property name="<span style="color: red;">hibernate.connection.password</span>">123</property><br />
<property name="<span style="color: red;">hibernate.connection.driverClassName</span>">com.microsoft.sqlserver.jdbc.SQLServerDriver</property><br />
<br />
<br />
Note that its also OK if you give just connection.url and so on instead of hibernate.connection.url<br />
<br /></div>
Rizwan Shaikhhttp://www.blogger.com/profile/15921669282151473291noreply@blogger.com0tag:blogger.com,1999:blog-5642056215500231626.post-66099931472524941672014-04-05T02:17:00.000-07:002014-04-05T02:19:56.262-07:00Cannot insert the value NULL into column 'stateNo', table 'S3H4.dbo.State'; column does not allow nulls. INSERT fails.<div dir="ltr" style="text-align: left;" trbidi="on">
I got the following error when trying to persist the State entity using the code - session.persist(state);<br />
<br />
<span style="color: red;">Apr 05, 2014 2:25:50 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions</span><br />
<span style="color: red;">ERROR: Cannot insert the value NULL into column 'stateNo', table 'S3H4.dbo.State'; column does not allow nulls. INSERT fails.</span><br />
<span style="color: red;"><br /></span>
I was auto-generating the primary key using the GeneratedValue annotations given below.<br />
@Entity<br />
@Table(name="STATE")<br />
public class State {<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>@Id<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>@GeneratedValue<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>private int stateNo;<br />
//other properties and their getters and setters.<br />
}<br />
<br />
This strategy of auto-generating primary keys worked fine as long as I was using Oracle 11g. As soon as I moved to SQL Server 2008 R2. I got the error message mentioned in red above.<br />
<br />
<span style="font-size: x-large;">Solution</span><br />
import javax.persistence.Column;<br />
import javax.persistence.Entity;<br />
import javax.persistence.GeneratedValue;<br />
import javax.persistence.Id;<br />
import javax.persistence.Table;<br />
import org.hibernate.annotations.GenericGenerator;<br />
@Entity<br />
@Table(name="STATE")<br />
public class State {<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>@Id<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>@GeneratedValue(generator="stateNoGenerator")<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>@GenericGenerator(strategy="increment",name="stateNoGenerator")<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>@Column(name="STATENO",length=10)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>private int stateNo;<br />
//other properties and their getters and setters.<br />
}<br />
<div>
<br /></div>
<div>
Adding the GenericGenerator annotation did the trick. Do note that GenericGenerator is present within org.hibernate.annotations package and not within javax.persistence package as one would normally expect.</div>
<div>
Add the generator attribute in the GeneratedValue annotation specifying the name of the GenericGenerator.</div>
</div>
Rizwan Shaikhhttp://www.blogger.com/profile/15921669282151473291noreply@blogger.com0Ontario, Canada43.632099415557754 -79.359741210937543.264859415557751 -80.0051882109375 43.999339415557756 -78.7142942109375tag:blogger.com,1999:blog-5642056215500231626.post-26125330999747400952014-04-05T00:05:00.004-07:002014-04-05T02:19:05.901-07:00The content of element type "session-factory" must match "(property*,mapping*,(class-cache|collection-cache)*,event*,listener*)".<div dir="ltr" style="text-align: left;" trbidi="on">
I got this exception<br />
<span style="color: red;">The content of element type "session-factory" must match "(property*,mapping*,(class-cache|collection-cache)*,event*,listener*)".</span><br />
<span style="color: red;"><br /></span>
This is my hibernate.cfg.xml file<br />
<?xml version='1.0' encoding='utf-8'?><br />
<!DOCTYPE hibernate-configuration PUBLIC<br />
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"<br />
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><br />
<br />
<hibernate-configuration><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><session-factory><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> <br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> <mapping class="Student" /><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="url">jdbc:sqlserver://MYSERVER:1433;databaseName=MYDB</property><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="username">sa</property><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="password">PASSWORD</property><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="driverClassName">com.microsoft.sqlserver.jdbc.SQLServerDriver</property><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="hibernate.show_sql">true</property><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="hibernate.generate_statictics">true</property><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="hibernate.current_session_context_class">thread</property><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="hibernate.hbm2ddl.auto">none</property><br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></session-factory><br />
</hibernate-configuration><br />
<br />
This is the stack trace:<br />
<span style="color: red;">log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).</span><br />
<span style="color: red;">log4j:WARN Please initialize the log4j system properly.</span><br />
<span style="color: red;">Exception in thread "main" org.hibernate.MappingException: invalid configuration</span><br />
<span style="color: red;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1484)</span><br />
<span style="color: red;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.hibernate.cfg.Configuration.configure(Configuration.java:1425)</span><br />
<span style="color: red;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.hibernate.cfg.Configuration.configure(Configuration.java:1411)</span><br />
<span style="color: red;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at SQLSERVERTEST.main(SQLSERVERTEST.java:23)</span><br />
<span style="color: red;">Caused by: org.xml.sax.SAXParseException; lineNumber: 32; columnNumber: 20; The content of element type "session-factory" must match "(property*,mapping*,(class-cache|collection-cache)*,event*,listener*)".</span><br />
<span style="color: red;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)</span><br />
<span style="color: red;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)</span><br />
<span style="color: red;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)</span><br />
<span style="color: red;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)</span><br />
<span style="color: red;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(Unknown Source)</span><br />
<span style="color: red;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(Unknown Source)</span><br />
<span style="color: red;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)</span><br />
<span style="color: red;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)</span><br />
<span style="color: red;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)</span><br />
<span style="color: red;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)</span><br />
<span style="color: red;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)</span><br />
<span style="color: red;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)</span><br />
<span style="color: red;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)</span><br />
<span style="color: red;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.dom4j.io.SAXReader.read(SAXReader.java:465)</span><br />
<span style="color: red;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1481)</span><br />
<span style="color: red;"><span class="Apple-tab-span" style="white-space: pre;"> </span>... 3 more</span><br />
<div>
<br /></div>
<div>
<span style="font-size: x-large;">Solution</span></div>
<div>
Rearrange the contents of the hibernate configuration file and place the mapping element after all the property elements.</div>
<div>
Examination of the error message suggests that within session-factory element first only the property element can appear followed by mapping, class-cache or collection-cache, even and finally listeners. If this ordering is not maintained the above exception is thrown.</div>
<div>
<span style="font-size: large;">The correct hibernate.cfg.xml:</span></div>
<div>
<span style="font-size: large;"><br /></span></div>
<div>
<div>
<?xml version='1.0' encoding='utf-8'?></div>
<div>
<!DOCTYPE hibernate-configuration PUBLIC</div>
<div>
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"</div>
<div>
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"></div>
<div>
<hibernate-configuration></div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span><session-factory></div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span> </div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span> <property name="url">jdbc:sqlserver://MYSERVER:1433;databaseName=MYDB</property></div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="username">sa</property></div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="password">PASSWORD</property></div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="driverClassName">com.microsoft.sqlserver.jdbc.SQLServerDriver</property></div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span></div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property></div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="hibernate.show_sql">true</property></div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property></div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="hibernate.generate_statictics">true</property></div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property></div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="hibernate.current_session_context_class">thread</property></div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span><property name="hibernate.hbm2ddl.auto">none</property></div>
<div>
<br /></div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span></div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span><mapping class="Student" /></div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span></session-factory></div>
<div>
</hibernate-configuration></div>
</div>
</div>
Rizwan Shaikhhttp://www.blogger.com/profile/15921669282151473291noreply@blogger.com0tag:blogger.com,1999:blog-5642056215500231626.post-70603750023177444792014-02-08T22:27:00.003-08:002014-02-08T23:07:59.898-08:00<div dir="ltr" style="text-align: left;" trbidi="on">
Program to read code from a file and print it to the console ignoring the comments in it.<br />
<br />
This question was asked to me in Java Interview in Rolta India Pvt. Ltd. I want to share the logic and code with you.<br />
<br />
The solution is simple.<br />
<br />
<ul style="text-align: left;">
<li>Create a Java Application (say IO)</li>
<li>Create a file with name code.java in your application folder. Place it in the root folder of your application. Your folder structure will look like this. To find the location of root folder of your application right click your project in Eclipse, Select Properties, Select Resources from the left pane of the windows that opens. Check the value of Location property that is where your application root is.</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyUdU8af4cVX6_GPV1COg2hvKgLqA1YTnaztALR7h87IhSYTq_H-7D-oW_0egIRfaheWm67rHNp0Iej__EVhL0RkKzU9pQEBfSso3bOdOUEwfwN3jH4cVwy3yfLMt89cb1UZlP965d4l5H/s1600/ZZZ.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyUdU8af4cVX6_GPV1COg2hvKgLqA1YTnaztALR7h87IhSYTq_H-7D-oW_0egIRfaheWm67rHNp0Iej__EVhL0RkKzU9pQEBfSso3bOdOUEwfwN3jH4cVwy3yfLMt89cb1UZlP965d4l5H/s1600/ZZZ.png" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br />
<br />
<br />
<br />
<br /></div>
<div>
<ul style="text-align: left;">
<li>Create a class (say Main)</li>
<li>Copy paste the following code in it.</li>
</ul>
</div>
<pre style="background-color: #f0f0f0; background-position: initial initial; background-repeat: initial initial; border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;">
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
File file = new File("code.java");
FileReader fileReader = new FileReader(file);
// Print the file or count the number of characters
int data = fileReader.read();
int count = 0;
while (data != -1) {
count++;
// System.out.print((char)data);
data = fileReader.read();
}
char[] cbuf = new char[count];
fileReader.close();
// initialize fileReader to start of file
fileReader = new FileReader(file);
fileReader.read(cbuf);
for (int i = 0; i < count; i++) {
if (cbuf[i] == '/') {
if (cbuf[i + 1] == '*') {// check for multiline comments
i += 2;
while (!(cbuf[i] == '*' && cbuf[i + 1] == '/')) {
i++; // ignore
}
i += 2;// ignore */
}
if (cbuf[i + 1] == '/') {// check for single line comments
i += 2;
while (cbuf[i] != '\n') {
i++;
}// while
}
}// check for multiline comments
// print
System.out.print(cbuf[i]);
}// for
fileReader.close();
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
} catch (IOException e) {
System.out.println(e.getMessage());
}
/*
* some
* multiline comments
*/
}
}
</code></pre>
<br />
<ul>
<li>Copy the same code in code.java file in root folder of your application. Save it.</li>
<li>This program will print the code in code.java while ignoring the comments.</li>
<li>Run the program. </li>
<li>In our class we created a file object. Then wrapped a FileReader around it. Note that as we are working with characters we have used FileReader.</li>
<li>We need to create a char array into which we can read the contents of the file. But in java to initialize an array you need to know the size.</li>
<li>So we have used a while loop to count the number of characters in the file. Then we can use that info to initialize our char array.</li>
<li>The public int read() method of FileReader class returns -1 if end of file is reached else returns the data at current pointer position and advances the data to next character. After executing the below loop our pointer will be at the end of file. </li>
</ul>
<pre style="background-color: #f0f0f0; background-position: initial initial; background-repeat: initial initial; border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;">
int count = 0;
while (data != -1) {
count++;
// System.out.print((char)data);
data = fileReader.read();
}
</code></pre>
<br />
<ul style="text-align: left;">
<li>To make things simple we can also use the public int length() method of the File class to give us the number of characters in it.</li>
</ul>
<div>
<b> int count = file.length();</b></div>
<ul style="text-align: left;">
<li>We used the public int read(char[] cbuf) method to read the contents of the file into that char array cbuf. In the while loop above we traversed the entire file from start to end to count the number of characters. So we have re-initialized it to start of the file.</li>
<li>The for loop contains the logic to skip multiline and single line comments.</li>
<li>If encounter '/' we check if the next character is '*' ,if it is then we go on ignoring the file until we find '*' immediately followed by '/'.</li>
<li>If we encounter '/' we check if the next character is '/', if it is then we go in ignoring the entire line.</li>
<li>If find neither a single line nor a multiline comment we print the chaaracters of the array 1 by 1.</li>
</ul>
<div>
Thats it. Hope this helps. </div>
<div>
Signing off!!!!</div>
<div>
Happy Learning :)</div>
</div>
Rizwan Shaikhhttp://www.blogger.com/profile/15921669282151473291noreply@blogger.com0tag:blogger.com,1999:blog-5642056215500231626.post-66381667773305174952014-01-12T02:35:00.002-08:002014-02-02T00:25:02.750-08:00<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="MsoNoSpacing">
<span style="font-family: "Tahoma","sans-serif";">Using
Annotations in Hibernate.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: "Tahoma","sans-serif";">In order
to be able to use the code provided in the tutorial you must have Oracle 11g
installed on your local machine or at least have access to it somehow </span><span style="font-family: Wingdings; mso-ascii-font-family: Tahoma; mso-bidi-font-family: Tahoma; mso-char-type: symbol; mso-hansi-font-family: Tahoma; mso-symbol-font-family: Wingdings;">J</span><span style="font-family: "Tahoma","sans-serif";">. You must modify the properties <o:p></o:p></span></div>
<div class="MsoNoSpacing">
<i><span style="color: #2a00ff; font-family: Consolas; font-size: 10.0pt;">connection.url, connection.username, connection.password </span></i><span style="font-family: "Tahoma","sans-serif";">shown in step 3 to suit your database
settings.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: "Tahoma","sans-serif";">This will be
the final folder structure for your application.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw2DIt017Y4aMm_Rjos5YURvgWkkmWuzVRrtkVVEvh1Z7PMRskBeikvYFG42o1PT2y9IW4V8R17O2Oaqo1mxHVqCQhlX2aJuF4P4yXHBenWaYCYNi9xyZJW2X2z-bHSdf-FgiiJiAeucNU/s1600/Untitled.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw2DIt017Y4aMm_Rjos5YURvgWkkmWuzVRrtkVVEvh1Z7PMRskBeikvYFG42o1PT2y9IW4V8R17O2Oaqo1mxHVqCQhlX2aJuF4P4yXHBenWaYCYNi9xyZJW2X2z-bHSdf-FgiiJiAeucNU/s1600/Untitled.png" /></a></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: "Tahoma","sans-serif";">Step 1:
Create a Java Application using eclipse. <o:p></o:p></span></div>
<div class="MsoNoSpacing">
<span style="font-family: "Tahoma","sans-serif";">Click New,
Java Project.<o:p></o:p></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoMRDs6yP0b_WPsrFu3Qt9-tLVy-hPuH9f1QWsGmZyAWG-5ql3zmhoXOcZwSTCDonEzRCCj6AYoxSv0oyYNEVMwtNxJ3v-_YajJE6gZc6f2vARuaL1Q9tkBThAVh3pU9R1Nj1Ssmgq4PCw/s1600/Untitled.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoMRDs6yP0b_WPsrFu3Qt9-tLVy-hPuH9f1QWsGmZyAWG-5ql3zmhoXOcZwSTCDonEzRCCj6AYoxSv0oyYNEVMwtNxJ3v-_YajJE6gZc6f2vARuaL1Q9tkBThAVh3pU9R1Nj1Ssmgq4PCw/s1600/Untitled.png" height="465" width="640" /></a></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: "Tahoma","sans-serif";">Give it a
suitable name say “HibernateAnnotationPractise”. Click finish.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVpeA0Qcbw6-zskyYe9N0IHUWtV1xT7FDhvlb57i7n-gx7Hm6auL5EUxe9oYLnOcaM10esVKEbb7wSnoVkoT7UgLweE7r_kETslWNfi722jQKvm0BqtyZcF9oCWWlYfQipXZEwbMVARDru/s1600/Untitled.png" imageanchor="1"><span style="color: blue; font-family: "Tahoma","sans-serif"; mso-no-proof: yes; text-decoration: none; text-underline: none;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_1" o:spid="_x0000_i1027" type="#_x0000_t75" alt="Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVpeA0Qcbw6-zskyYe9N0IHUWtV1xT7FDhvlb57i7n-gx7Hm6auL5EUxe9oYLnOcaM10esVKEbb7wSnoVkoT7UgLweE7r_kETslWNfi722jQKvm0BqtyZcF9oCWWlYfQipXZEwbMVARDru/s1600/Untitled.png"
href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVpeA0Qcbw6-zskyYe9N0IHUWtV1xT7FDhvlb57i7n-gx7Hm6auL5EUxe9oYLnOcaM10esVKEbb7wSnoVkoT7UgLweE7r_kETslWNfi722jQKvm0BqtyZcF9oCWWlYfQipXZEwbMVARDru/s1600/Untitled.png"
style='width:384.75pt;height:517.5pt;visibility:visible;mso-wrap-style:square'
o:button="t">
<v:imagedata src="file:///C:\Users\Rizwan\AppData\Local\Temp\msohtmlclip1\01\clip_image004.png"
o:title="proxy?url=http%3A%2F%2F4.bp.blogspot.com%2F-YhSz5YH5Bl8%2FUtJn72-ufBI%2FAAAAAAAACJ8%2FIfowb4F8g5Q%2Fs1600%2FUntitled"/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span></a><span style="font-family: "Tahoma","sans-serif";"><o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4RUqQj3n-CshxzgGqw1pH-o0GLBE-zq8yKOcfinjlbPanvzO5TgGlHDSh2VxWov1fRJZCiplN7gfikzlcJhOb7cIqwduonlxd_8FsvmK7BiAK4_AUuEWA0Y64TrZx9jzmGNJtNolsXCBg/s1600/Untitled.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4RUqQj3n-CshxzgGqw1pH-o0GLBE-zq8yKOcfinjlbPanvzO5TgGlHDSh2VxWov1fRJZCiplN7gfikzlcJhOb7cIqwduonlxd_8FsvmK7BiAK4_AUuEWA0Y64TrZx9jzmGNJtNolsXCBg/s1600/Untitled.png" height="640" width="476" /></a></div>
<br />
<div class="MsoNoSpacing">
<span style="font-family: "Tahoma","sans-serif";">Step 2:
Configure the build path.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: "Tahoma","sans-serif";">You can download
the jars from this <a href="https://drive.google.com/folderview?id=0B-oQbi0oiCK6RkYtMllBUVFlWFE&usp=sharing"><b>link</b></a><o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEsSauxfQJrgJR_A_6PzbGZb5VAEWzbvU1Ve9eTdPd7ws4AzN4nPGMg4pG1y4M7jDC1M_7FY7Sm2_PmLJDdOm-zhKfKv9AwmxibReCVMD66pQ8YBTB9kImuTtAgqgW7626ul5Xfrp4kTIf/s1600/Untitled.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEsSauxfQJrgJR_A_6PzbGZb5VAEWzbvU1Ve9eTdPd7ws4AzN4nPGMg4pG1y4M7jDC1M_7FY7Sm2_PmLJDdOm-zhKfKv9AwmxibReCVMD66pQ8YBTB9kImuTtAgqgW7626ul5Xfrp4kTIf/s1600/Untitled.png" height="212" width="320" /></a></div>
<br />
<div class="MsoNoSpacing">
<span style="font-family: "Tahoma","sans-serif";">Add the
following jars to your build path.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: "Tahoma","sans-serif";">To do
that, right click you project, click Build Path, Configure Build Path.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<span style="font-family: "Tahoma","sans-serif";">Click on
Libraries tab, Add External Jars and browse to the folder having all the jars<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: "Tahoma","sans-serif";">Step 3:
Create the hibernate configuration xml file.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<span style="font-family: "Tahoma","sans-serif";">Right click
on src folder, new, file. Give it the name hibernate.cfg.xml. click Finish<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh12qCSmR7ACKUA__q90nB5fWtpv6ntvwL_cyIhSiQ_LuaNVrzWW38QAG6ilUjNZbChCKYjmwIX9JzMvLvWUkdSon3mQOO4A3XzvjXaH5TtYnGL5gX3xqx4kWjUmcWkaACC3pJqFlq1huOw/s1600/Untitled.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh12qCSmR7ACKUA__q90nB5fWtpv6ntvwL_cyIhSiQ_LuaNVrzWW38QAG6ilUjNZbChCKYjmwIX9JzMvLvWUkdSon3mQOO4A3XzvjXaH5TtYnGL5gX3xqx4kWjUmcWkaACC3pJqFlq1huOw/s1600/Untitled.png" height="490" width="640" /></a></div>
<br />
<div class="MsoNoSpacing">
<span style="font-family: "Tahoma","sans-serif";">Add the
following code to the xml.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: teal; font-family: Consolas; font-size: 10.0pt;"><?</span><span style="color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;">xml</span><span style="font-family: Consolas; font-size: 10.0pt;"> <span style="color: #7f007f;">version</span>=<i><span style="color: #2a00ff;">"1.0"</span></i> <span style="color: #7f007f;">encoding</span>=<i><span style="color: #2a00ff;">"UTF-8"</span></i>
<span style="color: teal;">?></span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: teal; font-family: Consolas; font-size: 10.0pt;"><!</span><span style="color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;">DOCTYPE</span><span style="font-family: Consolas; font-size: 10.0pt;">
<span style="color: teal;">hibernate-configuration</span> <span style="color: grey;">PUBLIC</span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: teal; font-family: Consolas; font-size: 10.0pt;">"-//Hibernate/Hibernate Configuration DTD//EN"</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: #3f7f5f; font-family: Consolas; font-size: 10.0pt;">"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"</span><span style="color: teal; font-family: Consolas; font-size: 10.0pt;">></span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: teal; font-family: Consolas; font-size: 10.0pt;"><</span><span style="color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;">hibernate-configuration</span><span style="color: teal; font-family: Consolas; font-size: 10.0pt;">></span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: teal; font-family: Consolas; font-size: 10.0pt;"><</span><span style="color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;">session-factory</span><span style="color: teal; font-family: Consolas; font-size: 10.0pt;">></span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: #3f5fbf; font-family: Consolas; font-size: 10.0pt;"><!-- Setup the
database connection --></span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: teal; font-family: Consolas; font-size: 10.0pt;"><</span><span style="color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;">property</span><span style="font-family: Consolas; font-size: 10.0pt;"> <span style="color: #7f007f;">name</span>=<i><span style="color: #2a00ff;">"connection.url"</span></i><span style="color: teal;">></span>jdbc:oracle:thin:@localhost:1521:oracle<span style="color: teal;"></</span><span style="color: #3f7f7f;">property</span><span style="color: teal;">></span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: teal; font-family: Consolas; font-size: 10.0pt;"><</span><span style="color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;">property</span><span style="font-family: Consolas; font-size: 10.0pt;"> <span style="color: #7f007f;">name</span>=<i><span style="color: #2a00ff;">"connection.username"</span></i><span style="color: teal;">></span>SYSTEM<span style="color: teal;"></</span><span style="color: #3f7f7f;">property</span><span style="color: teal;">></span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: teal; font-family: Consolas; font-size: 10.0pt;"><</span><span style="color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;">property</span><span style="font-family: Consolas; font-size: 10.0pt;"> <span style="color: #7f007f;">name</span>=<i><span style="color: #2a00ff;">"connection.password"</span></i><span style="color: teal;">></span>Oracle123<span style="color: teal;"></</span><span style="color: #3f7f7f;">property</span><span style="color: teal;">></span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: teal; font-family: Consolas; font-size: 10.0pt;"><</span><span style="color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;">property</span><span style="font-family: Consolas; font-size: 10.0pt;"> <span style="color: #7f007f;">name</span>=<i><span style="color: #2a00ff;">"connection.driver"</span></i><span style="color: teal;">></span>oracle.jdbc.OracleDriver<span style="color: teal;"></</span><span style="color: #3f7f7f;">property</span><span style="color: teal;">></span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: teal; font-family: Consolas; font-size: 10.0pt;"><</span><span style="color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;">property</span><span style="font-family: Consolas; font-size: 10.0pt;"> <span style="color: #7f007f;">name</span>=<i><span style="color: #2a00ff;">"connection.pool_size"</span></i><span style="color: teal;">></span>1<span style="color: teal;"></</span><span style="color: #3f7f7f;">property</span><span style="color: teal;">></span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: #3f5fbf; font-family: Consolas; font-size: 10.0pt;"><!-- SQL dialect
--></span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: teal; font-family: Consolas; font-size: 10.0pt;"><</span><span style="color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;">property</span><span style="font-family: Consolas; font-size: 10.0pt;"> <span style="color: #7f007f;">name</span>=<i><span style="color: #2a00ff;">"dialect"</span></i><span style="color: teal;">></span>org.hibernate.dialect.OracleDialect<span style="color: teal;"></</span><span style="color: #3f7f7f;">property</span><span style="color: teal;">></span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: #3f5fbf; font-family: Consolas; font-size: 10.0pt;"><!-- Show <u>sql</u>
statements to the <u>stdout</u> --></span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: teal; font-family: Consolas; font-size: 10.0pt;"><</span><span style="color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;">property</span><span style="font-family: Consolas; font-size: 10.0pt;"> <span style="color: #7f007f;">name</span>=<i><span style="color: #2a00ff;">"show_sql"</span></i><span style="color: teal;">></span>true<span style="color: teal;"></</span><span style="color: #3f7f7f;">property</span><span style="color: teal;">></span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: #3f5fbf; font-family: Consolas; font-size: 10.0pt;"><!-- Configure
the cache provider --></span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: teal; font-family: Consolas; font-size: 10.0pt;"><</span><span style="color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;">property</span><span style="font-family: Consolas; font-size: 10.0pt;"> <span style="color: #7f007f;">name</span>=<i><span style="color: #2a00ff;">"cache.provider_class"</span></i><span style="color: teal;">></span>org.hibernate.cache.EhCacheProvider<span style="color: teal;"></</span><span style="color: #3f7f7f;">property</span><span style="color: teal;">></span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: #3f5fbf; font-family: Consolas; font-size: 10.0pt;"><!-- Generate
the database DDL from <u>hibernate</u> configuration file --></span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: teal; font-family: Consolas; font-size: 10.0pt;"><</span><span style="color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;">property</span><span style="font-family: Consolas; font-size: 10.0pt;"> <span style="color: #7f007f;">name</span>=<i><span style="color: #2a00ff;">"hbm2ddl.auto"</span></i><span style="color: teal;">></span>update<span style="color: teal;"></</span><span style="color: #3f7f7f;">property</span><span style="color: teal;">></span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: #3f5fbf; font-family: Consolas; font-size: 10.0pt;"><!-- create =
create the database and remove the existing schema if any --></span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: #3f5fbf; font-family: Consolas; font-size: 10.0pt;"><!-- update =
update the database if the schema already exists. Throws exception if matching
schema not found. --></span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: #3f5fbf; font-family: Consolas; font-size: 10.0pt;"><!--
create-delete = create the database and drop the schema after the
sessionFactory is closed. --></span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: #3f5fbf; font-family: Consolas; font-size: 10.0pt;"><!-- validate =
validate the existing schema and no changes will be made to the database.
--></span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: teal; font-family: Consolas; font-size: 10.0pt;"><</span><span style="color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;">property</span><span style="font-family: Consolas; font-size: 10.0pt;"> <span style="color: #7f007f;">name</span>=<i><span style="color: #2a00ff;">"hibernate.allow_sql_comments"</span></i><span style="color: teal;">></span>true<span style="color: teal;"></</span><span style="color: #3f7f7f;">property</span><span style="color: teal;">></span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: teal; font-family: Consolas; font-size: 10.0pt;"><</span><span style="color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;">property</span><span style="font-family: Consolas; font-size: 10.0pt;"> <span style="color: #7f007f;">name</span>=<i><span style="color: #2a00ff;">"hibernate.format_sql"</span></i><span style="color: teal;">></span>false<span style="color: teal;"></</span><span style="color: #3f7f7f;">property</span><span style="color: teal;">></span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: teal; font-family: Consolas; font-size: 10.0pt;"><</span><span style="color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;">property</span><span style="font-family: Consolas; font-size: 10.0pt;"> <span style="color: #7f007f;">name</span>=<i><span style="color: #2a00ff;">"hibernate.generate_statistics"</span></i><span style="color: teal;">></span>true<span style="color: teal;"></</span><span style="color: #3f7f7f;">property</span><span style="color: teal;">></span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: #3f5fbf; font-family: Consolas; font-size: 10.0pt;"><!-- Hibernate's
automatic session context management --></span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: teal; font-family: Consolas; font-size: 10.0pt;"><</span><span style="color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;">property</span><span style="font-family: Consolas; font-size: 10.0pt;"> <span style="color: #7f007f;">name</span>=<i><span style="color: #2a00ff;">"current__session_context_class"</span></i><span style="color: teal;">></span>thread<span style="color: teal;"></</span><span style="color: #3f7f7f;">property</span><span style="color: teal;">></span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: #3f5fbf; font-family: Consolas; font-size: 10.0pt;"><!-- Classes to
be mapped --></span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: teal; font-family: Consolas; font-size: 10.0pt;"><</span><span style="color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;">mapping</span><span style="font-family: Consolas; font-size: 10.0pt;"> <span style="color: #7f007f;">class</span>=<i><span style="color: #2a00ff;">"Employee"</span></i><span style="color: teal;">/></span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: teal; font-family: Consolas; font-size: 10.0pt;"></</span><span style="color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;">session-factory</span><span style="color: teal; font-family: Consolas; font-size: 10.0pt;">></span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: teal; font-family: Consolas; font-size: 10.0pt;"></</span><span style="color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;">hibernate-configuration</span><span style="color: teal; font-family: Consolas; font-size: 10.0pt;">></span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: "Tahoma","sans-serif";">Note : I
am using Oracle 11g. You will have to modify the </span><i><span style="color: #2a00ff; font-family: Consolas; font-size: 10.0pt;">connection.url, connection.username,
connection.password </span></i><span style="font-family: "Tahoma","sans-serif";">properties
as per your database configurations.</span><i><span style="color: #2a00ff; font-family: Consolas; font-size: 10.0pt;"> </span></i><span style="font-family: "Tahoma","sans-serif";">You
can use the code provided as a format for those properties</span><i><span style="color: #2a00ff; font-family: Consolas; font-size: 10.0pt;">.<o:p></o:p></span></i></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: "Tahoma","sans-serif";">Step 4: Add
the file Employee.java, HibernateUtility.java and Client.java in your source
package</span><i><span style="color: #2a00ff; font-family: Consolas; font-size: 10.0pt;">.
<o:p></o:p></span></i></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: "Tahoma","sans-serif"; mso-bidi-font-style: italic;">Employee.java<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal">
<b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">import</span></b><span style="font-family: Consolas; font-size: 10pt;"> javax.persistence.Entity;</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">import</span></b><span style="font-family: Consolas; font-size: 10pt;"> javax.persistence.Id;</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">import</span></b><span style="font-family: Consolas; font-size: 10pt;"> javax.persistence.NamedNativeQueries;</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">import</span></b><span style="font-family: Consolas; font-size: 10pt;"> javax.persistence.NamedNativeQuery;</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: #646464; font-family: Consolas; font-size: 10.0pt;">@Entity <o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: #646464; font-family: Consolas; font-size: 10.0pt;">/*table will be created with name Employee. If you want to give
some other name use the table annotation - @Table(name=”EMP1”)*/</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">public</span></b><span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">class</span></b><span style="font-family: Consolas; font-size: 10pt;"> Employee {</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: #646464; font-family: Consolas; font-size: 10.0pt;">@Id</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">private</span></b><span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">int</span></b><span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: #0000c0; font-family: Consolas; font-size: 10.0pt;">id</span><span style="font-family: Consolas; font-size: 10pt;">;</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">private</span></b><span style="font-family: Consolas; font-size: 10pt;"> String </span><span style="color: #0000c0; font-family: Consolas; font-size: 10.0pt;">name</span><span style="font-family: Consolas; font-size: 10pt;">;</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">public</span></b><span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">int</span></b><span style="font-family: Consolas; font-size: 10pt;"> getId() {</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">return</span></b><span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: #0000c0; font-family: Consolas; font-size: 10.0pt;">id</span><span style="font-family: Consolas; font-size: 10pt;">;</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> }</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">public</span></b><span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">void</span></b><span style="font-family: Consolas; font-size: 10pt;"> setId(</span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">int</span></b><span style="font-family: Consolas; font-size: 10pt;"> id) {</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">this</span></b><span style="font-family: Consolas; font-size: 10pt;">.</span><span style="color: #0000c0; font-family: Consolas; font-size: 10.0pt;">id</span><span style="font-family: Consolas; font-size: 10pt;"> = id;</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> }</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">public</span></b><span style="font-family: Consolas; font-size: 10pt;"> String <span style="background: silver; mso-highlight: silver;">getName</span>() {</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">return</span></b><span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: #0000c0; font-family: Consolas; font-size: 10.0pt;">name</span><span style="font-family: Consolas; font-size: 10pt;">;</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> }</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">public</span></b><span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">void</span></b><span style="font-family: Consolas; font-size: 10pt;"> setName(String name)
{</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">this</span></b><span style="font-family: Consolas; font-size: 10pt;">.</span><span style="color: #0000c0; font-family: Consolas; font-size: 10.0pt;">name</span><span style="font-family: Consolas; font-size: 10pt;"> = name;</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> }</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Consolas; font-size: 10pt;">}</span><span style="font-family: "Tahoma","sans-serif"; mso-bidi-font-style: italic;"><o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: "Tahoma","sans-serif";">HibernateUtility.java<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal">
<b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">import</span></b><span style="font-family: Consolas; font-size: 10pt;"> org.hibernate.SessionFactory;</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">import</span></b><span style="font-family: Consolas; font-size: 10pt;"> org.hibernate.cfg.AnnotationConfiguration;</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">public</span></b><span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">class</span></b><span style="font-family: Consolas; font-size: 10pt;"> HibernateUtility{</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">private</span></b><span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">static</span></b><span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">final</span></b><span style="font-family: Consolas; font-size: 10pt;"> SessionFactory </span><i><span style="color: #0000c0; font-family: Consolas; font-size: 10.0pt;">SESSION_FACTORY</span></i><span style="font-family: Consolas; font-size: 10pt;">;</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">static</span></b><span style="font-family: Consolas; font-size: 10pt;">{</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><i><span style="color: #0000c0; font-family: Consolas; font-size: 10.0pt;">SESSION_FACTORY</span></i><span style="font-family: Consolas; font-size: 10pt;"> = </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">new</span></b><span style="font-family: Consolas; font-size: 10pt;">
AnnotationConfiguration().configure().buildSessionFactory();</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> }</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">public</span></b><span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">static</span></b><span style="font-family: Consolas; font-size: 10pt;"> SessionFactory
getSessionFactory(){</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">return</span></b><span style="font-family: Consolas; font-size: 10pt;"> </span><i><span style="color: #0000c0; font-family: Consolas; font-size: 10.0pt;">SESSION_FACTORY</span></i><span style="font-family: Consolas; font-size: 10pt;">;</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> }</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNoSpacing">
<span style="font-family: Consolas; font-size: 10pt;">}<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: "Tahoma","sans-serif";">Client.Java<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal">
<b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">import</span></b><span style="font-family: Consolas; font-size: 10pt;"> java.util.Iterator;</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">import</span></b><span style="font-family: Consolas; font-size: 10pt;"> java.util.List;</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">import</span></b><span style="font-family: Consolas; font-size: 10pt;"> org.hibernate.Query;</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">import</span></b><span style="font-family: Consolas; font-size: 10pt;"> org.hibernate.Session;</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">import</span></b><span style="font-family: Consolas; font-size: 10pt;"> org.hibernate.SessionFactory;</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">import</span></b><span style="font-family: Consolas; font-size: 10pt;"> org.hibernate.Transaction;</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">public</span></b><span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">class</span></b><span style="font-family: Consolas; font-size: 10pt;"> Client {</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">public</span></b><span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">static</span></b><span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">void</span></b><span style="font-family: Consolas; font-size: 10pt;"> main(String[] args)
{</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> Employee e1 = </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">new</span></b><span style="font-family: Consolas; font-size: 10pt;"> Employee();</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> e1.setId(125);</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> e1.setName(</span><span style="color: #2a00ff; font-family: Consolas; font-size: 10.0pt;">"Satish"</span><span style="font-family: Consolas; font-size: 10pt;">);</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">try</span></b><span style="font-family: Consolas; font-size: 10pt;"> {</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> Class.<i>forName</i>
(</span><span style="color: #2a00ff; font-family: Consolas; font-size: 10.0pt;">"oracle.jdbc.OracleDriver"</span><span style="font-family: Consolas; font-size: 10pt;">);</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> } </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 10.0pt;">catch</span></b><span style="font-family: Consolas; font-size: 10pt;">
(ClassNotFoundException e) {</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: #3f7f5f; font-family: Consolas; font-size: 10.0pt;">// </span><b><span style="color: #7f9fbf; font-family: Consolas; font-size: 10.0pt;">TODO</span></b><span style="color: #3f7f5f; font-family: Consolas; font-size: 10.0pt;"> Auto-generated
catch block</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> e.printStackTrace();</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> }</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> SessionFactory
sessionFactory = HibernateUtility.<i>getSessionFactory</i>();</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> Session session
= sessionFactory.openSession();</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> Transaction transaction
= session.beginTransaction();</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> </span><span style="color: #3f7f5f; font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-left: 0.5in; text-indent: 0.5in;">
<span style="font-family: Consolas; font-size: 10pt;">session.persist(e1);<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: #3f7f5f; font-family: Consolas; font-size: 10.0pt;"> </span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: #3f7f5f; font-family: Consolas; font-size: 10.0pt;"> </span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: #3f7f5f; font-family: Consolas; font-size: 10.0pt;"> </span><span style="font-family: Consolas; font-size: 10pt;">transaction.commit();<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> session.close();<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"> }<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;">}</span><span style="font-family: Consolas; font-size: 10.0pt;"><o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Consolas; font-size: 10pt;">Run Client.java. Enjoy, your employee has been persisted to the
database :)</span><o:p></o:p></div>
<div class="MsoNoSpacing">
<span style="font-family: Consolas; font-size: 10pt;">In my next update I will post how to use NamedQuery and
NamedNativeQuery annotations with hibernate.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<span style="font-family: Consolas; font-size: 10pt;">All the best!!!<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<br />
<div class="MsoNoSpacing">
<br /></div>
</div>
</div>
<!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2F4.bp.blogspot.com%2F-YhSz5YH5Bl8%2FUtJn72-ufBI%2FAAAAAAAACJ8%2FIfowb4F8g5Q%2Fs1600%2FUntitled.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVpeA0Qcbw6-zskyYe9N0IHUWtV1xT7FDhvlb57i7n-gx7Hm6auL5EUxe9oYLnOcaM10esVKEbb7wSnoVkoT7UgLweE7r_kETslWNfi722jQKvm0BqtyZcF9oCWWlYfQipXZEwbMVARDru/s1600/Untitled.png" -->Rizwan Shaikhhttp://www.blogger.com/profile/15921669282151473291noreply@blogger.com0tag:blogger.com,1999:blog-5642056215500231626.post-85018508568199441132013-11-23T23:05:00.001-08:002013-11-23T23:09:28.365-08:00Program to find frequency of elements in a String array.<div dir="ltr" style="text-align: left;" trbidi="on">
One of the common interview questions is "Find how frequently a particular String element occurs in a String array".<br />
Through this question the interviewers try to test your knowledge of Collections API.<br />
<br />
The algorithm that we will try to use is as follows:<br />
<br />
1. <b><span style="font-size: large;">Initialize the string array</span></b><br />
String strArray[] = {"Amit","Suresh","Suyash","Vimal","Amit","Amit","Suyash","Amit","amit"};<br />
<br />
2. <b><span style="font-size: large;">Initialize a TreeMap</span></b><br />
Map<String, Integer> map = new TreeMap<String,Integer>();<br />
<br />
There must be one question popping in ur head- Why the hell does he want to use a MAP ????<br />
Well !!!<br />
I want to use Map because Map allows you to store key value pairs. I will store the String as key and its frequency as the value. Well you also do the other way round- store String as value and its frequency as key. But you won't succeed because Java doesn't allow you to modify keys in a Map.<br />
<br />
3. <b><span style="font-size: large;">You can search if a particular String is present in the Map</span></b><br />
To do that you will have to iterate over the Map.<br />
But Map interface doesn't provide you with an Iterator. Don't worry !!! There is workaround. We can convert Map to a Set of Entries(that contain key value pairs).<br />
Set<Entry<String,Integer>> entrySet = map.entrySet();<br />
<br />
Then obtain the iterator over the set. I have obtained an Iterator object that iterates over Entry<String,Integer>.<br />
Iterator<Entry<String,Integer>> it = entrySet.iterator();<br />
<br />
If it is present then increment its frequency. If it is not already there then simply add it to the Map and set its frequency as 1 as it has occurred for the first time.<br />
<br />
4. <span style="font-size: large;"><b>Print the Map.</b></span><br />
<span style="font-size: large;"><b> </b></span>System.out.println(map);<br />
<br />
<br />
<span style="font-size: large;"><b>Program in Java</b></span><br />
package mypackage;<br />
<br />
import java.util.Iterator;<br />
import java.util.Map;<br />
import java.util.Map.Entry;<br />
import java.util.Set;<br />
import java.util.TreeMap;<br />
<br />
public class Test5 {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>public static void main(String[] args) {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>//Program to count the frequency of a word in an array<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>//Initialize the array<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>String strArray[] = {"Amit","Suresh","Suyash","Vimal","Amit","Amit","Suyash","Amit","amit"};<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>Map<String, Integer> map = new TreeMap<String,Integer>();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>for (String string : strArray) {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if(map.containsKey(string)){<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>Set<Entry<String,Integer>> entrySet = map.entrySet();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>Iterator<Entry<String,Integer>> it = entrySet.iterator();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>while (it.hasNext()) {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>Entry<String,Integer> entry = (Entry<String,Integer>) it.next();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if(entry.getKey().equals(string)){<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int value = (int) entry.getValue();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>entry.setValue(++value);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>} //while ends<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>} //if ends<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>else<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>map.put(string,1);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>} //for ends<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>System.out.println(map);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}//main ends<br />
}//class ends<br />
<div>
<br /></div>
<br />
<span style="font-size: large;"><b>Output:</b></span><br />
<div>
<div>
<span style="font-size: large;"><b>{Amit=4, Suresh=1, Suyash=2, Vimal=1, amit=1}</b></span></div>
<div>
<br /></div>
<div>
Note you can also use a HashMap. The program I have shown will work for both TreeMap as well as HashMap. If you use HashMap you will get the following output.<br />
<br />
<span style="font-size: large;"><b>{Suresh=1, Vimal=1, Amit=4, Suyash=2, amit=1}</b></span><br />
<br />
The only difference in output is the order in which map elements are printed. In TreeMap the keys were sorted in the ascending order while in HashMap there is no such sorting based on key values. </div>
<div>
<br />
Thats it guys. Signing off for today. Happy Learning.</div>
</div>
<div>
<br /></div>
</div>
Rizwan Shaikhhttp://www.blogger.com/profile/15921669282151473291noreply@blogger.com1tag:blogger.com,1999:blog-5642056215500231626.post-86114331954417689002013-11-16T21:11:00.002-08:002013-12-20T18:03:17.897-08:00Zycus Java Interview for Experienced Professionals. Sharing my experience<div dir="ltr" style="text-align: left;" trbidi="on">
Hey guys, yesterday I went for an interview in Zycus (a product based company in Mumbai) for the post of Java developer. I want to share my experience with you.<br />
<br />
It was a walk-in. Any one with 1.5 to 4 years of experience in Java development could go.<br />
It had 4 rounds.<br />
The first was general aptitude. Consisted of 10 questions. Total 30 minutes were given. So that comes to 3 minutes per question. The questions were very easy. But since I had no practice of Aptitude type questions I took time. But eventually I got all answers correct. :)<br />
Questions were mostly mathematics based like 1 train-platform question, 1 question on average, 1 on percentage. Few were based on blood relations, series, etc.<br />
We were divided into groups of 5 and asked to solve the first round of general aptitude. All the guys in my group cleared it.<br />
<br />
Then the second round. Written Technical Test. I failed in that round!!!! :'(<br />
There were 2 questions in that round. One was based on applying the algorithm and the second one on coding the algorithm. Total 60 minutes were given which in my opinion are sufficient.<br />
I want you people to be aware of what kind of questions can be asked so that your better prepared. I think I failed because I had appeared on another Java Interview on the same day in another company and I was just too tired. You better be prepared to put full effort and avoid being lazy like I was. :)<br />
The first step to solve the problem is understand it. Think in your mind how to solve it. Prepare a rough pseudo code for the problem before you start writing actual code. Writing Pseudo code first is a very good practice as it gives you a feeling that you can solve the problem, gives you an estimates of time required to write the code, helps you establish the boundary values of indexes for arrays,etc.<br />
I came home and tried to write a program for that and I succeeded this time.<br />
I have commented out few things in the program that were helpful for me to debug it.<br />
<b>Try to copy the code in Eclipse/NetBeans.</b><br />
<b>Run it as a Java Application.</b><br />
<b>Understand its logic.</b><br />
<b>Read the problem statement twice thrice....until you understand it completely.</b><br />
<br />
<b>package mypackage;</b><br />
<b><br /></b>
<b>/*Problem Statement</b><br />
<b> * There is a grid of size 5 by 5.</b><br />
<b> * Each cell in the grid can be alive or dead.</b><br />
<b> * An alive cell has a value 1 while a dead cell has a value 0.</b><br />
<b> * A first generation of the grid is generated using the following rules.</b><br />
<b> * 1. If an alive cell has less than 2 alive neighbors then it dies as if by starvation.</b><br />
<b> * 2. If an alive cell has 2 or 3 alive neighbors then it survives.</b><br />
<b> * 3. If an alive cell has more than 3 alive neighbors then it dies as if by overcrowding.</b><br />
<b> * 4. If a dead cell has exactly 3 alive neighbors then it lives as if by reproduction.</b><br />
<b> * </b><br />
<b> * Second generation of the grid is generated using the same rules as that used for generating * first one.</b><br />
<b> * Question 1. Generate first and second generation of grid on paper</b><br />
<b> * Question 2. Generate first and second generation of grid using a program in C/C++/Java.</b><br />
<b> * */</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjR6iot9ASDqT9vUqdgG5mkAtqm3RGW1IFh3eCudKOsvetulwtHYR2iHSj1-Jevcn3XkyeyOVjAB-U9AjSa4vi6tc2DX8WOrNbFz3iULYsITZ3Fi4nmfQA9I5-Rgsg0prmgP9MR76wkaPh/s1600/Input+Grid.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjR6iot9ASDqT9vUqdgG5mkAtqm3RGW1IFh3eCudKOsvetulwtHYR2iHSj1-Jevcn3XkyeyOVjAB-U9AjSa4vi6tc2DX8WOrNbFz3iULYsITZ3Fi4nmfQA9I5-Rgsg0prmgP9MR76wkaPh/s1600/Input+Grid.png" /></a></div>
(The dark cells are the live ones)<br />
<b>Answer 1.</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8EGvX9rJ3YdfIA4PsSjsEtzDfH28aLLyVY-DqCntBn5r7eEhI2eXDDydNXDzOgNeTcaD5psRTJhC7GyE87jJsQihAF83vFIpb90eQMov9MGxPNxPdQMxSzt88IpoXvecxhK5M4uZl3V-B/s1600/First+Generation+Grid.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8EGvX9rJ3YdfIA4PsSjsEtzDfH28aLLyVY-DqCntBn5r7eEhI2eXDDydNXDzOgNeTcaD5psRTJhC7GyE87jJsQihAF83vFIpb90eQMov9MGxPNxPdQMxSzt88IpoXvecxhK5M4uZl3V-B/s1600/First+Generation+Grid.png" height="194" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQdjx-wZ6ciB80H-wSFK5aKGQ3qF0tlR-giG3nLdjdpV1dhp46F8rkhttJCe1GgD-CvGt1zxfsn9e8U6zYBtUUZVmyOaBU4klAjnesmPgasNDGng6T82FiHbxF3ELU7c_2qMGcEIYn7ss7/s1600/Second+Generation+Grid.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQdjx-wZ6ciB80H-wSFK5aKGQ3qF0tlR-giG3nLdjdpV1dhp46F8rkhttJCe1GgD-CvGt1zxfsn9e8U6zYBtUUZVmyOaBU4klAjnesmPgasNDGng6T82FiHbxF3ELU7c_2qMGcEIYn7ss7/s1600/Second+Generation+Grid.png" height="167" width="320" /></a></div>
<br />
<b>Answer 2.</b><br />
public class Test3 {<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>public static void main(String[] args) {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int inputGrid[][] = {{0,0,0,0,0},{0,1,1,0,0},{0,1,1,0,0},{0,0,1,1,0},{0,0,1,1,0}};<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>Test3 test3 = new Test3();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int outputGrid[][] = test3. getNextGeneration(inputGrid);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>System.out.println("First Generation output");<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>test3.displayGrid(outputGrid);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>outputGrid = test3. getNextGeneration(outputGrid);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>System.out.println("Second Generation output");<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>test3.displayGrid(outputGrid);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>public int[][] getNextGeneration(int[][] inputGrid){<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int row = inputGrid.length;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int column = inputGrid[0].length;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int[][] outputGrid = new int[row][column];<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int activeCount = 0;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>//System.out.println("Active count.");<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>for(int i = 0; i < row; i++){<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>for(int j = 0; j < column; j++){<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if(inputGrid[i][j] == 1){ //If the cell is alive.<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>activeCount = getActiveCount(inputGrid,i,j);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if(activeCount == 2 || activeCount == 3)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>outputGrid[i][j] = 1;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>else{ //If the cell is dead.<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>activeCount = getActiveCount(inputGrid,i,j);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if(activeCount == 3)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>outputGrid[i][j] = 1;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>//System.out.print("i=" + i + " j=" + j);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>//System.out.println();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>return outputGrid;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>//Display the outputGrid.<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>public void displayGrid(int[][] inputGrid){<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int row = inputGrid.length;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int column = inputGrid[0].length;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>for(int i = 0; i < row; i++){<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>for(int j = 0; j < column; j++){<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>System.out.print(inputGrid[i][j]);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>System.out.println();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
//Counts the number of active neighbors.<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>public int getActiveCount(int[][] inputGrid,int i,int j){<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int activeCount = 0;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int noOfIter = 0;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>for(int m=-1; m <= 1; m++){<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>for(int n = -1; n <= 1; n++){<br />
//If the array indexes go out of boundary skip the remaining loop and continue to the //next iteration.<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if((m == 0 && n == 0) || (m+i) < 0 || (m+i) > 4 || (n+j) < 0 || (n+j) > 4)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>continue;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if(inputGrid[m+i][n+j] == 1)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>activeCount++;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>//noOfIter++;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>//System.out.print(" m+i" + (m+i) + " n+j" + (n+j));<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>//System.out.println();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>//System.out.println("No of iterations:"+ noOfIter);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>//System.out.println("Active Count"+ activeCount);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>return activeCount;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
}<br />
<br />
If you have a better or more efficient program for the same problem then please add it in comments. It will be added to this blog post along with your name.<br />
<br />
After the Written Technical Test comes the third round which is Technical Interview(TI). Although I couldn't qualify for that, got some info from my friend who went through it.<br />
He had to wait for some 4 hours for his turn to come for TI. It lasted for 45 minutes. They started with core Java. The questions were not general. They were tough and demanded thorough knowledge and application of Java concepts. For everything the interviewer wanted a program. They asked to write a program to find the frequency of a string in a string array. My friend used a Map. Added the string as key and its frequency as value. Used the contains() method to find if the map contained the string. If it already contained then he used Object setValue(Object key) method to increment the frequency of the string. If it didn't then he added the key value pair to the map using the method Object add(Object key ,Object value) keeping the value (frequency ) as 1.<br />
<br />
Some useful code for the same program has been suggested by my friend - <b><a href="https://plus.google.com/117795950593726507036/posts">Sheshadri Talla</a></b>. Thanks man!!!<br />
Posting it here.<br />
<br />
<span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">Same output using traditional coding style(without using collections framework)</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">String strArray[] = {"Amit","Suresh","Suyash","</span><wbr style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"></wbr><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">Vimal","Amit","Amit","Suyash",</span><wbr style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"></wbr><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">"Amit","amit"};</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">System.out.print("{");</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">for(int i=0; i=0; j--){</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">if(temp.equals(strArray[j])){</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">skip=true;</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">}</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">}</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">for(int k=i+1; k<strArray.length; k++){</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">if(temp.equals(strArray[k]) && !skip){</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">count++;</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">}</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">}</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">if(!skip){</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">System.out.print(temp+"="+</span><wbr style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"></wbr><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">count+", ");</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">}</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">}</span><br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /><span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">System.out.print("}");</span><br />
<br />
Hope this was helpful. Signing off for today.</div>
Rizwan Shaikhhttp://www.blogger.com/profile/15921669282151473291noreply@blogger.com0tag:blogger.com,1999:blog-5642056215500231626.post-35651724465228437032013-11-11T21:46:00.000-08:002013-11-10T05:15:13.829-08:00How does Polymorphism works with Generics References.<div dir="ltr" style="text-align: left;" trbidi="on">
In this tutorial we will see what happens when you apply the concepts of Polymorphism to Generics.<br />
<div>
<br /></div>
<div>
Just to brush up few concepts.</div>
<div>
What is Polymorphism?</div>
<div>
It is the ability of an object to take many forms. The most common use of Polymorphism occurs when a superclass reference points to a subclass object.</div>
<div>
<br /></div>
<div>
<b>Example 1.</b></div>
<div>
<div>
<b>class Parent{</b></div>
<div>
<b><span class="Apple-tab-span" style="white-space: pre;"> </span>public void sayHello(){</b></div>
<div>
<b><span class="Apple-tab-span" style="white-space: pre;"> </span>System.out.println("Hello Parent");</b></div>
<div>
<b><span class="Apple-tab-span" style="white-space: pre;"> </span>}</b></div>
<div>
<b>}</b></div>
<div>
<b>class Child extends Parent{</b></div>
<div>
<b><span class="Apple-tab-span" style="white-space: pre;"> </span>public void sayHello(){</b></div>
<div>
<b><span class="Apple-tab-span" style="white-space: pre;"> </span>System.out.println("Hello Child");</b></div>
<div>
<b><span class="Apple-tab-span" style="white-space: pre;"> </span>}</b></div>
<div>
<b>}</b></div>
</div>
<div>
<div>
<b>public class Test2 {</b></div>
<div>
<b> public static void main(String[] args) {</b></div>
<div>
<b><span class="Apple-tab-span" style="white-space: pre;"> </span> Parent ref = new Child(); //Line 1.</b></div>
<div>
<b><span class="Apple-tab-span" style="white-space: pre;"> </span>ref.sayHello();<span class="Apple-tab-span" style="white-space: pre;"> </span> //Line 2.</b></div>
</div>
<div>
<b> }</b></div>
<div>
<b>}</b></div>
<div>
<b>Output: </b></div>
<div>
<b>Hello Child</b></div>
<div>
<b><br /></b></div>
<div>
Notice how at line 1 the reference variable "ref" of type Parent (supertype or superclass type) is used to point to an object of type Child (subtype or subclass type). </div>
<div>
See how at line 2 when sayHello method is invoked, the JVM figures out what object the reference (ref) is pointing to. ref is pointing to Child() object and hence sayHello() method of Child is invoked. </div>
<div>
Although polymorphism is not just limited to this scenario this is just a common situation encountered in Java Programming.</div>
<div>
<br /></div>
<div>
What is Generics?</div>
<div>
Generics is a feature introduced in Java 5 which allows a type or method to operate on a type while providing compile time safety.</div>
<div>
<br /></div>
<div>
<b>Example 2.</b></div>
<div>
<b>ArrayList<String> myList = new ArrayList<String>();</b></div>
<div>
<div>
<b>myList.add(new Integer(1)); //Line 1-throws a compile time error</b></div>
<div>
<b>myList.add("John"); //Line 2-works perfectly fine.</b></div>
</div>
<div>
<br /></div>
<div>
The declaration ArrayList<String> myList = new ArrayList<String>() says that myList can only hold objects of type String. If you add any other type of objects to the list. The compiler will throw an error.</div>
<div>
<br /></div>
<div>
You must be wondering why do you want to add a single type of object to myList. Here is the example.</div>
<div>
<br /></div>
<div>
<b>Example 3.</b></div>
<div>
<div>
<div>
<b>public class Test2 {</b></div>
<div>
<b> public static void main(String[] args) {</b></div>
</div>
<div>
<b> List list = new ArrayList();</b></div>
<div>
<b> list.add(new Integer(2));</b></div>
<div>
<b> String name = (String)list.get(0);</b></div>
</div>
<div>
<b> }</b></div>
<div>
<b>}</b></div>
<div>
<b>Output:</b></div>
<div>
<span style="color: red;">Exception in thread "main"</span> <u><span style="color: blue;">java.lang.ClassCastException</span></u>: <span style="color: red;">java.lang.Integer cannot be cast to java.lang.String</span></div>
<div>
<br /></div>
<div>
Here is the explanation.</div>
<div>
Imagine we are not using generics. A list can hold any object. When you read the contents of the list you will always get an Object type.</div>
<div>
public Object get(int index) ->Signature of get method.</div>
<div>
So you will have to typecast it.</div>
<div>
String name = (String)myList.get(0);</div>
<div>
Since in this example we are not using generics we could add even an Integer object to List. </div>
<div>
So myList.get(0) would return an Integer. An Integer typecasted to String would give you a ClassCastException.</div>
<div>
<br /></div>
<div>
Huff Enough of revision. Lets get to the point of this tutorial. What happens when you apply the concepts of Polymorphism to Generics.</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
As we have seen in Example 1, Line 1</div>
<div>
Parent ref = new Child(); </div>
<div>
is perfectly OK. i.e. a parent class reference can point to a subclass object.</div>
<div>
<br /></div>
<div>
So what about this</div>
<div>
<b>List myList<Object> = new ArrayList<String>();</b></div>
<div>
<b>List myList<Number> = new ArrayList<Integer>();</b></div>
<div>
<br /></div>
<div>
This should work fine isn't it?</div>
<div>
But IT DOESN'T.</div>
<div>
<br /></div>
<div>
Burn into your brain a rule of generics.</div>
<div>
<b><span style="font-size: large;">"Generic type of the reference and the generic type of the </span></b></div>
<div>
<b><span style="font-size: large;">object must be exactly identical"</span></b></div>
<div>
Polymorphism applies only to the base type (in this example, the collections List and ArrayList).</div>
<div>
If the generic type of the reference is Number then it can point to only objects whose generic type is Number, neither a subtype of Number nor a supertype of Number. Only and only Number.</div>
<div>
<br /></div>
<div>
So the following lines are perfectly fine.</div>
<div>
<div>
<b>List myList<Object> = new ArrayList<Object>(); //Fine</b></div>
<div>
<b>List myList<Number> = new ArrayList<Number>(); //Fine</b></div>
<div>
<b>Set mySet<Parent> = new HashSet<Parent>(); //Fine</b></div>
<div>
<br /></div>
<div>
When working with generics type a cast is not required when extracting elements form the collection. While for non-generic types an explicit cast is required.</div>
<div>
<br /></div>
<div>
<b>Example 4.</b></div>
<div>
<div>
<b>List<String> myList = new ArrayList<String>();</b></div>
<div>
<b>myList.add("Vicky");</b></div>
<div>
<b>myList.add("John");</b></div>
<div>
<b>String name = myList.get(0); //No cast was required</b></div>
<div>
<b><br /></b></div>
<div>
<b>List list = new ArrayList();</b></div>
<div>
<b>list.add("Sunny");</b></div>
<div>
<b>name = (String)list.get(0); //An explicit cast was required.</b><br />
<b><br /></b>
In Example 4 we were dealing with Strings, now what would happen if we were dealing with Integers. One would expect that Unboxing would be done for us even when using Pre-Java 5 non type safe code and we won't have to type cast. But that is WRONG. Autoboxing only converts from a Wrapper class(Integer or Long or Short etc.) to a primitive. It cannot convert from an Object type to a primitive.<br />
Following example illustrates it.<br />
<br />
<b>Example 5.</b><br />
<b>List<Integer> listOfTypeSafeIntegers = new ArrayList<Integer>();</b><br />
<b>/*Declaring type safe list of Integers. You can only add </b><b>Integers to it.*/</b><b> </b><b>listOfTypeSafeIntegers.add(100);</b><br />
<b>listOfTypeSafeIntegers.add(200);</b><br />
<b>listOfTypeSafeIntegers.add(300);</b><br />
<b>i = listOfTypeSafeIntegers.get(0); </b><br />
<b>/*Typecast not necessary as get(int) method returns an Integer. The compiler automatically performs the typecasting for us such that get(int) returns Integer instead of object. Unboxing converts that Integer wrapper to int.*/</b><br />
<b><br /></b>
<b>List listOfIntegers= new ArrayList(); //Declaring raw list.Can contain any objects</b><br />
<b>listOfIntegers.add(100); </b><br />
<b>listOfIntegers.add(200);</b><br />
<b>listOfIntegers.add(300);</b><br />
<b>int i = (Integer)listOfIntegers.get(2); </b><br />
<b>/*Typecast is necessary as get() method returns an Object </b><b>and an Object cannot be unboxed to primitive*/</b><br />
<br />
By now you might have become pretty much comfortable with Generics. We have seen its introduction, basic syntax, how it works with polymorphism and unboxing.<br />
Few catches when declaring type safe code.<br />
<b>In the following example I am declaring reference of generic type Integer and the object as a raw type.</b><br />
<b>List<Integer> list = new ArrayList(); </b><br />
<b>//This line pops up a warning- Array List a raw type references to generic type ArrayList<> should //be parameterized. </b><br />
<b><br /></b>
<b>list.add(100); //OK. I can add an Integer to it.</b><br />
<b>lists.add(new String()); //When I try to add a string compiler throws an error.</b> </div>
</div>
<div>
<b><br /></b>
<b>From this we infer that even if reference is declared of a generic type say Integer, compiler restricts us from adding any other type say String.</b><br />
<b><br /></b>
<b>So will I get an error at Line 1 in the below example?</b><br />
<b>List list = new ArrayList<Integer>();</b><br />
<b>list.add(100);</b><br />
<b></b><br />
<b>list.add(new String()); //Line 1</b><br />
<b><br /></b>
<b>Strangely, there is no error. Compiler just sees the generic type of the reference. Since it was a raw type compiler assumes any type of object can be added to the list.</b><br />
<b><br /></b></div>
<div>
That's it in today's tutorial. Signing off for here. Will be back with a whole lot of new tutorials for you all. All doubts, suggestions for improvements, correction of mistakes are welcome. Hope this helps. Happy Learning!!!</div>
</div>
</div>
Rizwan Shaikhhttp://www.blogger.com/profile/15921669282151473291noreply@blogger.com0