<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>10년후의 미래는 현재가 말해준다</title>
		<link>http://wmp.kr/</link>
		<description></description>
		<language>ko</language>
		<pubDate>Sat, 22 May 2010 18:05:20 +0900</pubDate>
		<generator>Tistory 1.1 (http://www.tistory.com/)</generator>
		<image>
		<title>10년후의 미래는 현재가 말해준다</title>
		<url><![CDATA[http://cfile3.uf.tistory.com/image/181ED40D4B4C5E56014682]]></url>
		<link>http://wmp.kr/</link>
		<description></description>
		</image>
		<item>
			<title>Spring Conept</title>
			<link>http://wmp.kr/entry/Spring-Conept</link>
			<description>&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 56pt; TEXT-INDENT: -18pt; mso-para-margin-left: 0gd; mso-list: l0 level1 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;베이직 컨셉&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 78pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level2 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;A.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;자바&lt;SPAN lang=EN-US&gt;-&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;언어&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;i.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;Source &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt; class(&lt;/SPAN&gt;메모리에 아직 올라가지 않은 상태&lt;SPAN lang=EN-US&gt;)-&amp;gt;object(&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;메모리에 올라간 상태&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;compiler&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;FONT size=2&gt;à&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Debugger&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;FONT size=2&gt;à&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt; IDE(Integrated Development Environment)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;FONT size=2&gt;à&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;WAS(Web Application Server)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 78pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level2 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;B.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;JavaBeans&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;i.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;Java&lt;/SPAN&gt;를 위한&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt; software component Model&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;ii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;재사용 가능한&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt; Component&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;User Interface Widget(Property)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 78pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level2 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;C.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;EJB(Enterprise Java Beans)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;i.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;Java &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;컴포넌트의 사상을 서버로 확장&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;ii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;Transaction, &lt;/SPAN&gt;보안&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;분산처리&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;복잡성 가증&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 78pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level2 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;D.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;J2EE(Sevlet Container&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;가 처리 해야될 것들&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;i.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Java EE WebServices Technologies&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;ii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Java EE Web Application Technoogies&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Java EE Enterprise Application Technologies&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iv.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Java EE Management and Security Technologies&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 78pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level2 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;E.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;Java EE Web Services &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt; Container&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;를 만드는 기술&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 78pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level2 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;F.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Java EE Web Application Technologes&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;i.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Java Servlet 3.0&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;ii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Java Server Faces 2.0&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Java Server Pages 2.2&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iv.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;A Standard Tag Library for java server pages(JSTL)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;v.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Debugging Support for Other Languages 1.0&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 78pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level2 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;G.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Java EE Enterprise Application Technologies&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;i.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Contexts and Dependency Injection for java&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;ii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Dependency Injection for java 1.0&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Bean Valiadation&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iv.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Enterprise JavaBeans….&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 78pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level2 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;H.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Java EE Management and Security Technologies&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 78pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level2 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;I.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;Servlet Container – JSP&lt;/SPAN&gt;만 쓸 수 있게 해놓은 것 &lt;SPAN lang=EN-US&gt;: Object &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;를 관리 하기 위해서 &lt;/FONT&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;i.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Java EE Web Service Technologies&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;ii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Java EE web Application Technologies&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;Object &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;관리&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iv.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Tomcat Regin, SunOne&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 78pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level2 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;J.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;WAS&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;i.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Java EE Web Service Technologies&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;ii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Java EE web Application Technologies&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Enterprise Application&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iv.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Management and Security&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;v.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;WebLoginc, JEUS, JBOSS&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 78pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level2 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;K.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Spring -&amp;gt; Tomcat + Java EE &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 56pt; TEXT-INDENT: -18pt; mso-para-margin-left: 0gd; mso-list: l0 level1 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Introduction to Spring&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 78pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level2 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;A.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Basic Concept&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;i.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;Model1 Architecture – Web 1.0 – &lt;/SPAN&gt;간단 간결 &lt;SPAN lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;: HTTP -&amp;gt; stateleess &lt;/SPAN&gt;방식&lt;SPAN lang=EN-US&gt;-&amp;gt; &lt;/SPAN&gt;다운로드는 빠르지만 업로드는 느린 방식&lt;SPAN lang=EN-US&gt; : &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;초창기 시스템에 필요한 방식&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Browser sends a request to a JSP pages&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;JSP page communication with a java beans&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;3.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Java Bean is connected to a database&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;4.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;JSP page responses to the browser&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;ii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Model2 Architecture – Web 2.0 – servlet-&amp;gt;JSP&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Browser sends a request to a servlet&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Servlet instantiates a java beans the connect&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;3.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Servlet communicates with a JSP page&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;4.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;JSP page communicates with that java beans&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;5.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;JSP page respond to the browser&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;MVC design pattern&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Model : Maintain Data : Business logic plus one or mere data sources such as a relational database&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;View display all or a portion of the data&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;3.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Controller handle events that affect the model or view&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iv.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Model1 or Model2&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;v.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Model 1:&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;simple type of web application, quick prototyping Nature of developer task, View and controller being done by the same team who is doing the work&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;vi.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Model 2 : Complex type of web application, Creating an application to be Modified and maintained that Nature of developer task, view and controller being done by different teams who is doing the work&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 78pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level2 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;B.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;What is Spring?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;i.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;The most complete lightweight container : Application(able to execute Program), but Framework : library&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt; WAS&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;에 비해서 가볍다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;(lightweight). &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Automated configuration&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;Wiring of your application objects &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt; Object&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;를&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt; Spring&lt;/SPAN&gt;에서 관리 &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;객체간의 이동이 가능하다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;. (IOC)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;3.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;Set loosely – coupled components(POJOs) : EJB&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;에 비해서 객체간의 연결이 쉽다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 138pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level5 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;A.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;Ex) WAS APP&lt;/SPAN&gt;중&lt;SPAN lang=EN-US&gt; Log&lt;/SPAN&gt;기능만 쓰고 싶지만&lt;SPAN lang=EN-US&gt; Run &lt;/SPAN&gt;시키면&lt;SPAN lang=EN-US&gt; 10&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;초 정도 걸림&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt; &lt;/SPAN&gt;이것만을 사용하고 싶지만 &lt;SPAN lang=EN-US&gt;Application &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;을 다 올려야 사용 가능&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 138pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level5 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;B.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;But Spring&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;는 가능&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;4.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;Deployment in any environment(J2SE or J2EE) – &lt;/SPAN&gt;두 군데 다 돌아감&lt;SPAN lang=EN-US&gt;(JUES &lt;/SPAN&gt;뿐만 아니라&lt;SPAN lang=EN-US&gt; Tomcat&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;에서도 사용이 가능하다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;5.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;A Common abstraction layer for transaction management : &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;프로그램이 실행되는 작업 단위 &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt; &lt;/SPAN&gt;트랜잭션의 별도의 특화된 추장적인 레이어가 있다&lt;SPAN lang=EN-US&gt;. &lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;*&lt;/SPAN&gt;트랜잭션 처리가 중요&lt;SPAN lang=EN-US&gt;!!!&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;Ibatis&lt;/SPAN&gt;로&lt;SPAN lang=EN-US&gt; DB&lt;/SPAN&gt;처리&lt;SPAN lang=EN-US&gt;(Commit, Rollback &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;처리&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;6.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Allowing for pluggable transaction managers &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;7.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Support is not tied to J2EE environments&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 138pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level5 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;A.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;JTA(Java Transaction API)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 138pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level5 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;B.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;EJB CMT(Container Managed Transaction) : &lt;/SPAN&gt;단점 &lt;SPAN lang=EN-US&gt;coupled &lt;/SPAN&gt;이 강하기 때문에&lt;SPAN lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;Container&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;가 해준다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt; &lt;/SPAN&gt;은행&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;금융권에서 많이 사용&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;ii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;A JDBC abstraction layer &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt; coupled &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;을 줄이기 위해서 사용 &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;Offers a meaningful exception hierarchy &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt; &lt;/SPAN&gt;사용자에게 보여지는&lt;SPAN lang=EN-US&gt; exception &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;처리가 가능&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Simplifies error handling&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;3.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Greatly reduces the amount of code&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Integration with Toplink, JDO, and Ibatis SQL Maps (ORM mapping tool)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;DAO implementation support&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Support ibatis&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;3.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Support Hibernate&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iv.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;AOP functionality : &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;보이는 것만 보는 관점&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;Aspect oriented programming : &lt;/SPAN&gt;오브젝트 기반의 프로그래밍&lt;SPAN lang=EN-US&gt;(tag&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;관련 기법 중 하나&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Fully integrated into Spring configuration management&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;3.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Adding aspects such as declarative transaction management&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;v.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;A flexible MVC web application framework&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Built on core Spring functionality&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Accommodates multiple view technologies&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 138pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level5 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;A.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;JSP, Velocity, Tiles, iText, POI&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;3.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Spring middle tire can easily be combined with a web tire based on any other web MVC framework &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 138pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level5 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;A.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Struts, WebWork, Tapestry&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 78pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level2 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;C.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Why Spring&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;i.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;EJB&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;의 환상에서 벗어나자&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;너무 복잡한&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt; Spec&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;Object&lt;/SPAN&gt;들이 기술 종속적이다&lt;SPAN lang=EN-US&gt;. (Container&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;에 너무 종속적&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;3.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;Debugging &lt;/SPAN&gt;및&lt;SPAN lang=EN-US&gt; Test&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;가 너무 힘들다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;ii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Simplify many Java EE tasks&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;분산 객체를 위한&lt;SPAN lang=EN-US&gt; Spec&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;을 제외한 대부분의 기능이 구현됨&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;WAS &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;없이도 구동가능&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Avoid tight coupling among classes&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;Use POJOs&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;(Plain Old Java Objects)&lt;?xml:namespace prefix = o ns = &quot;urn:schemas-microsoft-com:office:office&quot; /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;Spring &lt;/SPAN&gt;에 종속된&lt;SPAN lang=EN-US&gt; Object&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;를 만들지 않음&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 78pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level2 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;D.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Spring Framework(=lightweight container)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;i.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;J2SE &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt; Spring Core(IoC==DAO) &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt; Library&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;가 존재&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;MVC, DAO, ORM, Web Context AOP&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;등 이 있다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;ii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Spring Framework Runtime&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Core container (context, core, beans, Expression Language) + AOP + Instrumentation.. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;Spring&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;을 이용한&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt; Web Application&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Servlet Container (Tomcat) &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;FONT size=2&gt;à&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt; Spring core &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;FONT size=2&gt;è&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt; iBatis&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;FONT size=2&gt;à&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt; JTM??!! &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;생산성 높은&lt;SPAN lang=EN-US&gt; Framework &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;사용&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;3.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;단점&lt;SPAN lang=EN-US&gt; : &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;그것만 사용&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 56pt; TEXT-INDENT: -18pt; mso-para-margin-left: 0gd; mso-list: l0 level1 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;3.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;Spring IoC(Basic Concept, Object Control(Container&lt;/SPAN&gt;에서 관리하느냐&lt;SPAN lang=EN-US&gt;, User&lt;/SPAN&gt;가 관리하느냐의 차이로&lt;SPAN lang=EN-US&gt; EJB&lt;/SPAN&gt;와&lt;SPAN lang=EN-US&gt; Spring&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;가 나뉜다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;), Dependency Injection)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 78pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level2 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;A.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Basic Concept&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;i.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Application vs Web Application&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;객체를 프로그래머가 제어할 수 있는가&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;Web Application : Container&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;가 필요&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;3.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;Application&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;은 프로그램이 그냥 돌아간다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;ii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Repository&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;XML : tag&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;를 이용한 방식&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;Properties : ini &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;파일을 읽고 쓰는 방식&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;3.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;Spring&lt;/SPAN&gt;에서&lt;SPAN lang=EN-US&gt; bean&lt;/SPAN&gt;을 관리하는 것&lt;SPAN lang=EN-US&gt;(&lt;/SPAN&gt;생성&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;소멸 등의 관리&lt;SPAN lang=EN-US&gt;)&lt;/SPAN&gt;은&lt;SPAN lang=EN-US&gt; XML, Property&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;를 통하여 관리한다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;Inversion of Control(IoC) : &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;메모리에 로드된 메소드를 바꿀 수 있다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;.?!&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;제어의 역행&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;? &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;제어권을 가져온다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;3.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;어디서&lt;SPAN lang=EN-US&gt;? Container&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;에서&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;.. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;4.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;무엇을&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt; ? POJOs&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iv.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;Dependency Lookup(DL) : &lt;/SPAN&gt;동적으로&lt;SPAN lang=EN-US&gt; Lookup&lt;/SPAN&gt;작업을 해준다&lt;SPAN lang=EN-US&gt;. Repository&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;를 만들고 &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;리소스 등록&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;의존성 찾기&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;? &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;Repository&lt;/SPAN&gt;에 저장된&lt;SPAN lang=EN-US&gt; Bean&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;을&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt; lookup&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;3.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;EJB&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;에서 많이 사용하던 방식&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;4.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;Container&lt;/SPAN&gt;와&lt;SPAN lang=EN-US&gt; Coupling&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;이 일어남&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 138pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level5 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;A.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;A&lt;/SPAN&gt;와&lt;SPAN lang=EN-US&gt; B&lt;/SPAN&gt;의 프로그램을 실행시키는데&lt;SPAN lang=EN-US&gt; DB 1,,2&lt;/SPAN&gt;를 연결해 놓지만&lt;SPAN lang=EN-US&gt;. DB3&lt;/SPAN&gt;을 연결시켜도 일반적으로는&lt;SPAN lang=EN-US&gt; A&lt;/SPAN&gt;또는&lt;SPAN lang=EN-US&gt; B&lt;/SPAN&gt;에서&lt;SPAN lang=EN-US&gt; DB3&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;을 연결하지 못한다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 138pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level5 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;B.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;하지만&lt;SPAN lang=EN-US&gt;, Lookup&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;을 통하여 동적으로 실행이 가능하다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;v.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Dependency Injection(DI)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;의존성 주입&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;외부의 존재가 생성시점을 제어한다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;3.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;의존성이 객체로 주입&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;4.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;객체 사이의 의존관계를 객체 자신이 아닌 외부의 조립기가 수행&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;5.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;무엇을&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt; ? POJO&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 138pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level5 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;A.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;어떤 시점에&lt;SPAN lang=EN-US&gt; ADD, UPDATE, DELETE&lt;/SPAN&gt;를 해라고&lt;SPAN lang=EN-US&gt; XML&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;파일에 적어놓고 프로그램에 올리면 프로그램은 어떤 상황에서 사용을 하게 되면 동적으로 업데이트된 객체를 사용할 수 있다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 138pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level5 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;B.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;왜&lt;SPAN lang=EN-US&gt;? &lt;/SPAN&gt;이렇게 사용하느냐&lt;SPAN lang=EN-US&gt;? &lt;/SPAN&gt;이렇게 하지 않으면 메모리에&lt;SPAN lang=EN-US&gt; component&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;를 전체를 다 올려야 하기 때문에 프로그램이 무너진다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 138pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level5 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;C.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;따라서 필요시점에&lt;SPAN lang=EN-US&gt; component&lt;/SPAN&gt;를 메모리에 올리고 사용이 완료되면 메모리에서 내리는 방식을 사용함으로써 &lt;SPAN lang=EN-US&gt;lightweight container&lt;/SPAN&gt;라 한다&lt;SPAN lang=EN-US&gt;. (IoC &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;기법&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;6.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;Setter Injection : public method(DLImpl dl) &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt; Spring&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;이 값을 넣어준다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;7.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Constructor Injection&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;8.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Method Injection&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;9.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;IOC -&amp;gt;DL&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;10.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;-&amp;gt;DI -&amp;gt; setter injection, Constructor Injection, Method Injection&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 56pt; TEXT-INDENT: -18pt; mso-para-margin-left: 0gd; mso-list: l0 level1 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;4.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Spring AOP(Basic Concept, Aspect Separation, AOP)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 78pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level2 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;A.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Programming Paradigm&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;i.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Procedure programming &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;C,Pascal, Cobol&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;ii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Object Oriented Programming&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;JAVA, C++, C#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Declarative Programming&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;HTML, XML&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;프로그램을 할 수 있는 언어로 가능&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iv.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;Aspect Oriented Programming &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;è&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt; &lt;/SPAN&gt;돋보기가 있는 부분만 자세하게 보이고 나머지는 안보임&lt;SPAN lang=EN-US&gt;. // &lt;/SPAN&gt;관점&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;시점&lt;SPAN lang=EN-US&gt;, (&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;내가 보고 싶은 곳만 보인다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;JAVA, C# &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Aspect Separation&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 138pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level5 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;A.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Resource Layer&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 138pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level5 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;B.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Bossiness Layer&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 138pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level5 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;C.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Presentation Layer&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;3.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Vertical Separation&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 138pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level5 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;A.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Model A&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 138pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level5 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;B.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Model B&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 138pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level5 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;C.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Model C&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 78pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level2 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;B.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;AOP&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;i.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Aspect Oriented Programming&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;ii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;공통의 관심사항을 적용해서 발생하는 의존관계의 복잡성과 코드 중복을 해소해주는 프로그래밍 기법&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;공통사항과 핵심 로직을 분리&lt;SPAN lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;iv.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Logging, Exception, Transaction&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;v.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Advice&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;공통사항이 언제 실행되는지 정의&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;vi.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Joinpoint&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;Advice&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;를 적용 가능한 시점&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;vii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;PointCut&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;JoinPoint&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;의 부분집합&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;실제로&lt;SPAN lang=EN-US&gt; Advice&lt;/SPAN&gt;가 적용되는&lt;SPAN lang=EN-US&gt; JoinPoint&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;를 나타낸다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;viii.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Weaiving&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;Advice&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;를 핵심 로직에 적용하는 행위&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;ix.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;Aspect&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US&gt;Advice&lt;/SPAN&gt;와 &lt;SPAN lang=EN-US&gt;Pointcut&lt;/SPAN&gt;을 합쳐서 하나의&lt;SPAN lang=EN-US&gt; Aspect&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;라고 한다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;여러객체에 공통으로 적용되는 공통 관심사항&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 74pt; TEXT-INDENT: 24pt; mso-para-margin-left: 0gd&quot;&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;*Aspect&lt;/SPAN&gt;를 가지고&lt;SPAN lang=EN-US&gt; Weaiving&lt;/SPAN&gt;를 한다&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;x.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;Application &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;이 다양한 관점으로 분해&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;핵심 관심사&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 138pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level5 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;A.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;각모듈에서 수행하여야 하는 기본적이고 대표적인 업무&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 138pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level5 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;B.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;실제 업무 로직&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;2.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;횡단 관심사&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;3.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;여러 개의 모듈에 걸치는 시스템의 부가적인 업무&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;4.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;로깅 사용자인증&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;성능관리 등의 기능&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;5.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;B style=&quot;mso-bidi-font-weight: normal&quot;&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;AOP&lt;/SPAN&gt;는&lt;SPAN lang=EN-US&gt; OOP&lt;/SPAN&gt;를 대체하는 것이 아니라 &lt;SPAN lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 98pt; TEXT-INDENT: -98pt; mso-para-margin-left: 0gd; mso-list: l0 level3 lfo1; mso-text-indent-alt: -20.0pt&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;xi.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;업무 로직에서 직접 호출하는 것이 아니라&lt;SPAN lang=EN-US&gt; Aspect&lt;/SPAN&gt;를 활용하여 컴파일 시나 런타임시에&lt;SPAN lang=EN-US&gt; Weaving&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;과정을 거쳐 하나의 시스템으로 조립되는 것이 가능하게 해준다&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style=&quot;MARGIN: 0cm 0cm 0pt 118pt; TEXT-INDENT: -20pt; mso-para-margin-left: 0gd; mso-list: l0 level4 lfo1&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US style=&quot;mso-fareast-font-family: &#039;맑은 고딕&#039;; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &#039;맑은 고딕&#039;; mso-bidi-theme-font: minor-latin&quot;&gt;&lt;SPAN style=&quot;mso-list: Ignore&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;1.&lt;/FONT&gt;&lt;SPAN style=&quot;FONT: 7pt &#039;Times New Roman&#039;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT size=2&gt;클래스&lt;SPAN lang=EN-US&gt;(&lt;/SPAN&gt;핵심관심사&lt;SPAN lang=EN-US&gt;), Aspect(&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;횡단관심사&lt;/FONT&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT size=2&gt;) &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt; AOP Weaver &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=&quot;맑은 고딕&quot; size=2&gt;시스템&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0cm 0cm 0pt&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;o:p&gt;&lt;FONT face=&quot;맑은 고딕&quot; color=#000000 size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0cm 0cm 0pt&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;o:p&gt;&lt;FONT face=&quot;맑은 고딕&quot; color=#000000 size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0cm 0cm 0pt&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;o:p&gt;&lt;FONT face=&quot;맑은 고딕&quot; color=#000000 size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0cm 0cm 0pt&quot;&gt;&lt;SPAN lang=EN-US&gt;&lt;o:p&gt;&lt;FONT face=&quot;맑은 고딕&quot; color=#000000 size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0cm 0cm 0pt&quot;&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;Transaction :&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;POJO&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt; Object&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;component&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style=&quot;FONT-FAMILY: Wingdings; mso-ascii-font-family: &#039;맑은 고딕&#039;; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: &#039;맑은 고딕&#039;; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;&lt;SPAN style=&quot;mso-char-type: symbol; mso-symbol-font-family: Wingdings&quot;&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;java beans&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0cm 0cm 0pt&quot;&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN lang=EN-US&gt;*JSP : object&lt;/SPAN&gt;를 생성 할 수 없기 때문에 &lt;SPAN lang=EN-US&gt;Container&lt;/SPAN&gt;를 사용하여&lt;SPAN lang=EN-US&gt; Object&lt;/SPAN&gt;를 관리 해야 한다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;br /&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-96-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-news-widget&quot; style=&quot;width: 100%; text-align: center&quot;&gt;
						&lt;embed src=&quot;http://api.v.daum.net/static/recombox3.swf?nid=7140346&quot; quality=&quot;high&quot; bgcolor=&quot;#ffffff&quot; width=&quot;67&quot; height=&quot;80&quot; type=&quot;application/x-shockwave-flash&quot;&gt;&lt;/embed&gt;&lt;/div&gt;</description>
			<category>J2EE</category>
			<category>ASPECT</category>
			<category>concept</category>
			<category>JDBC</category>
			<category>Spring</category>
			<category>tapestry</category>
			<category>개념</category>
			<author>들기름왕자</author>
			<guid>http://wmp.kr/96</guid>
			<comments>http://wmp.kr/entry/Spring-Conept#entry96comment</comments>
			<pubDate>Sat, 22 May 2010 18:00:41 +0900</pubDate>
		</item>
		<item>
			<title>1. 서문 &amp; 언터프라이즈 환경의 서블릿</title>
			<link>http://wmp.kr/entry/1-%EC%84%9C%EB%AC%B8-%EC%96%B8%ED%84%B0%ED%94%84%EB%9D%BC%EC%9D%B4%EC%A6%88-%ED%99%98%EA%B2%BD%EC%9D%98-%EC%84%9C%EB%B8%94%EB%A6%BF</link>
			<description>ㅇ 누구를 위한 책인가 ? &lt;br /&gt;
&amp;nbsp;&amp;nbsp; - 이 책은 자바 언어와 자바 핵심 API에 익숙한 개발자들을 대상으로 한다. &lt;br /&gt;
ㅇ 이책에서 다루고 있는 내용&lt;br /&gt;
&amp;nbsp;&amp;nbsp; - 엔터프라이즈 환경에서 서블릿을 사용하기 적합한 곳과 사용법에 대한 전반적인 개념 설명으로 시작한다.&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; - 2,3장에서는 서블릿 API를 다룬다.&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; - 4장에서는 웹 애플리케이션의 구조와 웹 서버에 배치하는 방법을 알아본다 .&lt;br /&gt;
&amp;nbsp;&amp;nbsp; - 5-7장에서는 서블릿의 강력한 특징 중 일부분인 새션관리, 서블릿 영속성, 필터에 대해서 알아 볼것이다.&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; - 8장에서는 자바 서블릿을 보완하는 기술인 JSP에 대해서 알아 볼것이다.&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; - 9-11장에서는 실제 실행하는 환경에 웹 애플리케이션을 배치할 때 발생되는 문제들에 대해서 알아보게 된다. 디버깅 방법에 대해서 알아보고, 틀래스 로딩과 동기화를 고려하지 않았을때 발생될수 있는 문제점들을 알아볼것이다.&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; - 12,13장에서는 성능과 유지보수에 영향을 줄수 있는 효과적인 웹 애플리케이션 설계 방법에 대해서 알아본다. 좋은 애플리케이션을 만들기 위해 사용되는 여러가지 패턴들에 대해서 알아보고, 웹 애플리케이션의 성능과 확장성을 개선하기 위해 사용하는 테크닉과 도구들에 대해서 알아볼것이다.&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; - 마지막으로 14장에서는 웹서비스의 정보에 접근하는 에이전트로 서블릿을사용하는 방법에 대해서 알아볼것이다. &lt;br /&gt;
&lt;br /&gt;이책의 소스 코드를 다운로드 하는 방법&lt;br /&gt;
&lt;A href=&quot;http://www.wrox.com/&quot;&gt;http://www.wrox.com/&lt;/A&gt;에 접속하여, 검색 기능을 이요하면 이책의 코드를 다운로드 할수 있다. &lt;br /&gt;
&lt;br /&gt;1, 엔터프라이즈 환경의 서블릿&lt;br /&gt;
자바는 분산 프렛폼에서 사용할수 있는 이미 검증된기술이다. 이책을 읽고 있는 독자들은 이미 J2SE에 익숙할거싱다. 이책에서 초점을 맞추어 진행 할 내용은 J2EE이다. 좀더 정확하게 말하자면, J2EE의 한 부분인 자바 서블릿 2.3API에 대해서 자세하게 다룰 것이다. &lt;br /&gt;
J2SE를 기반으로 한 J2EE는 엔터프라이즈 애플리케이션개발과 배치에 필요한 API와 서비스들을 제공한다. J2SE와 J2EE의 서비스와 라이브러리를 이용하면 플래폼 독립적인 웹 서기반 애플리케이션 개발을 쉽게 할수 있다. 그리고 J2EE 플렛폼에서는 J2EE애플리케이션이 설치되고 작동될 환경을 서버 벤더가 제공할수 있다. &lt;br /&gt;
&amp;nbsp;- 분산 애플리케이션으로 앤터프라이즈 아키텍처를 구성하는 방법과 웹 애플리케이션이 포함되는 계층에 대해서 알아본다. &lt;br /&gt;
&amp;nbsp;- J2EE아키텍처가 웹 컨테이너와 자바 서블릿을 이용하여 쉽게 웹 개발을 하는 방법과 서블릿 개발자들이 애플리케이션을 개발하면서 필요한 J2EE서비스와 라이브러리에 대해 알아본다. &lt;br /&gt;
&amp;nbsp;- 서블릿 2.4 스펙을 이용하여 자바 서블릿으로 웹 애플리케이션을 개발할때 얻을수 잇는 장점에 대해서 알아본다. &lt;br /&gt;
&amp;nbsp;- 컨테이너 제작 업체와 개발자가 서블릿 스펙을 구현할때 각자의 역할에 대해서 이야기 하며, 서블릿 스펙의 참조 구현 웹 컨테이너 / 서버인 톰캣을 소개한다. &lt;br /&gt;
&amp;nbsp;- 이장의 마무리는 앤터프라이즈 애플리케이션에서 서블릿의 역할, 중요성, 적절함 등에 대해서 알아본다. &lt;br /&gt;
&lt;br /&gt;ㅇ 네트워크와 프로토콜&lt;br /&gt;
모든 시스템은 유선등의 물리적인 네트워크로 서로 연결된다. 이러한 네트워크는 컴퓨터 시스템과 그안에서 작동되는 소프트웨어들 사이에 커뮤니케이션을 위한 연결을 제공한다. 기본적인 네트워크 토폴로지들은 아래 내용과 같다. &lt;br /&gt;
&amp;nbsp;- 스타 토폴로지 : 허브라고 불리는 중심점이 되는 컴퓨터에 연결시키는데 사용된다. &lt;br /&gt;
&amp;nbsp;- 링 토폴로지 : 각각의 컴퓨터들이 막힌 루프형태로 서로 연결되어 있다. &lt;br /&gt;
&amp;nbsp;- 공유된 하나의 통로를 이용하여 시스템 커뮤니케이션을 한다. &lt;br /&gt;
이 토폴로지들은 주로 LAN환경에서 사용된다. 이러한 토폴로지들은 가장 일반적인 구조이며, 서로 조합되거나 파생된 형태의 다른 토폴로지도 존재한다. &lt;br /&gt;
&lt;br /&gt;프로토콜이란 커뮤니케이션을 위한 규칙의 집합이다. 많은 프로토콜들이 공통 표준과 메시지 형식을 지정하여 개발되었기 때문에, 서로 다른 시스템간에 정보와 데이터를 교환할수 있다. 이러한 프로토콜은 특정 서비스를 제공하도록 설계되었으며, 실뢰성있는 네트워킹 서비스를 제공하기 위하여 계층으로 되어 있다. &lt;br /&gt;
물리적 단계에서는 하드웨어적인 물리적 연결이 통신하는 컴퓨터들 사이에 놓이게 된다. 그리고, 필수적으로 네트워크 카드와 유무선 연결이 포함된다. 이러한 연결은 컴퓨터간에 전달하는 메시지가 전달될 매체를 제공된다. &lt;br /&gt;
&lt;br /&gt;네트워크 레이어에서는 컴퓨터간의 커뮤니케이션을 수비게 해주는 이더넷과 같은 프로토콜을 구현하며, 데이터를 프레임이라는 단위로 나누어 네트워크로전송하는것을 다룬다. 또한 데이터 전송크기와 큰 메시지의 분할과 재조립 방법을 결정혐, 네트워크에 문제가 발생하였을때 처리할 방법도 결정하게 된다. &lt;br /&gt;
시스템에서 전송된 메시지들은 계층화된 프로토콜에 쌓여서 네트워크에 있는 다른 시스템으로 전송되며, 메시지를 받은 시스템에서는 반대로 메시지의 프로토콜을 제거한다. 논리적으로 각 레이어는 상대 컴퓨터의 동일한 레이어와 통신하게 된다. &lt;br /&gt;
&lt;br /&gt;TCP/IP&lt;br /&gt;
IP는 패킷의 크기를 결정하고 각 패킷이 목적지로 찾아가는 매커니즘을 정의하게 된다. 이 프로토콜은 연결된 컴퓨터의 IP주소를 이용하여 데이터가 네트워크를 통해 목적지로 찾아 갈수 있게 한다. 그리고 데이터의 유실이나 도착 순서가 바뀌는 등의 문제 ㅁ때문에 비교적 신뢰할수 없는 프로ㅗ콜이기도 하다. TCP는 연결성 통신으로 애플리케이션 레이어를 제공한다. 그리고 데이터의 모든 패킷을 받고 정확한 순서로 재조립하기 땜분에 IP와는 다르게 신뢰성이 있다. &lt;br /&gt;
&lt;br /&gt;HTTP&lt;br /&gt;
주로 애플리케이션 레이어의 통신방법으로 제공된다. 웹애플리케이션에서 가장 많이 사용되는 프로토콜은 HTTP이다. 웹 컨테이너와 J2EE 애플리케이션들은 사용자의 요청, 응답 프로토콜로 HTTP를 지원해야 한다. 웹의 가장 일반적인 최상위 프로토콜이기 때문에 HTTP를 사용하는 애플리케이션은 통신하려는 대부분의 서버들과 메시ㅣ지 교환이 가능하다.&lt;br /&gt;
HTTP는 송수신 요청을 정의된 형식으로 제공하며, 서로 다른 시스템과 언어로 개발된 애플리케이션들이 통신할수 있는 공통 언어의 역할을 하게 된다. &lt;br /&gt;
HTTP는 다른 프로토콜보다 많은 서버와 클라이언트가 사용하룻 이슨 웹의 표준언어이며, 대부분의 웹 서블릿 개발에 사용되는 궁극적인 프로토콜이다. &lt;br /&gt;
&lt;br /&gt;ㅇ계층화된 아키텍쳐&lt;br /&gt;
엔터프라이즈 애플리이케이션 개발 방식이 점점 3계층이상의 다계층 애플리케이션 모델로 많이 변화되고 있다. 애플리케이션을 논리적으로 서로 다른 여러 계층으로 분리 시키는것은 아래와 같은 장점이 있다. &lt;br /&gt;
&amp;nbsp;- 관련된 규칙과 각 계층에 적합한 기능을 모듈로 캡슐화 할수 있으며, 쉬운 유지보수와 개발이 가능하다. &lt;br /&gt;
&amp;nbsp;- 모듈화는 컴포넌트 기반 개발을 통하여 비즈니스, 프리젠테이션 등 로직의 유연성과 재사용성에 도움을 준다. &lt;br /&gt;
&amp;nbsp;- 다른 계층간의 관계와 제공해야 할 서비스들을 미리 정의한다면, 각 개발자들이 자신이 갖고 있는 기술들을 특정 계층에만 초점을 맞추어 개발 할수 있다. &lt;br /&gt;
&lt;br /&gt;클라이언트 계층 : 데이터와 정보를 사용자에게 설명하거나 보여주는 계층이다. &lt;br /&gt;
서버와 중간계층 : 클라이언트가 요청한 데이터나 액션을 처리하여 응답한다. 여기서는 일반적으로 핵심 애플리케이션 로직이 존재하게 된다. 그러나 중간계층은 다시 두개의 계층으로 구분되게 된다. &lt;br /&gt;
&lt;br /&gt;비즈니스 계층 : 비즈니스 로직을 책임지는 계층이다. 애플리케이션 신뢰도를 위해 비즈니스규칙을 구현하는 것이 중요하다.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;웹 계층(프리젠테이션 계층) : 비즈니스 데이터를 클라이언트에게 보여주기 위해서 재가공하는 계층이다. 클라리언트의 요청을 받아 해당되는 비즈니스 로직이 있는 비즈니스 계층으로 데이터를 포워드 한다. &lt;br /&gt;
&lt;br /&gt;ㅇ J2EE 플랫폼&lt;br /&gt;
자바는 스펙에 따라 표준화도니 많은 서비스와 API가 있기 때문에 개발자가 쉽게 이용할수 있다. 다시말해 표준에 맞는 서버에서 개발한다면, 다른 벤더의 서버에서도 별 다른 어려움 없이 개발된 애플리케이션을 배치 할수 있다는 의미이다. &lt;br /&gt;
J2EE 애플리케이션의 자바 기반 클라이언트는 씬 클라이언트의 구조를 이용한다. 씬 클라이언트란 서버와 통신하는 비교적 가벼운 클라이언트 애플리케이션을 의미한다. &lt;br /&gt;
&lt;br /&gt;ㅇ 웹 컨테이너&lt;br /&gt;
웹 애플리케이션을 위한 웹 컴포넌트인 서블릿과 JSP페이지의 실행을 관리하는 자바 실행환경이다. 그리고 웹 서바나 애플리케이션 서벙듸 일부분으로 요청과 응답을 만드는 네트워크 서비스를 제공한다. 웹 컨테이너는 반드시 HTTP를 지원해야 하며, 부가적으로 다른 종류의 프로토콜을 지원할수 있고, 웹 서버의 일부분으로 제작되거나 웹 서버의 플러그인 컴포넌트로 제작될수 도 있다. 웹 컨테이너는 서블릿과 JSP 인스턴스의 라이프 사이클과 실행을 관리한다. &lt;br /&gt;
&lt;br /&gt;ㅇ EJB 컨테이너&lt;br /&gt;
엔터프라이즈 자바빈즈는 비즈니스 규칙과 로직이 있는 비즈니스 컴포넌트이다. EJB에는 두가지 기본적인 종류가 있으며, 구중 하나는 데이터 자체와 강하게 결합되어 데이터 접근과 영속성 관리를 하는 엔티티빈이다. 다른 하나는 세션빈으로 로직을 표현하며, 클라이언트 요청을 처리하거나 데이터 처리 로직을 담당한다. &lt;br /&gt;
EJB 컴포넌트는 EJB컨테이너 안에서 실행된다. EJB컴포넌트는 재사용 가능하며 최적화를 위해 인스턴스가 풀링 되고 재활용되도록 설계하였다. EJB컨테이너는 애플리케이션을 위해서 EJB컴포넌트의 실행과 폴링을 관리할 책임이 있다. &lt;br /&gt;
&lt;br /&gt;ㅇ 자바 서블릿&lt;br /&gt;
서블릿은 동적으로 요청을 처리하고 응답을 생성하는 자바 클래스이다. 결국 요청에대해서 동적 HTML 페이지를 응답으로 생성한다는 뜻이다. 그러나, 애플릿이나 자바 애플리케이션에 직렬화된 자바 객체를 응답으로 생성한다는 뜻이다. 그러나, 애플릿이나 자바 애플리케이션에 직렬화된 자바 객체를 응답으로 보낼수 있으며, XML 같은 다른 형태로도 응답의 데이터를 보낼수 있다. 서블릿은 서블릿 컨테이너에서 동작하며 컨테이너가 제공하는 서비스에 접근할수 있다. &lt;br /&gt;
&lt;br /&gt;ㅇ서블릿 라이프 사이클&lt;br /&gt;
1. 컨테이너는 서블릿이 요청을 처리하기 전에 초기화 한다. &lt;br /&gt;
2. 서블릿 컴포넌트는 클라이언트 계층의 요청을 받는다. 컨테이너가 실제적으로 요청을 받아 적절한 컴포넌트의 인스턴스와 연결하고, 형식화된 요청과 응답 객체를 컴포넌트에 전달한다. &lt;br /&gt;
3. 서블릿은 비즈니스 계층의 로직의 도움을 받거나 직접 데이터베이스나 엔터프라이즈 인포메이션 계층에서 정보를 추출하여 요청을 처리한다. &lt;br /&gt;
4. 처리가 끝나면 클라이언트에게 응답을 리턴한다. &lt;br /&gt;
5. 최정적으로 컨테이너는 생성된 서블릿 인스턴스를 종료한다. &lt;br /&gt;
&lt;br /&gt;ㅇ 서블릿 통신&lt;br /&gt;
1. 요청/응답 사이클 중에 클라이언트와 하는 통신&lt;br /&gt;
2. 컨테이너 호나경에 관한 정보나 JNDI리소스에 접근하기 위해서 서블릿 테이너와 하는 통신&lt;br /&gt;
3. 다른 서블릿이나 EJB같은 서버의 다른 리소스와 하는 통신&lt;br /&gt;
4. 요청을 처리하기 위해서 데티어베이스나 레거시 시스템, EIS와 하는 통신&lt;br /&gt;
&lt;br /&gt;일반적으로는 서블릿의 역할은 클라이언트와의 통신이다. 컩테이너와의 통신은 클라이언트에게 리턴하기 위하여 데이터를 만드는 것과 달리 서비스를 제공하는 리소스에 접근한다. 실제로 유용하게 사용하기 위해서 스블릿은 다른 서버 컴포넌트나 데이터베이스 같은 외부 백엔드 리소스와도 통신한다. &lt;br /&gt;
&lt;br /&gt;ㅇ서블릿-클라이언트 통신&lt;br /&gt;
클라이언트와의 통신은 여러 형태로 할수 있짐나, 텍스트기반의 통신을 한다. &lt;br /&gt;
HTTP통신에서 일부 또는 모든 정보 파라미터는 요청의 일부분으로 전달된다. 서버의 응답으로 부터 클라이언트에 리턴할수 있는 데이터의 형식은 클라이언트에 따라서 다르다. &lt;br /&gt;
&lt;br /&gt;ㅇ서블릿의 이점&lt;br /&gt;
동적으로 생성되는 페이지가 필요하였고 CGI가 개발되어 이러한 역할을 수행하였다. CGI는 분리된 프로세스로 동작하는 CGI프로그램으로 요청을 넘겨 처리하게 되어 있다. 그러나, CGI 스크립트를 분리된 새로운 프로세스로 실행시키기 위해서는 처리시간이나 서버 리소스가 낭비되고 결국 확장성에 문제가 있게 되었다. 한번 실행된후에는 서버의 리소스나 정보에 접근할수 없다는 단점을 갖고 있다. 그리고 CGI 스크립트는 데이터베이스 커넥션 같은 리소스를 공유하거나 풀링 할수 없기 대문에 성능상의 문제가 있다. &lt;br /&gt;
이러한 CGI를 대체하기 위해여 서버 벤더들이 만든 기술이 있다. &lt;br /&gt;
CGI와 자바의 가장 분명한 차이는 프로세스 실행방식이다. CGI 스크립트는 개별적인 프로세스로 동작하는 데 비하여 자바 서블릿은 서버 프로세서ㅡ의 일부로 동작하기 때문에, 확실한 성능상의 이익이다. 그리고 서블릿 인스턴스는 각각의 호출 사이에 유지되기 때문에 매번 호출될 때마다 다시 생성할 필요가 없다. 또한 서블릿은 서블릿 컨테이너와 서블릿이 실행되는 실행 환경에 접근할수 잇다. 이것은 서블릿이 데이터베이스 같은 공유자원에 접근할수 있다는 뜻이다. &lt;br /&gt;
&lt;br /&gt;서블릿은 요청-응답 형식의 모든 CGI서비스를 제공하며, J2SE, API 서블릿 API 전체 J2EE API를 포함하여 여러가지 자바 라이브러리를 사용할수 있다. 그리고 외부 벤더가 제공하는 JDBC 드라이버나 XML 파서 같은 외부의 다른 API들도 사용할수 있으며, 이러한 라이브러리와 API는 플렛폼과 서버에 독립적으로 사용할수 있다. &lt;br /&gt;
&lt;br /&gt;ㅇ프로토콜의 유연성&lt;br /&gt;
&amp;nbsp;- javax.servlet&lt;br /&gt;
&amp;nbsp;- javax.servlet.http&lt;br /&gt;
&lt;br /&gt;ㅇJSP 컴포넌트&lt;br /&gt;
JSP 는 서블릿 기술을 웹 컨텐츠를 생성하는 일부분으로써 확장한 기술이다. JSP는 directive 태그, scriptlets로 불리는 일반 자바코드와 HTML을 포함할수 있으며 태그와 scrptlet은 동적 컨텐츠를 생성하는데 사용된다. JSP페이지는 최초로 호출할때 서블릿으로 컴파일되어 실행된다. &lt;br /&gt;
&lt;br /&gt;J2EE Connector아키텍처 있는 표준 아키텍처를 제공한다. 즉, 프로그래머에게 기본 정보 시스템에 접근할수 있는 &lt;br /&gt;
Connector 아키텍처는 개발자들에게 J2EE와 다양한 EIS접근할수 API를 제공하는 것이다. &lt;br /&gt;
J2EE Connector 아키텍처는 엔터프라이즈 정보 시스템과 데이터를 주고 받게 된다. Connector API를 사용하여 엔터프라이즈 정보 시스템에 접근하기 위해서는 데이터베이스를 접근하기위한 JDBC와 유사하게 동작하는 resource adapter가 필요하다. &lt;br /&gt;
&lt;br /&gt;ㅇ자바 트랜잭션 서비스&lt;br /&gt;
JTS는 복잡한 분산 트랜잭션 처리를 위한 API를 제공하고commit과 rollback으로 고수준의 트랜잭션을 제어할수 있게한다. 이러한 트랜잭션 서비스는 여러 데이터베이스를 하나의 트랜잭션으로 관리할 수 있게 한다. 여러 트랜잭션 중에 하나라도 실패한다면 모든 트랜잭션이 rollback 되고 반대로 실패한 트랜잭션이 없으며 전체 트랜잭션이 commit 되게 한다. &lt;br /&gt;
&lt;br /&gt;ㅇ웹애플리케이션에서 서블릿의 역할&lt;br /&gt;
1. 적절한 요청 파라미터를 추출하여 데이터베이스 쿼리를 만든다. &lt;br /&gt;
2. 데이터베이스와 연결하고 데이터베이스로부터 결과를 받는다. &lt;br /&gt;
3. 마지막으로 클라이언트에 적하ㅏㅂ하게 결과를 보여준다. &lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-95-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-news-widget&quot; style=&quot;width: 100%; text-align: center&quot;&gt;
						&lt;embed src=&quot;http://api.v.daum.net/static/recombox3.swf?nid=5582341&quot; quality=&quot;high&quot; bgcolor=&quot;#ffffff&quot; width=&quot;67&quot; height=&quot;80&quot; type=&quot;application/x-shockwave-flash&quot;&gt;&lt;/embed&gt;&lt;/div&gt;&lt;br /&gt;&lt;iframe src=&quot;http://api.v.daum.net/open/related_news?news_id=5582341&amp;display_type=widget&amp;skin=1&amp;frameContents=both&quot; style=&quot;width:100%;height:160px;&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;</description>
			<category>J2EE</category>
			<author>들기름왕자</author>
			<guid>http://wmp.kr/95</guid>
			<comments>http://wmp.kr/entry/1-%EC%84%9C%EB%AC%B8-%EC%96%B8%ED%84%B0%ED%94%84%EB%9D%BC%EC%9D%B4%EC%A6%88-%ED%99%98%EA%B2%BD%EC%9D%98-%EC%84%9C%EB%B8%94%EB%A6%BF#entry95comment</comments>
			<pubDate>Mon, 25 Jan 2010 23:49:02 +0900</pubDate>
		</item>
		<item>
			<title>세번째 자바 이야기 - Professional Java Sservlets 2.3</title>
			<link>http://wmp.kr/entry/%EC%84%B8%EB%B2%88%EC%A7%B8-%EC%9E%90%EB%B0%94-%EC%9D%B4%EC%95%BC%EA%B8%B0-Professional-Java-Sservlets-23</link>
			<description>&lt;P&gt;&lt;FONT color=#000000&gt;C언어를 다 보고 나서 이젠 다음 것을 공부하기 위해 미루고 미루던 Servlet에 대해서&amp;nbsp;공부하기로 했다. &lt;br /&gt;
그래서 책을 고르다 고르다 보니. 옛날책을 고르게 되었다. &lt;br /&gt;
우리나라는 Servlet만을 다룬 책이 별로 없어 외국의 번역본을 보기로 했다. &lt;br /&gt;
원서를 샀지만. 빠르게 보고 다른것을 봐야 하는 일정때문에 이책을 고르기로 했다. 1,2 장을 보았는데 이책은 정말 쉽게 되어 있었다. Servlet에 기본적으로 쓰이는 문법들을 왜 써야 하는지에 대한 정보가 정말 마음에 들었으며, 요즘 JSP만을 배우는 학생들에게 기본을 배울수 있는 좋은 책이라는것을 알게 해주는 책이다. &lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://cfile24.uf.tistory.com/image/166AB6264B5D8A86A999FD&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;05000186_Gl.jpg&quot; height=&quot;377&quot; width=&quot;300&quot;/&gt;&lt;/div&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;br /&gt;
&lt;br /&gt;&lt;FONT color=#0000ff&gt;이 책이 다루는 내용&lt;br /&gt;
&lt;/FONT&gt;
&lt;LI&gt;서블릿 컨테이너와 서블릿 컨테이너가 제공하는 서비스&lt;br /&gt;

&lt;LI&gt;Tomcat에서 웹 애플리케이션 개발과 배치 방법&lt;br /&gt;

&lt;LI&gt;서블릿 상태 저장&lt;br /&gt;

&lt;LI&gt;보안과 컨테이너 인증&lt;br /&gt;

&lt;LI&gt;서블릿 디버깅&lt;br /&gt;

&lt;LI&gt;클래스로딩과 동기화가 웹 애플리케이션 동작에 주는 영향&lt;br /&gt;

&lt;LI&gt;웹 애플리케이션 성능 최적화&lt;br /&gt;

&lt;LI&gt;웹 서비스 에이전트로 서블릿을 사용하는 방법&lt;br /&gt;

&lt;CENTER&gt;
&lt;TABLE cellSpacing=0 cellPadding=0 width=450 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD align=middle&gt;
&lt;P&gt;&lt;FONT class=g1&gt;&lt;B&gt;&lt;/B&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT class=g1&gt;&lt;B&gt;&lt;/B&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT class=g1&gt;&lt;B&gt;목 차 &lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD align=left&gt;&lt;FONT color=#666666 size=2&gt;&lt;br /&gt;
&lt;B&gt;서문&lt;/B&gt;&lt;br /&gt;
&lt;br /&gt;누구를 위한 책인가?&lt;br /&gt;
이 책에서 다루고 있는 내용&lt;br /&gt;
이 책을 읽기 위해 필요한 것들&lt;br /&gt;
표기 방법&lt;br /&gt;
고객지원&lt;br /&gt;
이 책의 소스 코드를 다운로드하는 방법&lt;br /&gt;
오탈자&lt;br /&gt;
P2P 온라인 포럼&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;B&gt;제 1 장 엔터프라이즈 환경의 서블릿&lt;/B&gt;&lt;br /&gt;
&lt;br /&gt;엔터프라이즈 아키텍처&lt;br /&gt;
네트워크와 프로토콜&lt;br /&gt;
계층화된 아키텍처&lt;br /&gt;
J2EE 컨테이너 아키텍처&lt;br /&gt;
J2EE 컨테이너 종류&lt;br /&gt;
J2EE 웹 컴포넌트&lt;br /&gt;
자바 서블릿&lt;br /&gt;
JSP 컴포넌트&lt;br /&gt;
다른 J2EE API를 서블릿과 함께 사용하기&lt;br /&gt;
서블릿으로 정보 소스에 접근하기&lt;br /&gt;
J2EE의 메시징&lt;br /&gt;
서블릿 보안과 JAAS&lt;br /&gt;
JNDI&lt;br /&gt;
JAXP&lt;br /&gt;
웹 애플리케이션에서 서블릿의 역할&lt;br /&gt;
전형적인 서블릿 기반 애플리케이션&lt;br /&gt;
요약&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;B&gt;제 2 장 서블릿 2.3 API&lt;/B&gt;&lt;br /&gt;
&lt;br /&gt;javax.servlet 패키지&lt;br /&gt;
Servlet 인터페이스&lt;br /&gt;
서블릿의 라이프 사이클&lt;br /&gt;
서블릿의 정보 얻기&lt;br /&gt;
GenericServlet 클래스&lt;br /&gt;
라이프 사이클 메소드&lt;br /&gt;
서블릿 환경 메소드&lt;br /&gt;
유틸리티 메소드&lt;br /&gt;
기본 서블릿 만들기&lt;br /&gt;
Tomcat에서 서블릿 컴파일과 실행하기&lt;br /&gt;
요청&amp;shy;응답 사이클&lt;br /&gt;
요청&amp;shy;응답 인터페이스와 래퍼 클래스&lt;br /&gt;
ServletRequest 인터페이스&lt;br /&gt;
ServletResponse 인터페이스&lt;br /&gt;
입출력 스트림&lt;br /&gt;
서블릿&amp;shy;컨테이너 커뮤니케이션&lt;br /&gt;
ServletConfig 인터페이스&lt;br /&gt;
ServletContext 인터페이스&lt;br /&gt;
ServletContext 라이프 사이클 클래스&lt;br /&gt;
부가적인 인터페이스&lt;br /&gt;
스레딩과 SingleThreadModel 인터페이스&lt;br /&gt;
RequestDispatcher 인터페이스&lt;br /&gt;
서블릿 익셉션 클래스&lt;br /&gt;
ServletException 클래스&lt;br /&gt;
UnavailableException 클래스&lt;br /&gt;
Personal Portal 웹 애플리케이션&lt;br /&gt;
Personal Portal 웹 애플리케이션 구현하기&lt;br /&gt;
애플리케이션 실행하기&lt;br /&gt;
요약&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;B&gt;제 3 장 HTTP 서블릿&lt;/B&gt;&lt;br /&gt;
&lt;br /&gt;애플리케이션 레이어 프로토콜&lt;br /&gt;
HTTP&lt;br /&gt;
HTTP 메소드&lt;br /&gt;
HTTP 헤더&lt;br /&gt;
HTTP 상태 코드&lt;br /&gt;
HTTP 인증&lt;br /&gt;
HTTP와 서블릿&lt;br /&gt;
HttpServlet 클래스&lt;br /&gt;
HTTP 요청과 응답&lt;br /&gt;
HTTP 서블릿 구현하기&lt;br /&gt;
HttpRequestResponseServlet 구현하기&lt;br /&gt;
QuizServlet 구현하기&lt;br /&gt;
서블릿과 커스텀 클라이언트&lt;br /&gt;
애플리케이션 설계하기&lt;br /&gt;
클라이언트 구현하기&lt;br /&gt;
Common 클래스 구현하기&lt;br /&gt;
애플리케이션 구현하기&lt;br /&gt;
요약&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;B&gt;제 4 장 웹 애플리케이션 배치하기&lt;/B&gt;&lt;br /&gt;
&lt;br /&gt;웹 애플리케이션이란?&lt;br /&gt;
웹 애플리케이션의 구조&lt;br /&gt;
WAR&lt;br /&gt;
ServletContext&lt;br /&gt;
Tomcat에서 컨텍스트 정의하기&lt;br /&gt;
웹 애플리케이션의 라이프 사이클&lt;br /&gt;
디플로이먼트 디스크립터&lt;br /&gt;
디플로이먼트 디스크립터 예제&lt;br /&gt;
서블릿 정의와 매핑&lt;br /&gt;
서블릿 매핑&lt;br /&gt;
서블릿 컨텍스트 초기화 파라미터&lt;br /&gt;
에러 페이지&lt;br /&gt;
환영 페이지&lt;br /&gt;
파일 기반 보안&lt;br /&gt;
태그 순서&lt;br /&gt;
디플로이먼트 디스크립터의 유효성 검사&lt;br /&gt;
예제 웹 애플리케이션 배치하기&lt;br /&gt;
상점 시나리오&lt;br /&gt;
고급 배치 이슈&lt;br /&gt;
JAR 종속성&lt;br /&gt;
클래스 로딩&lt;br /&gt;
요약&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;B&gt;제 5 장 세션 핸들링&lt;/B&gt;&lt;br /&gt;
&lt;br /&gt;상태 유지 없는 HTTP의 특징&lt;br /&gt;
클라이언트 구분과 상태 추적을 하는 이유&lt;br /&gt;
세션 관리 방법&lt;br /&gt;
URL 다시 쓰기를 이용한 세션 트래킹&lt;br /&gt;
쿠키를 사용하는 세션 트래킹&lt;br /&gt;
숨긴 폼 필드를 사용해서 세션 트래킹하기&lt;br /&gt;
서블릿 API를 사용하여 세션 관리하기&lt;br /&gt;
HttpSession 인터페이스&lt;br /&gt;
세션 관리 구현하기&lt;br /&gt;
세션 라이프 사이클 이벤트 감지하기&lt;br /&gt;
고급 세션 핸들링&lt;br /&gt;
요약&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;B&gt;제 6 장 서블릿 영속성과 리소스&lt;/B&gt;&lt;br /&gt;
&lt;br /&gt;영속적인 리소스&lt;br /&gt;
데이터베이스&lt;br /&gt;
네이밍과 디렉토리 서비스&lt;br /&gt;
XML&lt;br /&gt;
서블릿 초기화와 환경설정&lt;br /&gt;
초기화 파라미터&lt;br /&gt;
서블릿 XML 환경설정&lt;br /&gt;
JDNI로 리소스 바인딩하기&lt;br /&gt;
JNDI 지원의 특징&lt;br /&gt;
표준 리소스 바인딩&lt;br /&gt;
데이터 소스 바인딩&lt;br /&gt;
내장 데이터 소스 바인딩&lt;br /&gt;
커스텀 데이터 소스 바인딩&lt;br /&gt;
영속적인 리소스 접근하기&lt;br /&gt;
DAO 패턴&lt;br /&gt;
인증 애플리케이션 프레임워크&lt;br /&gt;
JDBC를 사용해서 리소스 접근하기&lt;br /&gt;
LDAP을 사용해서 리소스 접근하기&lt;br /&gt;
서블릿 영속성&lt;br /&gt;
서블릿 상태 저장하기&lt;br /&gt;
세션 상태 저장하기&lt;br /&gt;
요약&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;B&gt;제 7 장 필터&lt;/B&gt;&lt;br /&gt;
&lt;br /&gt;필터란 무엇인가?&lt;br /&gt;
새로운 기능 프로토타이핑하기&lt;br /&gt;
새로운 기능 추가하기&lt;br /&gt;
필터 이해하기&lt;br /&gt;
필터의 논리적 관점&lt;br /&gt;
필터의 물리적 관점&lt;br /&gt;
필터 설정하기&lt;br /&gt;
필터 정의하기&lt;br /&gt;
필터 매핑하기&lt;br /&gt;
필터 연결하기&lt;br /&gt;
필터 사용하기&lt;br /&gt;
필터 로그&lt;br /&gt;
XSLT 전환 필터&lt;br /&gt;
필터 연결하기&lt;br /&gt;
필터 설계하기&lt;br /&gt;
요약&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;B&gt;제 8 장 JSP&lt;/B&gt;&lt;br /&gt;
&lt;br /&gt;JSP 기본&lt;br /&gt;
JSP 스크립트 엘리먼트&lt;br /&gt;
선언문&lt;br /&gt;
스크립릿&lt;br /&gt;
표현식&lt;br /&gt;
JSP 내장 객체&lt;br /&gt;
디렉티브&lt;br /&gt;
page 디렉티브&lt;br /&gt;
include 디렉티브&lt;br /&gt;
JSP 액션&lt;br /&gt;
jsp:include 액션&lt;br /&gt;
jsp:forward 액션&lt;br /&gt;
jsp:param 액션&lt;br /&gt;
JSP 대출 계산기&lt;br /&gt;
JSP 페이지에서 자바빈즈 사용하기&lt;br /&gt;
서블릿과 JSP 함께 사용하기&lt;br /&gt;
데이터베이스 생성하기&lt;br /&gt;
시스템 아키텍처&lt;br /&gt;
아이템 목록 만들기&lt;br /&gt;
아이템 삭제하기&lt;br /&gt;
아이템 편집하기&lt;br /&gt;
아이템 수정하기&lt;br /&gt;
새로운 아이템 추가하기&lt;br /&gt;
애플리케이션 배치, 실행하기&lt;br /&gt;
요약&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;B&gt;제 9 장 보안과 컨테이너 인증&lt;/B&gt;&lt;br /&gt;
&lt;br /&gt;서버측 자바 2 보안 모델&lt;br /&gt;
서버측 정책 파일&lt;br /&gt;
서버측 정책 파일 사용하기&lt;br /&gt;
SSL&lt;br /&gt;
SSL 동작 모델&lt;br /&gt;
Tomcat 4에서 SSL 사용하기&lt;br /&gt;
서블릿 2.3 보안&lt;br /&gt;
보안 접근과 J2EE 비즈니스 로직 &lt;br /&gt;
Tomcat 4의 보안&lt;br /&gt;
컨테이너 관리 보안&lt;br /&gt;
선언을 이용한 보안 사용하기&lt;br /&gt;
MemoryRealm 사용하기&lt;br /&gt;
다이제스트된 패스워드 사용하기&lt;br /&gt;
FORM 기반 인증&lt;br /&gt;
JDBCRealm 사용하기&lt;br /&gt;
다중 인증 요청&lt;br /&gt;
싱글 사인 온&lt;br /&gt;
프로그래밍을 이용한 보안&lt;br /&gt;
요약&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;B&gt;제 10 장 서블릿 디버깅 방법&lt;/B&gt;&lt;br /&gt;
&lt;br /&gt;서블릿 디버깅 이슈&lt;br /&gt;
디버깅 방법&lt;br /&gt;
디버깅 툴&lt;br /&gt;
이벤트 중심 디버깅&lt;br /&gt;
필터로 디버깅하기&lt;br /&gt;
디버깅 필터 구현하기&lt;br /&gt;
디버깅 필터 사용하기&lt;br /&gt;
이벤트 리스너로 디버깅하기&lt;br /&gt;
디버깅 리스너 구현하기&lt;br /&gt;
디버깅 리스너 사용하기&lt;br /&gt;
JPDA로 디버깅하기&lt;br /&gt;
JDPA 디버거 구현하기&lt;br /&gt;
디버그 모드로 서버 실행하기&lt;br /&gt;
JPDA 디버거 사용하기&lt;br /&gt;
JPDA 디버거 출력&lt;br /&gt;
디버깅 결과 시각화하기&lt;br /&gt;
디버깅 결과 시각화 예제&lt;br /&gt;
디버깅 방법 선택하기&lt;br /&gt;
J2SE 1.4의 발전된 로그 기술&lt;br /&gt;
실시간 UML 역공학&lt;br /&gt;
요약&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;B&gt;제 11 장 클래스 로딩과 동기화&lt;/B&gt;&lt;br /&gt;
&lt;br /&gt;클래스 로딩&lt;br /&gt;
서블릿 컨테이너의 클래스 로딩&lt;br /&gt;
배치 구조&lt;br /&gt;
클래스와 다른 리소스의 위치&lt;br /&gt;
Tomcat 4의 클래스 로딩 우선순위&lt;br /&gt;
클래스 로딩이 애플리케이션에 주는 영향&lt;br /&gt;
사용자 추적 애플리케이션&lt;br /&gt;
서블릿 로딩과 리로딩&lt;br /&gt;
스레드와 동기화&lt;br /&gt;
뱅킹 애플리케이션&lt;br /&gt;
단일 스레드 서블릿 사용하기&lt;br /&gt;
서블릿 풀링&lt;br /&gt;
다중 스레드 서블릿&lt;br /&gt;
세션과 컨텍스트 변수를 사용하는 서블릿&lt;br /&gt;
요약&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;B&gt;제 12 장 웹 애플리케이션 설계와 서블릿 패턴&lt;/B&gt;&lt;br /&gt;
&lt;br /&gt;좋은 애플리케이션 설계의 중요성&lt;br /&gt;
유지보수성&lt;br /&gt;
재사용성&lt;br /&gt;
확장성&lt;br /&gt;
J2EE 웹 애플리케이션 설계&lt;br /&gt;
모델 1 아키텍처 소개&lt;br /&gt;
모델 2 아키텍처 소개&lt;br /&gt;
디자인 원칙 문서화&lt;br /&gt;
디자인 패턴 사용하기&lt;br /&gt;
J2EE 패턴&lt;br /&gt;
패턴을 사용하는 이유&lt;br /&gt;
웹 기반 토론 포럼 만들기&lt;br /&gt;
비즈니스 도메인 내의 엔티티&lt;br /&gt;
토론 포럼의 클래스 모델&lt;br /&gt;
모델 1 아키텍처를 사용하여 포럼 구축하기&lt;br /&gt;
토론 주제 보기&lt;br /&gt;
로그인 페이지&lt;br /&gt;
로그인 처리&lt;br /&gt;
응답 보기&lt;br /&gt;
새로 응답 추가하기&lt;br /&gt;
신규 응답 처리하기&lt;br /&gt;
기존 응답 삭제하기&lt;br /&gt;
애플리케이션의 페이지 흐름&lt;br /&gt;
애플리케이션 리팩토링&lt;br /&gt;
모델 2 아키텍처를 사용하여 포럼 구축하기&lt;br /&gt;
Front Controller 패턴&lt;br /&gt;
응답 보기&lt;br /&gt;
로그인 처리&lt;br /&gt;
새로 응답 추가하기&lt;br /&gt;
신규 응답 처리하기&lt;br /&gt;
기존 응답 삭제하기&lt;br /&gt;
Intercepting Filter 패턴 사용하기&lt;br /&gt;
View Helper 패턴&lt;br /&gt;
Service to Worker 패턴 사용하기&lt;br /&gt;
요약&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;B&gt;제 13 장 성능과 확장성&lt;/B&gt;&lt;br /&gt;
&lt;br /&gt;좋은 코딩 방법&lt;br /&gt;
아키텍처 고려사항&lt;br /&gt;
비즈니스 로직 핸들링&lt;br /&gt;
데이터 접근하기&lt;br /&gt;
데이터 캐시하기&lt;br /&gt;
세션 관리&lt;br /&gt;
비동기 커뮤니케이션 사용하기&lt;br /&gt;
로드 밸런싱과 클러스터링&lt;br /&gt;
분석 툴&lt;br /&gt;
스트레스 테스트 툴&lt;br /&gt;
프로파일링 툴&lt;br /&gt;
커스텀 성능 모니터링 툴&lt;br /&gt;
모니터 프레임워크 클래스&lt;br /&gt;
예제 사용하기&lt;br /&gt;
요약&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;B&gt;제 14 장 웹 서비스와 서블릿 에이전트&lt;/B&gt;&lt;br /&gt;
&lt;br /&gt;웹 서비스&lt;br /&gt;
웹 서비스 동작 방식&lt;br /&gt;
SOAP&lt;br /&gt;
웹 서비스 사용하기&lt;br /&gt;
SOAP 요청&lt;br /&gt;
SOAP 응답&lt;br /&gt;
에러 응답&lt;br /&gt;
Apache SOAP&lt;br /&gt;
웹 서비스 배치하기&lt;br /&gt;
Apache Axis&lt;br /&gt;
서블릿 에이전트&lt;br /&gt;
정보 수집&lt;br /&gt;
SOAP 서비스 사용하기&lt;br /&gt;
정보 캐시하기&lt;br /&gt;
집합과 복합&lt;br /&gt;
집합 예제&lt;br /&gt;
샘플링 애플리케이션&lt;br /&gt;
디자인 고려사항&lt;br /&gt;
현재와 미래의 도전자들&lt;br /&gt;
WSDL&lt;br /&gt;
UDDI&lt;br /&gt;
웹 서비스 스택&lt;br /&gt;
트랜잭션과 웹 서비스&lt;br /&gt;
ACID&lt;br /&gt;
XAML과 XLANG&lt;br /&gt;
요약&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;B&gt;부록 A 톰캣 4.0 설치하기&lt;/B&gt;&lt;br /&gt;
&lt;br /&gt;Tomcat 4.0 설치하기&lt;br /&gt;
용어 정리&lt;br /&gt;
기본 Tomcat 설치&lt;br /&gt;
Tomcat 실행하기&lt;br /&gt;
Tomcat 4.0 디렉토리 구조&lt;br /&gt;
Tomcat 4.0 환경설정&lt;br /&gt;
도움 얻기&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;B&gt;부록 B HTTP 레퍼런스&lt;/B&gt;&lt;br /&gt;
&lt;br /&gt;HTTP 버전&lt;br /&gt;
HTTP 트랜잭션&lt;br /&gt;
HTTP 클라이언트 요청&lt;br /&gt;
HTTP 서버 응답&lt;br /&gt;
HTTP 헤더&lt;br /&gt;
MIME 타입&lt;br /&gt;
상태 코드&lt;br /&gt;
추가 정보&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;B&gt;부록 C 서블릿 2.3 API 레퍼런스&lt;/B&gt;&lt;br /&gt;
&lt;br /&gt;javax.servlet&lt;br /&gt;
javax.servlet 인터페이스&lt;br /&gt;
javax.servlet 클래스&lt;br /&gt;
javax.servlet 익셉션&lt;br /&gt;
javax.servlet.http&lt;br /&gt;
javax.servlet.http 인터페이스&lt;br /&gt;
javax.servlet.http 클래스&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
찾아보기&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/CENTER&gt;&lt;/LI&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-94-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-news-widget&quot; style=&quot;width: 100%; text-align: center&quot;&gt;
						&lt;embed src=&quot;http://api.v.daum.net/static/recombox3.swf?nid=5580702&quot; quality=&quot;high&quot; bgcolor=&quot;#ffffff&quot; width=&quot;67&quot; height=&quot;80&quot; type=&quot;application/x-shockwave-flash&quot;&gt;&lt;/embed&gt;&lt;/div&gt;&lt;br /&gt;&lt;iframe src=&quot;http://api.v.daum.net/open/related_news?news_id=5580702&amp;display_type=widget&amp;skin=1&amp;frameContents=both&quot; style=&quot;width:100%;height:160px;&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;</description>
			<category>J2EE</category>
			<author>들기름왕자</author>
			<guid>http://wmp.kr/94</guid>
			<comments>http://wmp.kr/entry/%EC%84%B8%EB%B2%88%EC%A7%B8-%EC%9E%90%EB%B0%94-%EC%9D%B4%EC%95%BC%EA%B8%B0-Professional-Java-Sservlets-23#entry94comment</comments>
			<pubDate>Mon, 25 Jan 2010 21:12:44 +0900</pubDate>
		</item>
		<item>
			<title>06. Java EE 6 - EJB 3.1</title>
			<link>http://wmp.kr/entry/06-Java-EE-6-EJB-31</link>
			<description>&lt;H3 class=tutorial&gt;&lt;A name=Tutorial_Exercises&gt;&lt;/A&gt;Lab Exercises&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;For the sake of the simplicity of the lab, most exercises are provided in the form of &quot;ready-to-open-and-run&quot; NetBeans projects.&amp;nbsp; (Many of them are borrowed from &quot;&lt;A href=&quot;http://java.sun.com/javaee/reference/code/&quot;&gt;glassfish-samples&lt;/A&gt;&quot; and &quot;&lt;A href=&quot;http://java.sun.com/javaee/6/docs/tutorial/doc/&quot;&gt;Java EE 6 tutorial&lt;/A&gt;&quot;.)&amp;nbsp; Please feel free to create them from scratch if you want to.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;It is strongly encouraged, leveraging what is provided in this lab, you do your own experimentation meaning creating/adding your own code as much as you can.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;If you have written some code that might help everyone else, please feel free to share them on this codecamp email alias or directly send them to the instructors.&amp;nbsp; Your name will be recognized in this lab if your sample code is chosen to be included.&amp;nbsp; For the tasks that need to be done, please see the &quot;Things to be done&quot; section above.)&lt;br /&gt;
&lt;/DIV&gt;&lt;br /&gt;

&lt;LI style=&quot;MARGIN-LEFT: 80px&quot;&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index.html#Exercise_1&quot;&gt;Exercise 1: EJB in a war packaging (step by step) (20 minutes)&lt;/A&gt; 
&lt;LI style=&quot;MARGIN-LEFT: 80px&quot;&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index.html#Exercise_2&quot;&gt;Exercise 2: Singleton (20 minutes)&lt;/A&gt; 
&lt;LI style=&quot;MARGIN-LEFT: 80px&quot;&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index.html#Exercise_3&quot;&gt;Exercise 3: Timer (20 minutes)&lt;/A&gt; 
&lt;LI style=&quot;MARGIN-LEFT: 80px&quot;&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index.html#Exercise_4&quot;&gt;Exercise 4: Asynchronous method invocation (30 minutes)&lt;/A&gt; 
&lt;LI style=&quot;MARGIN-LEFT: 80px&quot;&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/#Exercise_5&quot;&gt;Exercise 5: EJB embedded (30 minutes)&lt;/A&gt; 
&lt;LI style=&quot;MARGIN-LEFT: 80px&quot;&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/#Exercise_6&quot;&gt;Exercise 6: EJB with REST (30 minutes)&lt;/A&gt; 
&lt;LI style=&quot;MARGIN-LEFT: 80px&quot;&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index.html#Homework_Exercise&quot;&gt;Homework Exercise&lt;/A&gt; &lt;br /&gt;

&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 11px; HEIGHT: 12px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/0stop.jpg&quot;&gt;&amp;nbsp; Before you start this lab, you have to get sample applications from &quot;glassfish-samples&quot; and &quot;Java EE tutorial&quot; as described in &lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_examples/#Tutorial_Exercises&quot;&gt;LAB-4530: Java EE 6 - Examples&lt;/A&gt;.&lt;br /&gt;
&lt;/DIV&gt;&lt;br /&gt;
&lt;!-- ===================================================================================== --&gt;
&lt;H2&gt;&lt;A name=Exercise_1&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;Exercise 1: EJB in a war packaging (step by step)&lt;/SPAN&gt;&lt;br /&gt;
&lt;/H2&gt;
&lt;p id=&quot;more93_0&quot; class=&quot;moreless_fold&quot;&gt;&lt;span style=&quot;cursor: pointer;&quot; onclick=&quot;toggleMoreLess(this, &#039;93_0&#039;,&#039;더보기&#039;,&#039;접기&#039;); return false;&quot;&gt;더보기&lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;content93_0&quot; class=&quot;moreless_content&quot; style=&quot;display: none;&quot;&gt;&amp;nbsp;&lt;br /&gt;

&lt;P class=pBody style=&quot;MARGIN-LEFT: 40px&quot;&gt;In this exercise, you are going to build a Web application step by step in which a servlet invokes a method of an EJB.&amp;nbsp; You will see both servlet and EJB beans are included in a single war file.&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;UL style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/UL&gt;
&lt;OL style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/OL&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/#1.1&quot;&gt;Create a new Web project&lt;/A&gt; 
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/#1.2&quot;&gt;Create a Session Bean&lt;/A&gt; 
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/#1.3&quot;&gt;Create a Servlet&lt;/A&gt; 
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/#1.4&quot;&gt;Build and run the application&lt;/A&gt; 
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/#1.5&quot;&gt;Check the war file&lt;/A&gt;&lt;br /&gt;
&lt;/LI&gt;&lt;/OL&gt;&lt;br /&gt;
&lt;/DIV&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=1.1&gt;&lt;/A&gt;(1.1) Create a new project&lt;br /&gt;
&lt;/H3&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;0. Start NetBeans IDE.&amp;nbsp; &lt;br /&gt;
1. Create a new Web project.&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 533px; HEIGHT: 374px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e1.png&quot;&gt;&lt;br /&gt;
Figure-1.11&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;For the Project Name field, enter &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;EJB-in-a-war&lt;/SPAN&gt; (or whatever project name of your choice). 
&lt;LI&gt;Click Next.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 509px; HEIGHT: 364px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e2.png&quot;&gt;&lt;br /&gt;
Figure-1.12&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Click Finish.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 526px; HEIGHT: 349px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e3.png&quot;&gt;&lt;br /&gt;
Figure-1.13&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=1.2&gt;&lt;/A&gt;(1.2) Create a Session bean&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
1. Create a new Session bean.&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Right click project and New-&amp;gt;Other. (If you see Session Bean in the pop-up menu, select it.)&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 545px; HEIGHT: 406px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e4.png&quot;&gt;&lt;br /&gt;
Figure-1.21&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 520px; HEIGHT: 378px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e4a.png&quot;&gt;&lt;br /&gt;
Figure-1.21a&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;For the EJB Name field, enter &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;MySessionBean&lt;/SPAN&gt; (or whatever name of your choice). 
&lt;LI&gt;For the Package field, enter &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;server &lt;/SPAN&gt;(or whatever package name of your choice). 
&lt;LI&gt;Click Finish.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 535px; HEIGHT: 412px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e5.png&quot;&gt;&lt;br /&gt;
Figure-1.22&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;2. Modify IDE generated MySessionBean.java as shown below.&amp;nbsp; The modification is to add a simple business method called &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;sayHello(..)&lt;/SPAN&gt; to the bean.&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;package server;&lt;br /&gt;
&lt;br /&gt;import javax.ejb.Stateless;&lt;br /&gt;
&lt;br /&gt;/**&lt;br /&gt;
&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;* @author sang&lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
@Stateless&lt;br /&gt;
public class MySessionBean {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;// Add business logic below. (Right-click in editor and choose&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &quot;Insert Code &amp;gt; Add Business Method&quot;)&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String sayHello(String name){&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &quot;Hello &quot; + name + &quot;!&quot;;&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;MySessionBean.java&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 509px; HEIGHT: 652px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e6.png&quot;&gt;&lt;br /&gt;
Figure-1.23&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=1.3&gt;&lt;/A&gt;(1.3) Create a Servlet&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
In this step, you are going to create a servlet, which invokes &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;sayHello()&lt;/SPAN&gt; method of the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;MySessionBean &lt;/SPAN&gt;you created above.&lt;br /&gt;
&lt;br /&gt;1. Create a new Servlet.&amp;nbsp; &lt;br /&gt;
&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 524px; HEIGHT: 673px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e7.png&quot;&gt;&lt;br /&gt;
Figure-1.31&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;For the Class Name field, enter &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;HelloServlet&lt;/SPAN&gt; (or whatever class name of your choice).&lt;br /&gt;

&lt;LI&gt;For the package field, enter &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;client&lt;/SPAN&gt; (or whatever package name of your choice). 
&lt;LI&gt;Click Finish.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 526px; HEIGHT: 455px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e8.png&quot;&gt;&lt;br /&gt;
Figure-1.32&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;2. Inject MySessionBean into the servlet.&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Type &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;@EJB My&lt;/SPAN&gt; and observe code completion feature kicks in. (If the code completion does not appear, press CTRL+Space or CTRL+CMD+Backslash on Mac OS X.)&lt;br /&gt;

&lt;LI&gt;Select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;MySessionBean&amp;nbsp; (server)&lt;/SPAN&gt;.&lt;br /&gt;

&lt;LI&gt;Type &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;client;&lt;/SPAN&gt; &amp;nbsp; &lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 531px; HEIGHT: 723px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e9.png&quot;&gt;&lt;br /&gt;
Figure-1.33&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Observe that you have added the line in bold and red-colored font below.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;&amp;nbsp;...&lt;br /&gt;
@WebServlet(name=&quot;HelloServlet&quot;, urlPatterns={&quot;/HelloServlet&quot;})&lt;br /&gt;
public class HelloServlet extends HttpServlet {&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;@EJB MySessionBean client;&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /** &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Processes requests for both HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; methods.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param request servlet request&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param response servlet response&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @throws ServletException if a servlet-specific error occurs&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @throws IOException if an I/O error occurs&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void processRequest(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; throws ServletException, IOException {&lt;br /&gt;
...&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;3. Fix imports.&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Right click any spot in the editor window and select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Fix Imports&lt;/SPAN&gt;. &lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 533px; HEIGHT: 729px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e10.png&quot;&gt;&lt;br /&gt;
Figure-1.34&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;4. Call the EJB.&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Remove comments on the statements within try{..} block. 
&lt;LI&gt;Modify the code as shown below. The modification is to invoke sayHello() method of the EJB.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 535px; HEIGHT: 718px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e12.png&quot;&gt;&lt;br /&gt;
Figure-1.35&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 11px; HEIGHT: 12px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/0stop.jpg&quot;&gt; NetBeans Tip: You can leverage code-completion feature of the IDE as shown below.&amp;nbsp; When you type &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;COLOR: rgb(255,0,0)&quot;&gt;client.&lt;/SPAN&gt; &lt;/SPAN&gt;and press &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;CTRL+SPACE &lt;/SPAN&gt;( CTRL+Space or CTRL+CMD+Backslash on Mac OS X.)&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;,&lt;/SPAN&gt; observe that &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;sayHello(String name)&lt;/SPAN&gt; is one of the selections.&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 523px; HEIGHT: 732px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e11.png&quot;&gt;&lt;br /&gt;
Figure-1.36&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;(1.4) Build and run the application&lt;/P&gt;&lt;br /&gt;

&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;1. Change Relative URL of the project.&amp;nbsp; This is so that when you run the application, the Relative URL is automatically attached to the URL.&lt;br /&gt;
&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 510px; HEIGHT: 753px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e13.png&quot;&gt;&lt;br /&gt;
Figure-1.41&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Run &lt;/SPAN&gt;under Categories on the left. 
&lt;LI&gt;For the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Relative URL&lt;/SPAN&gt; field, enter&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt; /HelloServlet&lt;/SPAN&gt;.&amp;nbsp; The value of the Relative URL is appended to the context path when the application is accessed for the first time.&lt;br /&gt;

&lt;LI&gt;Click OK.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 506px; HEIGHT: 537px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e14.png&quot;&gt;&lt;br /&gt;
Figure-1.42&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;2. Build and run the application.&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 537px; HEIGHT: 730px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e15.png&quot;&gt;&lt;br /&gt;
Figure-1.43&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Observe that &quot;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Calling EJB Hello Sang Shin!&lt;/SPAN&gt;&quot; gets displayed.&amp;nbsp; This verifies that&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; sayHello()&lt;/SPAN&gt; method of the EJB is invoked successfully.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 512px; HEIGHT: 619px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e16.png&quot;&gt;&lt;br /&gt;
Figure-1.44&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A name=1.5&gt;&lt;/A&gt;(1.5) Check the war file&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
In this step, you are going to see that both EJB and Servlet classes are in the same war file.&lt;br /&gt;
&lt;br /&gt;1.&amp;nbsp; Verify that a single war file contains both HelloServlet.class and MySessionBean.class.&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Files &lt;/SPAN&gt;tab.&amp;nbsp; The Files window show the files from local file system point of view.&lt;br /&gt;

&lt;LI&gt;Expand &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;build-&amp;gt;web-&amp;gt;WEB-INF-&amp;gt;classes&lt;/SPAN&gt;. 
&lt;LI&gt;Observe that the MySessionBean EJB is part of the war file.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 500px; HEIGHT: 664px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e17.png&quot;&gt;&lt;br /&gt;
Figure-1.51&lt;br /&gt;
&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;Solution: The solution of this exercise is provided as &quot;ready to build and run&quot; NetBeans project as &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;EJB-in-a-war&lt;/SPAN&gt; under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;lt;LAB_UNZIPPED_DIRECTORY&amp;gt;/javaee6_ejb3.1/solutions&lt;/SPAN&gt; directory.&amp;nbsp; &lt;/P&gt;
&lt;UL style=&quot;MARGIN-LEFT: 40px; COLOR: rgb(0,0,0)&quot;&gt;&lt;/UL&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;Summary&lt;/H3&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;In this exercise,&amp;nbsp; you built a Web application in which EJB is used.&amp;nbsp; You observed that you don&#039;t need to create EJB module jar file and you don&#039;t have to create EAR file.&amp;nbsp; Instead, the war file contains the EJB.&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&amp;nbsp;&lt;/P&gt;&lt;/div&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/P&gt;&lt;!-- ===================================================================================== --&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;H2&gt;&lt;A name=Exercise_2&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;Exercise 2: Singleton&lt;/SPAN&gt;&lt;br /&gt;
&lt;/H2&gt;
&lt;p id=&quot;more93_1&quot; class=&quot;moreless_fold&quot;&gt;&lt;span style=&quot;cursor: pointer;&quot; onclick=&quot;toggleMoreLess(this, &#039;93_1&#039;,&#039;더보기&#039;,&#039;접기&#039;); return false;&quot;&gt;더보기&lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;content93_1&quot; class=&quot;moreless_content&quot; style=&quot;display: none;&quot;&gt;&lt;br /&gt;

&lt;P class=pBody style=&quot;MARGIN-LEFT: 40px&quot;&gt;Singletons are POJOs just like our Session beans, and the container is guaranteed to maintain a single shared instance of this Singleton. These Singletons are thread safe and also transactional. Like all other EJB’s, singletons have all the services such as security, remoting, dependency injection, web services, interceptors and so on.&lt;br /&gt;
&lt;/P&gt;
&lt;P class=pBody style=&quot;MARGIN-LEFT: 40px&quot;&gt;In this exercise, you are going to use a singleton-based counter, which is used as an application-wide counter.&amp;nbsp; You are also going to use @Startup annotation, which provides life-cycle methods.&lt;br /&gt;
&lt;/P&gt;
&lt;OL&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/#2.1&quot;&gt;Singleton based counter: &quot;counter&quot; sample application.&lt;/A&gt; 
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/#2.2&quot;&gt;Study the code&lt;/A&gt; 
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/#2.3&quot;&gt;Application Startup/Shutdown callbacks through @Startup&lt;/A&gt; &lt;/LI&gt;&lt;/OL&gt;&lt;/OL&gt;&lt;SPAN style=&quot;TEXT-DECORATION: underline&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;OL&gt;
&lt;OL&gt;&lt;/OL&gt;&lt;/OL&gt;&lt;br /&gt;

&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=2.1&gt;&lt;/A&gt;(2.1) Singleton-based counter: &quot;counter&quot; sample application &lt;br /&gt;
&lt;/H3&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;1. Open &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;counter&lt;/SPAN&gt; NetBeans project (from &quot;Java EE 6 tutorial&quot;).&amp;nbsp; &lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;File&lt;/SPAN&gt;-&amp;gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Open Project (Ctrl+Shift+O, Cmd+Shift+O on a Mac)&lt;/SPAN&gt;.&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;/SPAN&gt; 
&lt;LI&gt;Observe that the&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; Open Project&lt;/SPAN&gt; dialog box appears. &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Browse down to &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;lt;GlassFish-v3-Installation-Directory&amp;gt;/glassfish/docs/javaee-tutorial/examples/ejb&lt;/SPAN&gt; directory.&amp;nbsp; (&quot;Java EE 6 tutorial&quot;)&lt;br /&gt;

&lt;LI&gt;Select &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;counter&lt;/SPAN&gt;. &lt;br /&gt;

&lt;LI&gt;Click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Open Project&lt;/SPAN&gt;. &lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Observe that the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;counter&lt;/SPAN&gt; project node appears under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Projects &lt;/SPAN&gt;tab window. &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;2. Build and run &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;counter &lt;/SPAN&gt;project. &lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Right-click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;counter&lt;/SPAN&gt; project and select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Run&lt;/SPAN&gt;. 
&lt;LI&gt;Browser gets displayed. 
&lt;LI&gt;Observe that &quot;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;This page has been accessed 1 time(s).&lt;/SPAN&gt;&quot; message gets displayed. &lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 531px; HEIGHT: 487px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e18.png&quot;&gt;&lt;br /&gt;
Figure-2.11&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Click Refresh button to access the page again. 
&lt;LI&gt;Observe that the counter has been changed to 2 (from 1).&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 593px; HEIGHT: 513px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e19.png&quot;&gt;&lt;br /&gt;
Figure-2.12&lt;br /&gt;
&lt;br /&gt;3. Access the application from a different user - the 2nd user.&amp;nbsp; Since the counter is application-wide scope, accessing the page from the second user should increase the counter&#039;s value to 3.&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Using another instance of the browser, or different type of browser (here Safari is being used), go to &lt;A href=&quot;http://localhost:8080/counter/&quot;&gt;http://localhost:8080/counter/&lt;/A&gt;&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 647px; HEIGHT: 620px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e20.png&quot;&gt;&lt;br /&gt;
Figure-2.13&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Observe that the value of the counter is increased to 3 as expected.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 665px; HEIGHT: 643px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e21.png&quot;&gt;&lt;br /&gt;
Figure-2.14&lt;br /&gt;
&lt;br /&gt;4. Access the application from the first user.&amp;nbsp; Now accessing the counter from the first user should increase the counter to 4.&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 623px; HEIGHT: 534px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e22.png&quot;&gt;&lt;br /&gt;
Figure-2.15&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Observe that the counter is increased to 4 as expected.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 615px; HEIGHT: 520px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e23.png&quot;&gt;&lt;br /&gt;
Figure-2.16&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;&lt;br /&gt;
&lt;/DIV&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=2.2&gt;&lt;/A&gt;(2.2) Study code&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
Note: We have not covered the &quot;template&quot; concept and &quot;Facelets&quot; of JSF 2.0 yet in this codecamp.&amp;nbsp; Just consider template-client.xhtml and template.xhtml are used to display &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;#{count.hitCount} &lt;/SPAN&gt;for now.&lt;br /&gt;
&lt;br /&gt;1. template-client.xhtml.&amp;nbsp; This is a JSF display page using the template called &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;template.xhtml&lt;/SPAN&gt;.&lt;br /&gt;

&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;&amp;lt;?xml version=&#039;1.0&#039; encoding=&#039;UTF-8&#039; ?&amp;gt; &lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:ui=&quot;http://java.sun.com/jsf/facelets&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:h=&quot;http://java.sun.com/jsf/html&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;body&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This text above will not be displayed.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ui:&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;composition template=&quot;/template.xhtml&quot;&lt;/SPAN&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This text will not be displayed.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ui:&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;define name=&quot;title&quot;&lt;/SPAN&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This page has been accessed &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;#{count.hitCount}&lt;/SPAN&gt; time(s).&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ui:define&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This text will also not be displayed.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ui:&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;define name=&quot;body&quot;&lt;/SPAN&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Hooray!&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ui:define&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This text will not be displayed.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ui:composition&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This text below will also not be displayed.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;template-client.xhtml.&lt;br /&gt;
&lt;br /&gt;2. template.xhtml.&amp;nbsp; This is the template.&lt;br /&gt;

&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;&amp;lt;?xml version=&#039;1.0&#039; encoding=&#039;UTF-8&#039; ?&amp;gt; &lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:ui=&quot;http://java.sun.com/jsf/facelets&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;head&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;counter - A singleton session bean example.&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;link href=&quot;./css/default.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/head&amp;gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;body&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;h1&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ui:&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;insert name=&quot;title&quot;&lt;/SPAN&gt;Default Title&amp;lt;/ui:insert&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ui:&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;insert name=&quot;body&quot;&lt;/SPAN&gt;Default Body&amp;lt;/ui:insert&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/body&amp;gt;&lt;br /&gt;
&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;template.xhtml.&lt;br /&gt;
&lt;br /&gt;3. CounterBean.java.&amp;nbsp; Note that CounterBean is a Singleton bean.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;package counter.ejb;&lt;br /&gt;
&lt;br /&gt;import javax.ejb.Singleton;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
/**&lt;br /&gt;
&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;* @author ian&lt;br /&gt;
&amp;nbsp;* CounterBean is a simple singleton session bean that records the number&lt;br /&gt;
&amp;nbsp;* of hits to a web page.&lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;@Singleton&lt;/SPAN&gt;&lt;br /&gt;
public class CounterBean {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private int &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;hits &lt;/SPAN&gt;= 1;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Increment and return the number of hits&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public int getHits() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return hits++;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;CounterBean.java&lt;br /&gt;
&lt;br /&gt;4. Counter.java.&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;package counter.web;&lt;br /&gt;
&lt;br /&gt;import counter.ejb.CounterBean;&lt;br /&gt;
import javax.ejb.EJB;&lt;br /&gt;
import javax.faces.bean.ManagedBean;&lt;br /&gt;
import javax.faces.bean.SessionScoped;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
/**&lt;br /&gt;
&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;* @author ian&lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
@ManagedBean&lt;br /&gt;
@SessionScoped&lt;br /&gt;
public class Count {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;@EJB&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private CounterBean counterBean;&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private int hitCount;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Count() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.hitCount = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public int getHitCount() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;hitCount = counterBean.getHits();&lt;/SPAN&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return hitCount;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setHitCount(int newHits) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.hitCount = newHits;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;Count.java&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;/DIV&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=2.3&gt;&lt;/A&gt;(2.3) Application Startup/Shutdown callbacks&lt;br /&gt;
&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
The introduction of singletons also provides a convenient way for EJB applications to receive callbacks during application initialization or shutdown. By default, the container decides when to instantiate the singleton instance. However, you can force the container to instantiate the singleton instance during application initialization by using the @Startup annotation. This allows the bean to define a @PostConstruct method that is guaranteed to be called at startup time. In addition, any @PreDestroy method for a singleton is guaranteed to be called when the application is shutting down, regardless of whether the singleton was instantiated using lazy instantiation or eager instantiation. In lazy instantiation, the singleton isn&#039;t instantiated until it&#039;s method&#039;s are first needed. In eager instantiation, the singleton is instantiated at startup time whether or not it gets used. &lt;br /&gt;
&lt;br /&gt;1. Add MyStartupBean.java to the project.&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;package counter.ejb;&lt;br /&gt;
&lt;br /&gt;import javax.annotation.PostConstruct;&lt;br /&gt;
import javax.annotation.PreDestroy;&lt;br /&gt;
import javax.ejb.Singleton;&lt;br /&gt;
import javax.ejb.Startup;&lt;br /&gt;
&lt;br /&gt;@Singleton&lt;br /&gt;
&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;@Startup&lt;/SPAN&gt;&lt;br /&gt;
public class MyStartupBean {&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;@PostConstruct&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private void startup() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;----startup() method of MyStartupBean is called&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt; @PreDestroy&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private void shutdown() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;----shutdown() method of MyStartupBean is called&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;MyStartupBean.java&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 658px; HEIGHT: 616px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e31.png&quot;&gt;&lt;br /&gt;
Figure-2.31&lt;br /&gt;
&lt;br /&gt;2. Build and run the application.&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Right-click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;counter&lt;/SPAN&gt; project and select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Run&lt;/SPAN&gt;. 
&lt;LI&gt;Browser gets displayed. &lt;br /&gt;

&lt;LI&gt;Observe that &quot;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;This page has been accessed 1 time(s).&lt;/SPAN&gt;&quot; message gets displayed. &lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 627px; HEIGHT: 511px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e18.png&quot;&gt;&lt;br /&gt;
Figure-2.32&lt;br /&gt;
&lt;br /&gt;3. Observe the message &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&quot;----startup() method of MyStartupBean is called&quot;&lt;/SPAN&gt; in the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;GlassFish v3 Domain&lt;/SPAN&gt; system.log.&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 650px; HEIGHT: 687px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e79.png&quot;&gt;&lt;br /&gt;
Figure-2.33&lt;br /&gt;
&lt;br /&gt;&lt;SPAN style=&quot;COLOR: rgb(255,0,0)&quot;&gt;&lt;IMG style=&quot;WIDTH: 11px; HEIGHT: 12px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/0stop.jpg&quot;&gt;&amp;nbsp; Note&lt;/SPAN&gt;: if you do the exercise 2 in sequence, you will see several instances of &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&quot;----startup() method of MyStartupBean is called&quot;&lt;/SPAN&gt;&lt;br /&gt;
and &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&quot;----shutdown() method of MyStartupBean is called&quot;&lt;/SPAN&gt; because the project is redeployed before it is run or because you close the browser window inbetween.&lt;br /&gt;
&lt;br /&gt;4. Undeploy the application.&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 662px; HEIGHT: 701px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e80.png&quot;&gt;&lt;br /&gt;
Figure-2.34&lt;br /&gt;
&lt;br /&gt;5. Observe the message &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&quot;----shutdown() method of MyStartupBean is called&quot;&lt;/SPAN&gt; in the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;GlassFish v3 Domain&lt;/SPAN&gt; system.log.&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 659px; HEIGHT: 684px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e81.png&quot;&gt;&lt;br /&gt;
Figure-2.35&lt;br /&gt;
&lt;br /&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;&lt;/DIV&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;Summary&lt;/H3&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;In this exercise, you learned how to use @Singleton annotation.&amp;nbsp; You have also used @Startup annotation, which provides life-cycle methods. &lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;/P&gt;
&lt;H2&gt;&lt;A name=Exercise_3&gt;&lt;/A&gt;&amp;nbsp;&lt;/H2&gt;&lt;/div&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;

&lt;H2&gt;&lt;A name=Exercise_3&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;Exercise 3: Timer&lt;/SPAN&gt;&lt;br /&gt;
&lt;/H2&gt;
&lt;p id=&quot;more93_2&quot; class=&quot;moreless_fold&quot;&gt;&lt;span style=&quot;cursor: pointer;&quot; onclick=&quot;toggleMoreLess(this, &#039;93_2&#039;,&#039;더보기&#039;,&#039;접기&#039;); return false;&quot;&gt;더보기&lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;content93_2&quot; class=&quot;moreless_content&quot; style=&quot;display: none;&quot;&gt;&lt;br /&gt;

&lt;P class=pBody style=&quot;MARGIN-LEFT: 40px&quot;&gt;The Timer feature of EJB 3.1 provides an ability to declaratively create cron-like schedules to trigger EJB methods. All that is needed is to annotate an EJB method with the @Schedule annotation to implement the timer. &lt;/P&gt;
&lt;OL&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/#3.1&quot;&gt;Open, build, and run &quot;timersession&quot; sample application (from &quot;Java EE tutorial&quot;)&lt;/A&gt; 
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/#3.2&quot;&gt;Study the code&lt;/A&gt; 
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index.html#3.3&quot;&gt;Open, build, and run &quot;automatic-timer&quot; sample application (from &quot;glassfish-samples&quot;)&lt;/A&gt; 
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index.html#3.4&quot;&gt;Study the code&lt;/A&gt; &lt;/LI&gt;&lt;/OL&gt;&lt;/OL&gt;&lt;br /&gt;

&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=3.1&gt;&lt;/A&gt;(3.1) Open, build, and run &quot;timersession&quot; sample application (from &quot;Java EE 6 tutorial&quot;)&lt;br /&gt;
&lt;/H3&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;1. Open &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;timersession&lt;/SPAN&gt; NetBeans project.&amp;nbsp; &lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;File&lt;/SPAN&gt;-&amp;gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Open Project (Ctrl+Shift+O)&lt;/SPAN&gt;.&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;/SPAN&gt; 
&lt;LI&gt;Observe that the&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; Open Project&lt;/SPAN&gt; dialog box appears. &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Browse down to &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;lt;GlassFish-v3-Installation-Directory&amp;gt;/glassfish/docs/javaee-tutorial/examples/ejb&lt;/SPAN&gt; directory.&amp;nbsp; &lt;br /&gt;

&lt;LI&gt;Select &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;timersession&lt;/SPAN&gt;. &lt;br /&gt;

&lt;LI&gt;Click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Open Project&lt;/SPAN&gt;. &lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Observe that the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;timersession&lt;/SPAN&gt; project node appears under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Projects &lt;/SPAN&gt;tab window. &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;2. Build and run &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;timersession &lt;/SPAN&gt;project. &lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Right-click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;timersession&lt;/SPAN&gt; project and select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Run&lt;/SPAN&gt;. 
&lt;LI&gt;Browser gets displayed. &lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 542px; HEIGHT: 595px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e24.png&quot;&gt;&lt;br /&gt;
Figure-3.11&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 535px; HEIGHT: 589px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e25.png&quot;&gt;&lt;br /&gt;
Figure-3.12&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 534px; HEIGHT: 590px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e25.1.png&quot;&gt;&lt;br /&gt;
Figure-3.13&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 519px; HEIGHT: 569px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e26.png&quot;&gt;&lt;br /&gt;
Figure-3.14&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Observe in the GlassFish log that the Timers are first restored from the Timer Service. 
&lt;LI&gt;Then an automatic timeout occurs which denotes the scheduling start. 
&lt;LI&gt;Then the programmatic timeouts comes from the user&#039;s actions. 
&lt;LI&gt;The remaining automatic timeouts occur as long as the application is running. &lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 520px; HEIGHT: 208px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e26a.png&quot;&gt;&lt;br /&gt;
Figure-3.14a&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;&lt;br /&gt;

&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=3.2&gt;&lt;/A&gt;(3.2) Study code&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
1. timer-client.xhtml.&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;&amp;lt;?xml version=&#039;1.0&#039; encoding=&#039;UTF-8&#039; ?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:f=&quot;http://java.sun.com/jsf/core&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:h=&quot;http://java.sun.com/jsf/html&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:ui=&quot;http://java.sun.com/jsf/facelets&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;body&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ui:composition template=&quot;/timer.xhtml&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ui:define name=&quot;title&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Timer page&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ui:define&amp;gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ui:define name=&quot;body&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;The last programmatic timeout was: &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;#{timerManager.lastProgrammaticTimeout}&lt;/SPAN&gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;The last automatic timeout was: &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;#{timerManager.lastAutomaticTimeout}&lt;/SPAN&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;Set a programmatic timer here.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;h:form&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;h:commandButton value=&quot;Set Timer&quot; action=&quot;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;#{timerManager.setTimer}&lt;/SPAN&gt;&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;h:commandButton value=&quot;Refresh&quot; action=&quot;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;timer-client&lt;/SPAN&gt;&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/h:form&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ui:define&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ui:composition&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;
2. TimerManager.java.&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;package timersession.web;&lt;br /&gt;
&lt;br /&gt;import javax.ejb.EJB;&lt;br /&gt;
import javax.faces.bean.ManagedBean;&lt;br /&gt;
import javax.faces.bean.SessionScoped;&lt;br /&gt;
import timersession.ejb.TimerSessionBean;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
/**&lt;br /&gt;
&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;* @author ian&lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
@ManagedBean&lt;br /&gt;
@SessionScoped&lt;br /&gt;
public class TimerManager {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private String lastAutomaticTimeout;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private String lastProgrammaticTimeout;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; @EJB&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private TimerSessionBean timerSession;&lt;/SPAN&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /** Creates a new instance of TimerManager */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public TimerManager() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.lastProgrammaticTimeout = &quot;never&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.lastAutomaticTimeout = &quot;never&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @return the lastTimeout&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String getLastProgrammaticTimeout() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lastProgrammaticTimeout = timerSession.getLastProgrammaticTimeout();&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return lastProgrammaticTimeout;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param lastTimeout the lastTimeout to set&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setLastProgrammaticTimeout(String lastTimeout) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.lastProgrammaticTimeout = lastTimeout;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setTimer() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; long timeoutDuration = 8000;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; timerSession.setTimer(timeoutDuration);&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @return the lastAutomaticTimeout&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String getLastAutomaticTimeout() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lastAutomaticTimeout = timerSession.getLastAutomaticTimeout();&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return lastAutomaticTimeout;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param lastAutomaticTimeout the lastAutomaticTimeout to set&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setLastAutomaticTimeout(String lastAutomaticTimeout) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.lastAutomaticTimeout = lastAutomaticTimeout;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;
3. TimerSessionBean.java&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;/*&lt;br /&gt;
&amp;nbsp;* Copyright 2009 Sun Microsystems, Inc.&lt;br /&gt;
&amp;nbsp;* All rights reserved.&amp;nbsp; You may not modify, use,&lt;br /&gt;
&amp;nbsp;* reproduce, or distribute this software except in&lt;br /&gt;
&amp;nbsp;* compliance with&amp;nbsp; the terms of the License at:&lt;br /&gt;
&amp;nbsp;* http://developer.sun.com/berkeley_license.html&lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
package timersession.ejb;&lt;br /&gt;
&lt;br /&gt;import java.util.Date;&lt;br /&gt;
import java.util.logging.Logger;&lt;br /&gt;
import javax.annotation.Resource;&lt;br /&gt;
import javax.ejb.Schedule;&lt;br /&gt;
import javax.ejb.Singleton;&lt;br /&gt;
import javax.ejb.Startup;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;import javax.ejb.Timeout;&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;import javax.ejb.Timer;&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;import javax.ejb.TimerService;&lt;/SPAN&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
/**&lt;br /&gt;
&amp;nbsp;* TimerBean is a singleton session bean that creates a timer and prints out a&lt;br /&gt;
&amp;nbsp;* message when a timeout occurs.&lt;br /&gt;
&amp;nbsp;* Created March 3, 2009 12:38 PM PST&lt;br /&gt;
&amp;nbsp;* @author ian&lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;@Singleton&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;@Startup&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;public class TimerSessionBean&lt;/SPAN&gt; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;@Resource&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TimerService timerService;&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private Date lastAutomaticTimeout;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private Date lastProgrammaticTimeout;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private Logger logger = Logger.getLogger(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;com.sun.tutorial.javaee.ejb.timersession.TimerSessionBean&quot;);&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;public void setTimer(long intervalDuration) {&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.info(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Setting a programmatic timeout for &quot; + intervalDuration&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + &quot; milliseconds from now.&quot;);&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(51,51,255)&quot;&gt;// Create a single-action timer that expires after a specified duration. &lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;Timer timer = timerService.createTimer(&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intervalDuration,&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Created new programmatic timer&quot;);&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(51,51,255)&quot;&gt; // Designates a method that should receive EJB timer expiration&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;@Timeout&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void programmaticTimeout(Timer timer) {&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.setLastProgrammaticTimeout(new Date());&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.info(&quot;Programmatic timeout occurred.&quot;);&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(51,51,255)&quot;&gt; // Schedule a timer for automatic creation with a timeout schedule based &lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold; COLOR: rgb(51,51,255)&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(51,51,255)&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // on a cron-like time expression. The annotated method is used as the &lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold; COLOR: rgb(51,51,255)&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(51,51,255)&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // timeout callback method. &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Invoke the method every minute in every hour.&lt;br /&gt;
&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt; @Schedule(minute = &quot;*/1&quot;, hour = &quot;*&quot;)&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void automaticTimeout() {&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.setLastAutomaticTimeout(new Date());&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.info(&quot;Automatic timeout occured&quot;);&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @return the lastTimeout&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String getLastProgrammaticTimeout() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (lastProgrammaticTimeout != null) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return lastProgrammaticTimeout.toString();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &quot;never&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param lastTimeout the lastTimeout to set&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setLastProgrammaticTimeout(Date lastTimeout) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.lastProgrammaticTimeout = lastTimeout;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @return the lastAutomaticTimeout&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String getLastAutomaticTimeout() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (lastAutomaticTimeout != null) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return lastAutomaticTimeout.toString();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &quot;never&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param lastAutomaticTimeout the lastAutomaticTimeout to set&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setLastAutomaticTimeout(Date lastAutomaticTimeout) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.lastAutomaticTimeout = lastAutomaticTimeout;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;/DIV&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=3.3&gt;&lt;/A&gt;(3.3) Open, build, and run &quot;automatic-timer&quot; sample application (from &quot;glassfish-samples&quot;)&lt;br /&gt;
&lt;/H3&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;1. Open &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;automatic-timer&lt;/SPAN&gt; NetBeans project.&amp;nbsp; &lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;File&lt;/SPAN&gt;-&amp;gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Open Project (Ctrl+Shift+O)&lt;/SPAN&gt;.&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;/SPAN&gt; 
&lt;LI&gt;Observe that the&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; Open Project&lt;/SPAN&gt; dialog box appears. &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Browse down to &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;lt;GlassFish-v3-Installation-Directory&amp;gt;/glassfish/samples/javaee6/ejb&lt;/SPAN&gt; directory.&amp;nbsp; &lt;br /&gt;

&lt;LI&gt;Select &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;automatic-timer&lt;/SPAN&gt;. &lt;br /&gt;

&lt;LI&gt;Click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Open Project&lt;/SPAN&gt;. &lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Observe that the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;automatic-timer-ejb&lt;/SPAN&gt; project node appears under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Projects &lt;/SPAN&gt;tab window.&amp;nbsp; &lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;2. Build and run &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;automatic-timer-ejb &lt;/SPAN&gt;project. &lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Right-click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;automatic-timer-ejb&lt;/SPAN&gt; project and select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Run&lt;/SPAN&gt;. 
&lt;LI&gt;Observe the result in the Output window.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 544px; HEIGHT: 646px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e82.png&quot;&gt;&lt;br /&gt;
&lt;/DIV&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
&lt;/P&gt;&lt;/DIV&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=3.4&gt;&lt;/A&gt;(3.4) Study the code&lt;br /&gt;
&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
1. StatelessSession.java&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;package enterprise.automatic_timer_ejb;&lt;br /&gt;
&lt;br /&gt;import java.util.List;&lt;br /&gt;
&lt;br /&gt;import javax.ejb.Remote;&lt;br /&gt;
&lt;br /&gt;@Remote&lt;br /&gt;
public interface StatelessSession {&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public List&amp;lt;String&amp;gt; getRecords();&lt;br /&gt;
&lt;br /&gt;}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;
2. StatelessSessionBean.java&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;package enterprise.automatic_timer_ejb;&lt;br /&gt;
&lt;br /&gt;import java.util.Date;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;import javax.ejb.Stateless;&lt;br /&gt;
import javax.ejb.Schedule;&lt;br /&gt;
import javax.ejb.Timer;&lt;br /&gt;
import javax.persistence.EntityManager;&lt;br /&gt;
import javax.persistence.Query;&lt;br /&gt;
import javax.persistence.PersistenceContext;&lt;br /&gt;
&lt;br /&gt;import enterprise.automatic_timer_ejb.persistence.LogRecord;&lt;br /&gt;
&lt;br /&gt;@Stateless&lt;br /&gt;
public class StatelessSessionBean implements StatelessSession {&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @PersistenceContext EntityManager em;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;@Schedule(second=&quot;*/3&quot;, minute=&quot;*&quot;, hour=&quot;*&quot;, info=&quot;Automatic Timer Test&quot;)&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void test_automatic_timer(Timer t) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; long count = (Long)em.createNamedQuery(&quot;LogRecord.countLoggedTimeouts&quot;).getSingleResult();&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Call # &quot; + (count + 1));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (count &amp;gt; 10) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new IllegalStateException(&quot;Too many timeouts received: &quot; + count);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (count == 10) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LogRecord lr = new LogRecord(&quot;Canceling timer &quot; + t.getInfo() + &quot; at &quot; + new Date());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; em.persist(lr);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t.cancel();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Done&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LogRecord lr = new LogRecord(&quot;&quot; + t.getInfo() + &quot; timeout received at &quot; + new Date());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; em.persist(lr);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public List&amp;lt;String&amp;gt; getRecords() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (List&amp;lt;String&amp;gt;)em.createNamedQuery(&quot;LogRecord.findAllRecords&quot;).getResultList();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;
3. LogRecord.java&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;package enterprise.automatic_timer_ejb.persistence;&lt;br /&gt;
&lt;br /&gt;import javax.persistence.*;&lt;br /&gt;
&lt;br /&gt;//name defaults to the unqualified entity class name.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
//default access is property.&lt;br /&gt;
@Entity&lt;br /&gt;
@NamedQueries({&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @NamedQuery(name = &quot;LogRecord.countLoggedTimeouts&quot;, query = &quot;select count(l) from LogRecord l where l.record NOT LIKE \&quot;Canceling timer%\&quot;&quot;),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @NamedQuery(name = &quot;LogRecord.findAllRecords&quot;, query = &quot;select l.record from LogRecord l&quot;)&lt;br /&gt;
})&lt;br /&gt;
public class LogRecord {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Id &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @GeneratedValue&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private int id;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private String record;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public LogRecord(String record) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setRecord(record);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public LogRecord() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String getRecord() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return record;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setRecord(String record) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.record = record;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;/DIV&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;Summary&lt;/H3&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;In this exercise, you have learned the Timer feature of EJB 3.1, which provides an ability to declaratively create cron-like schedules to trigger EJB methods.&amp;nbsp; &lt;/P&gt;&lt;/div&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;H2&gt;&lt;A name=Exercise_4&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;Exercise 4: Asynchronous method invocation using @Asynchronous&lt;/SPAN&gt;&lt;br /&gt;
&lt;/H2&gt;
&lt;p id=&quot;more93_3&quot; class=&quot;moreless_fold&quot;&gt;&lt;span style=&quot;cursor: pointer;&quot; onclick=&quot;toggleMoreLess(this, &#039;93_3&#039;,&#039;더보기&#039;,&#039;접기&#039;); return false;&quot;&gt;더보기&lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;content93_3&quot; class=&quot;moreless_content&quot; style=&quot;display: none;&quot;&gt;
&lt;P class=pBody style=&quot;MARGIN-LEFT: 40px&quot;&gt;In previous version of EJB, the only way to accomplish asynchronous processing was by using Message Driven Beans.&amp;nbsp; Even though writing MDBs was very trivial, configuring all the necessary server resources like connection factories, topics and queues made it a little bit of a chore, especially since all I needed was an asynchronous method invocation. &lt;br /&gt;
&lt;/P&gt;
&lt;P class=pBody style=&quot;MARGIN-LEFT: 40px&quot;&gt;With EJB 3.1 these issues are easily solved by a simple annotation placed on the Session Bean: @Asynchronous. Under normal circumstances, a Session bean method call blocks the client for the duration of that call. With this annotation in place, the container returns control to the client and executes the method on a separate thread. &lt;br /&gt;
&lt;/P&gt;
&lt;P class=pBody style=&quot;MARGIN-LEFT: 40px&quot;&gt;The Session bean method call which is annotated with the @ Asynchronous annotation can return a java.util.Future object that allows the client to retrieve a result value, check for exceptions, or attempt to cancel an in-progress invocation. &lt;/P&gt;
&lt;OL&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/#4.1&quot;&gt;Asynchronous method&lt;/A&gt;&lt;br /&gt;

&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/#4.2&quot;&gt;Study the code.&lt;/A&gt; 
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/#4.3&quot;&gt;Asynchronous method with Future&lt;/A&gt; 
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/#4.4&quot;&gt;Study the code&lt;/A&gt;&lt;br /&gt;
&lt;/LI&gt;&lt;/OL&gt;&lt;/OL&gt;&lt;br /&gt;

&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=4.1&gt;&lt;/A&gt;(4.1) Asynchronous method&lt;br /&gt;
&lt;/H3&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;In this exercise, a method, which performs a potentially long-ruuning database operration,&amp;nbsp; in ItemEJB is called with @Asynchronous.&amp;nbsp; The method returns void.&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;1. Open &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;ejb3.1_asynch&lt;/SPAN&gt; NetBeans project (from &quot;Lab samples&quot;).&amp;nbsp; &lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;File&lt;/SPAN&gt;-&amp;gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Open Project (Ctrl+Shift+O)&lt;/SPAN&gt;.&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;/SPAN&gt; 
&lt;LI&gt;Observe that the&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; Open Project&lt;/SPAN&gt; dialog box appears. &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Browse down to &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;lt;LAB_UNZIPPED_DIRECTORY&amp;gt;/javaee6_ejb3.1/samples&lt;/SPAN&gt; directory directory.&amp;nbsp; &lt;br /&gt;

&lt;LI&gt;Select &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;ejb3.1_asynch&lt;/SPAN&gt;. &lt;br /&gt;

&lt;LI&gt;Click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Open Project&lt;/SPAN&gt;. &lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Observe that the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ejb3.1_asynch&lt;/SPAN&gt; project node appears under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Projects &lt;/SPAN&gt;tab window. &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;2. Build and run &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ejb3.1_asynch &lt;/SPAN&gt;project. &lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Right-click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ejb3.1_asynch&lt;/SPAN&gt; project and select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Run&lt;/SPAN&gt;. 
&lt;LI&gt;Browser gets displayed. &lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;For the Title field, enter &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Life is good! &lt;/SPAN&gt;(or whatever book title of your choice). 
&lt;LI&gt;Click Submit Query button.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 554px; HEIGHT: 582px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e27.png&quot;&gt;&lt;br /&gt;
Figure-4.11&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Observe that the name of the Book title gets displayed.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 541px; HEIGHT: 540px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e28.png&quot;&gt;&lt;br /&gt;
Figure-4.12&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;&lt;br /&gt;

&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=4.2&gt;&lt;/A&gt;(4.2) Study code&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
1. index.html.&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Create a Book&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Create a new book&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;form action=&quot;BookServlet&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;table border=&quot;0&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;Title :&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;input type=&quot;text&quot; name=&quot;title&quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input type=&quot;submit&quot; name=&quot;Create a book&quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;
2. BookServlet.java.&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;package mypackage;&lt;br /&gt;
&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;
import javax.servlet.annotation.WebServlet;&lt;br /&gt;
import javax.servlet.http.HttpServlet;&lt;br /&gt;
import javax.servlet.http.HttpServletRequest;&lt;br /&gt;
import javax.servlet.http.HttpServletResponse;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.PrintWriter;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
import javax.ejb.EJB;&lt;br /&gt;
&lt;br /&gt;@WebServlet(loadOnStartup = 1, urlPatterns = &quot;/BookServlet&quot;)&lt;br /&gt;
public class BookServlet extends HttpServlet {&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp; // Inject ItemEJB instance&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @EJB&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private ItemEJB itemEJB;&lt;/SPAN&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Creates an instance of book&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Book book = new Book();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; book.setTitle(request.getParameter(&quot;title&quot;));&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp; // Call EJB method asynchronously&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; itemEJB.&lt;SPAN style=&quot;COLOR: rgb(255,0,0)&quot;&gt;createBookAsynch&lt;/SPAN&gt;(book);&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Sleep for 2000 ms to give async. thread to finish the task&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thread.sleep(2000);&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; response.setContentType(&quot;text/html&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PrintWriter out = response.getWriter();&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Displays the books&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; out.println(&quot;&amp;lt;h1&amp;gt;====== All books ======&amp;lt;/h1&amp;gt;&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //List&amp;lt;Book&amp;gt; books = em.createNamedQuery(&quot;findAllBooks&quot;).getResultList();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;Book&amp;gt; books = itemEJB.findAllBooks();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; books.size(); i++) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Book b = books.get(i);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; out.println(&quot;Book title: &quot; + b.getTitle() + &quot;&amp;lt;br/&amp;gt;&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (Exception ie) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;BookServlet.java&lt;br /&gt;
&lt;br /&gt;3. ItemEJB.java&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;package mypackage;&lt;br /&gt;
&lt;br /&gt;import javax.ejb.Stateless;&lt;br /&gt;
import javax.persistence.EntityManager;&lt;br /&gt;
import javax.persistence.PersistenceContext;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
import java.util.concurrent.Future;&lt;br /&gt;
import javax.ejb.AsyncResult;&lt;br /&gt;
import javax.ejb.Asynchronous;&lt;br /&gt;
&lt;br /&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;@Stateless&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;public class ItemEJB &lt;/SPAN&gt;{&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @PersistenceContext&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private EntityManager em;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Book createBook(Book book) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; em.persist(book);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return book;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;@Asynchronous&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void createBookAsynch(Book book) {&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; em.persist(book);&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Asynchronous&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public Future&amp;lt;Book&amp;gt; createBookAsynchUsingFuture(Book book) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; em.persist(book);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new AsyncResult&amp;lt;Book&amp;gt;(book);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public List&amp;lt;Book&amp;gt; findAllBooks() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return em.createNamedQuery(&quot;findAllBooks&quot;).getResultList();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;ItemEJB.java&lt;br /&gt;
&lt;br /&gt;4. Book.java&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;package mypackage;&lt;br /&gt;
&lt;br /&gt;import javax.persistence.*;&lt;br /&gt;
&lt;br /&gt;@Entity&lt;br /&gt;
@NamedQueries({&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @NamedQuery(name = &quot;findAllBooks&quot;, query = &quot;SELECT b FROM Book b&quot;)&lt;br /&gt;
})&lt;br /&gt;
public class Book {&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Id&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @GeneratedValue&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private Long id;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private String title;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Long getId() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return id;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String getTitle() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return title;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setTitle(String title) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.title = title;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;Book.java&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;/DIV&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=4.3&gt;&lt;/A&gt;(4.3) Open, build, and run &quot;ejb3.1_asynch_using_Future&quot; sample application (from &quot;Hands-on lab samples&quot;)&lt;br /&gt;
&lt;/H3&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;In this exercise, a method, which performs a potentially long-ruuning database operration,&amp;nbsp; in ItemEJB is called with @Asynchronous.&amp;nbsp; The method returns Future object.&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;1. Open &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;ejb3.1_asynch_using_Future&lt;/SPAN&gt; NetBeans project.&amp;nbsp; &lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;File&lt;/SPAN&gt;-&amp;gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Open Project (Ctrl+Shift+O)&lt;/SPAN&gt;.&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;/SPAN&gt; 
&lt;LI&gt;Observe that the&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; Open Project&lt;/SPAN&gt; dialog box appears. &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Browse down to Browse down to &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;lt;LAB_UNZIPPED_DIRECTORY&amp;gt;/javaee6_ejb3.1/samples&lt;/SPAN&gt; directory.&amp;nbsp; 
&lt;LI&gt;Select &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;ejb3.1_asynch_using_Future&lt;/SPAN&gt;. &lt;br /&gt;

&lt;LI&gt;Click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Open Project&lt;/SPAN&gt;. &lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Observe that the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ejb3.1_asynch_using_Future&lt;/SPAN&gt; project node appears under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Projects &lt;/SPAN&gt;tab window. &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;2. Build and run &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ejb3.1_asynch_using_Future &lt;/SPAN&gt;project. &lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Right-click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ejb3.1_asynch_using_Future&lt;/SPAN&gt; project and select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Run&lt;/SPAN&gt;. 
&lt;LI&gt;Browser gets displayed. &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;For the Title field, enter &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Life is good! &lt;/SPAN&gt;(or whatever book title of your choice). 
&lt;LI&gt;Click Submit Query button.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 533px; HEIGHT: 517px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e29.png&quot;&gt;&lt;br /&gt;
Figure-4.31&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 570px; HEIGHT: 556px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e30.png&quot;&gt;&lt;br /&gt;
Figure-4.32&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;&lt;/DIV&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=4.4&gt;&lt;/A&gt;(4.4) Study code&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
1. BookServlet.java&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;package mypackage;&lt;br /&gt;
&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;
import javax.servlet.annotation.WebServlet;&lt;br /&gt;
import javax.servlet.http.HttpServlet;&lt;br /&gt;
import javax.servlet.http.HttpServletRequest;&lt;br /&gt;
import javax.servlet.http.HttpServletResponse;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.PrintWriter;&lt;br /&gt;
import java.util.concurrent.Future;&lt;br /&gt;
import javax.ejb.EJB;&lt;br /&gt;
&lt;br /&gt;@WebServlet(loadOnStartup = 1, urlPatterns = &quot;/BookServlet&quot;)&lt;br /&gt;
public class BookServlet extends HttpServlet {&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Inject ItemEJB instance&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @EJB&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private ItemEJB itemEJB;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Creates an instance of book&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Book book = new Book();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; book.setTitle(request.getParameter(&quot;title&quot;));&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt; // Call EJB method asynchronously&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Future&amp;lt;Book&amp;gt; future = itemEJB.createBookAsynchUsingFuture(book);&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Sleep for 2000 ms to give async. thread to finish the task&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thread.sleep(2000);&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; response.setContentType(&quot;text/html&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PrintWriter out = response.getWriter();&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Display the newly created book&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; out.println(&quot;&amp;lt;h1&amp;gt;====== Book that has been created asynchronously&amp;lt;/h1&amp;gt;&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt; Book b = future.get();&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; out.println(&quot;Book title: &quot; + b.getTitle() + &quot;&amp;lt;br/&amp;gt;&quot;);&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (Exception ie) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;BookServlet.java&lt;br /&gt;
&lt;br /&gt;2. ItemEJB.java.&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;package mypackage;&lt;br /&gt;
&lt;br /&gt;import javax.ejb.Stateless;&lt;br /&gt;
import javax.persistence.EntityManager;&lt;br /&gt;
import javax.persistence.PersistenceContext;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
import java.util.concurrent.Future;&lt;br /&gt;
import javax.ejb.AsyncResult;&lt;br /&gt;
import javax.ejb.Asynchronous;&lt;br /&gt;
&lt;br /&gt;@Stateless&lt;br /&gt;
public class ItemEJB {&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @PersistenceContext&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private EntityManager em;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Book createBook(Book book) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; em.persist(book);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return book;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Asynchronous&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void createBookAsynch(Book book) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; em.persist(book);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; @Asynchronous&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public &lt;SPAN style=&quot;COLOR: rgb(255,0,0)&quot;&gt;Future&amp;lt;Book&amp;gt;&lt;/SPAN&gt; createBookAsynchUsingFuture(Book book) {&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; em.persist(book);&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: rgb(255,0,0)&quot;&gt;return new AsyncResult&amp;lt;Book&amp;gt;(book);&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public List&amp;lt;Book&amp;gt; findAllBooks() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return em.createNamedQuery(&quot;findAllBooks&quot;).getResultList();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;ItemEJB.java&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;&lt;/DIV&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;Summary&lt;/H3&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;In this exercise, you have learned how to use @Asynchronous annotation to invoke a EJB method in asynchronous manner.&amp;nbsp; &lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;/P&gt;&lt;/div&gt;
&lt;P class=pBody style=&quot;MARGIN-LEFT: 40px&quot;&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;A name=Exercise_5&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;Exercise 5: EJB Embedded (Building Embeddable EJB app step by step)&lt;/SPAN&gt;&lt;br /&gt;
&lt;/H2&gt;
&lt;p id=&quot;more93_4&quot; class=&quot;moreless_fold&quot;&gt;&lt;span style=&quot;cursor: pointer;&quot; onclick=&quot;toggleMoreLess(this, &#039;93_4&#039;,&#039;더보기&#039;,&#039;접기&#039;); return false;&quot;&gt;더보기&lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;content93_4&quot; class=&quot;moreless_content&quot; style=&quot;display: none;&quot;&gt;
&lt;P class=pBody style=&quot;MARGIN-LEFT: 40px&quot;&gt;Testing EJBs was a herculean task all these years. It isn’t anymore with the timely and useful innovation of the embeddable container. The embeddable container allows you to use JPA and EJB 3.1 outside a container including testing.&amp;nbsp; &lt;br /&gt;
&lt;/P&gt;
&lt;P class=pBody style=&quot;MARGIN-LEFT: 40px&quot;&gt;In this exercise, you are going to build a standalone Java SE application in which you are going to test EJB-based application logic step by step.&lt;br /&gt;
&lt;/P&gt;
&lt;OL&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index.html#5.1&quot;&gt;Create a new &quot;Java Application&quot; (Java SE) project&lt;/A&gt;&lt;br /&gt;

&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index.html#5.2&quot;&gt;Create EJB beans&lt;br /&gt;
&lt;/A&gt;
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index.html#5.3&quot;&gt;Add libraries&lt;br /&gt;
&lt;/A&gt;
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index.html#5.4&quot;&gt;Create persistence unit&lt;/A&gt; 
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index.html#5.5&quot;&gt;Add testing code&lt;/A&gt;&lt;br /&gt;

&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index.html#5.6&quot;&gt;Build a jar file (that contains EJB beans)&lt;br /&gt;
&lt;/A&gt;
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index.html#5.7&quot;&gt;Run the testing&lt;/A&gt; 
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/#5.8&quot;&gt;Use APP_NAME JNDI name&lt;/A&gt;&lt;br /&gt;
&lt;/LI&gt;&lt;/OL&gt;&lt;/OL&gt;&lt;br /&gt;

&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=5.1&gt;&lt;/A&gt;(5.1) Create a new &quot;Java Application&quot; (Java SE) project&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
&lt;/DIV&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;1. Create a new Java Application project.&lt;br /&gt;
&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 550px; HEIGHT: 633px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e41.png&quot;&gt;&lt;br /&gt;
Figure-5.11&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 546px; HEIGHT: 432px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e42.png&quot;&gt;&lt;br /&gt;
Figure-5.12&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;2. Give a name to the project.&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;For the Project Name field, enter &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;ejb3.1_embedded&lt;/SPAN&gt;. 
&lt;LI&gt;Uncheck&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; Create Main Class&lt;/SPAN&gt;.&amp;nbsp; (We don&#039;t need to create Main class.) 
&lt;LI&gt;Click Finish.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 564px; HEIGHT: 374px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e43.png&quot;&gt;&lt;br /&gt;
Figure-5.13&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;/P&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=5.2&gt;&lt;/A&gt;(5.2) Add EJB beans&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
In this step, you are going to add a simple Book entity class and ItemBook Stateless bean class.&lt;br /&gt;
&lt;br /&gt;1. Add &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Book &lt;/SPAN&gt;entity class.&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Right click project and select N&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ew-&amp;gt;Entity Class&lt;/SPAN&gt;.&amp;nbsp; (If you don&#039;t see Entity class from the pop-up menu, select Other, select Persistence on the left.) &lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 540px; HEIGHT: 627px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e44.png&quot;&gt;&lt;br /&gt;
Figure-5.21&lt;br /&gt;
&lt;/DIV&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;For the Class Name field, enter &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;Book&lt;/SPAN&gt;. 
&lt;LI&gt;For the Package field, enter &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;mypackage&lt;/SPAN&gt;. 
&lt;LI&gt;Click Finish.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 555px; HEIGHT: 406px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e45.png&quot;&gt;&lt;br /&gt;
Figure-5.22&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;2. Modify the IDE generated &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Book.java&lt;/SPAN&gt; as shown below.&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;package mypackage;&lt;br /&gt;
&lt;br /&gt;import java.io.Serializable;&lt;br /&gt;
import javax.persistence.*;&lt;br /&gt;
&lt;br /&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;@Entity&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;@NamedQueries({&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @NamedQuery(name = &quot;findAllBooks&quot;, query = &quot;SELECT b FROM Book b&quot;)&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;})&lt;/SPAN&gt;&lt;br /&gt;
public class Book implements Serializable {&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Id&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @GeneratedValue&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private Long id;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private String title;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Long getId() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return id;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String getTitle() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return title;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setTitle(String title) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.title = title;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;
&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 562px; HEIGHT: 657px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e46.png&quot;&gt;&lt;br /&gt;
Figure-5.23&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;3. Create ItemEJB Stateless bean.&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 536px; HEIGHT: 602px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e47.png&quot;&gt;&lt;br /&gt;
Figure-5.24&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;For the Class Name field, enter &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;ItemEJB&lt;/SPAN&gt;. 
&lt;LI&gt;Click Finish.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 555px; HEIGHT: 385px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e48.png&quot;&gt;&lt;br /&gt;
Figure-5.25&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;4. Modify IDE generated ItemEJB.java as shown below.&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;package mypackage;&lt;br /&gt;
&lt;br /&gt;import javax.ejb.Stateless;&lt;br /&gt;
import javax.persistence.EntityManager;&lt;br /&gt;
import javax.persistence.PersistenceContext;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;@Stateless&lt;/SPAN&gt;&lt;br /&gt;
public class ItemEJB {&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @PersistenceContext&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private EntityManager em;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Book createBook(Book book) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; em.persist(book);&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return book;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public List&amp;lt;Book&amp;gt; findAllBooks() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return em.createNamedQuery(&quot;findAllBooks&quot;).getResultList();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;
&lt;IMG style=&quot;WIDTH: 549px; HEIGHT: 602px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e49.png&quot;&gt;&lt;br /&gt;
Figure-5.26&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index.html#Exercise_5&quot;&gt;return to top of exercise&lt;/A&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/DIV&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=5.3&gt;&lt;/A&gt;(5.3) Add libraries&lt;br /&gt;
&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
In this step you are going add the following library jar files.&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;From the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;lt;GlassFish-v3-Installation-Directory&amp;gt;/glassfish/modules&lt;/SPAN&gt; directory. &lt;/LI&gt;&lt;/UL&gt;
&lt;UL style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;LI style=&quot;FONT-WEIGHT: bold&quot;&gt;gf-ejb-connector.jar 
&lt;LI style=&quot;FONT-WEIGHT: bold&quot;&gt;glassfish-api.jar 
&lt;LI style=&quot;FONT-WEIGHT: bold&quot;&gt;javax.ejb.jar 
&lt;LI&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;javax.persistence.jar&lt;/SPAN&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;From &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;lt;GlassFish-v3-Installation-Directory&amp;gt;/glassfish/modules/endorsed&lt;/SPAN&gt; directory &lt;/LI&gt;&lt;/UL&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;javax.annotation.jar&lt;/SPAN&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;UL&gt;
&lt;LI&gt;From the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;lt;GlassFish-v3-Installation-Directory&amp;gt;/glassfish/lib/embedded&lt;/SPAN&gt; directory.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;
&lt;DIV style=&quot;FONT-WEIGHT: bold; MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;glassfish-embedded-static-shell.jar &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;1. Add jar files from &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;lt;GlassFish-v3-Installation-Directory&amp;gt;/glassfish/modules&lt;/SPAN&gt; directory. &lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 554px; HEIGHT: 645px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e50.png&quot;&gt;&lt;br /&gt;
Figure-5.31&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 542px; HEIGHT: 355px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e51.png&quot;&gt;&lt;br /&gt;
Figure-5.32&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 558px; HEIGHT: 340px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e52.png&quot;&gt;&lt;br /&gt;
Figure-5.33&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;2. Add library files from &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;lt;GlassFish-v3-Installation-Directory&amp;gt;/glassfish/modules/endorsed&lt;/SPAN&gt; directory&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 548px; HEIGHT: 367px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e54.png&quot;&gt;&lt;br /&gt;
Figure-5.34&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;3. Add library files from &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;lt;GlassFish-v3-Installation-Directory&amp;gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;/glassfish/lib/embedded&lt;/SPAN&gt; directory. &lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 546px; HEIGHT: 324px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e53.png&quot;&gt;&lt;br /&gt;
Figure-5.35&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;4. Verify that the library files are added.&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 572px; HEIGHT: 579px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e55.png&quot;&gt;&lt;br /&gt;
Figure-5.36&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index.html#Exercise_5&quot;&gt;return to top of exercise&lt;/A&gt; &lt;/P&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=5.4_&gt;&lt;/A&gt;(5.4) Create persistence unit&lt;br /&gt;
&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
1. Create persistence unit.&lt;br /&gt;
&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 545px; HEIGHT: 641px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e56.png&quot;&gt;&lt;br /&gt;
Figure-5.41&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;2. Set the values of the persistence unit.&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;For the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Persistence Unit Name&lt;/SPAN&gt; field, take the value given by the IDE. 
&lt;LI&gt;For the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Database Connection&lt;/SPAN&gt; field, select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;jdbc:derby://localhost:1527/sample [app on APP]&lt;/SPAN&gt;. 
&lt;LI&gt;For the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Table Generation Strategy&lt;/SPAN&gt;, select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Drop and Create&lt;/SPAN&gt;. 
&lt;LI&gt;Click Finish.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 535px; HEIGHT: 378px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e57.png&quot;&gt;&lt;br /&gt;
Figure-5.42&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;3. Add entity class to the persistence unit.&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Click Add Class button for the Include Entity Classes section.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 567px; HEIGHT: 565px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e58.png&quot;&gt;&lt;br /&gt;
Figure-5.43&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Select mypackage.Book. 
&lt;LI&gt;Click OK.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 413px; HEIGHT: 252px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e59.png&quot;&gt;&lt;br /&gt;
Figure-5.44&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;4. Change Transaction Type to JTA.&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Select XML tab. 
&lt;LI&gt;Change the value of the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;transaction-type&lt;/SPAN&gt; attribute to &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;JTA&lt;/SPAN&gt;.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 556px; HEIGHT: 594px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e63.png&quot;&gt;&lt;br /&gt;
Figure-5.45&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=5.5&gt;&lt;/A&gt;(5.5) Add testing code&lt;br /&gt;
&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
In this step, you are going to add testing code in which EJBContainer gets created, EJB are deployed and tested.&lt;br /&gt;
&lt;br /&gt;1. Create ItemEJBTest.java.&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Right click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Test Packages&lt;/SPAN&gt; and select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;New-&amp;gt;Java Class&lt;/SPAN&gt;. &lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 543px; HEIGHT: 598px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e60.png&quot;&gt;&lt;br /&gt;
Figure-5.51&lt;br /&gt;
&lt;/DIV&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;For the Class Name field, enter &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;ItemEJBTest&lt;/SPAN&gt;. 
&lt;LI&gt;For the Package field, enter &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;testpackage&lt;/SPAN&gt;. 
&lt;LI&gt;Click Finish.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 531px; HEIGHT: 420px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e61.png&quot;&gt;&lt;br /&gt;
Figure-5.52&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;2. Modify IDE generated code with the one below.&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;package testpackage;&lt;br /&gt;
&lt;br /&gt;import mypackage.Book;&lt;br /&gt;
import javax.ejb.embeddable.EJBContainer;&lt;br /&gt;
import javax.naming.Context;&lt;br /&gt;
import mypackage.ItemEJB;&lt;br /&gt;
import org.junit.AfterClass;&lt;br /&gt;
import org.junit.BeforeClass;&lt;br /&gt;
import org.junit.Test;&lt;br /&gt;
import static org.junit.Assert.*;&lt;br /&gt;
&lt;br /&gt;public class ItemEJBTest {&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static EJBContainer ec;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private static Context ctx;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; @BeforeClass&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void initContainer() throws Exception {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;----Creating EJBContainer...&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;ec = EJBContainer.createEJBContainer();&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx = ec.getContext();&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @AfterClass&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void closeContainer() throws Exception {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ec != null) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;----Closing EJBContainer...&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ec.close();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; @Test&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void createBook() throws Exception {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; System.out.println(&quot;----Looking up EJB...&quot;);&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ItemEJB itemEJB = (ItemEJB) ctx.lookup(&quot;java:global/classes/ItemEJB&quot;);&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ItemEJB itemEJB = new ItemEJB();&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Counts all the books in the database&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int nbBooks = itemEJB.findAllBooks().size();&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Creates a new book&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Book book = new Book();&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; book.setTitle(&quot;Passion&quot;);&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Persists the book to the database&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;----Creating a book...&quot;);&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; book = itemEJB.createBook(book);&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertNotNull(&quot;ID should not be null&quot;, book.getId());&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Checks that there is an extra book in the database&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertEquals(&quot;Should have an extra book&quot;, itemEJB.findAllBooks().size(), nbBooks + 1);&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;
&lt;IMG style=&quot;WIDTH: 572px; HEIGHT: 635px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e62.png&quot;&gt;&lt;br /&gt;
Figure-5.53&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;/DIV&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=5.6&gt;&lt;/A&gt;(5.6) Build a jar file that contains EJB&lt;br /&gt;
&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
1. Do the clean build.&lt;br /&gt;
&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 544px; HEIGHT: 583px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e32.png&quot;&gt;&lt;br /&gt;
Figure-5.61&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;2. Verify that the build was successful.&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 568px; HEIGHT: 629px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e33.png&quot;&gt;&lt;br /&gt;
Figure-5.62&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=5.7&gt;&lt;/A&gt;(5.7) Run the testing&lt;br /&gt;
&lt;/H3&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;1. Right click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ItemEJBTest.java&lt;/SPAN&gt; under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Test Packages-&amp;gt;testpackages&lt;/SPAN&gt; and select either &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Run File &lt;/SPAN&gt;or &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Test File&lt;/SPAN&gt;.&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 554px; HEIGHT: 565px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e34.png&quot;&gt;&lt;br /&gt;
Figure-5.71&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;2. Observe the debugging messages from the testing.&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 562px; HEIGHT: 619px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e64.png&quot;&gt;&lt;br /&gt;
Figure-5.72&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;3. Observe the testing result.&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;If you don&#039;t see the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Testing Results&lt;/SPAN&gt; window, select Window from the top-level menu and select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Output-&amp;gt;Test Results&lt;/SPAN&gt;.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 558px; HEIGHT: 619px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e65.png&quot;&gt;&lt;br /&gt;
Figure-5.73&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Observe that the test passed.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 556px; HEIGHT: 588px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e35.png&quot;&gt;&lt;br /&gt;
Figure-5.74&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Observe the debugging messages.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;IMG style=&quot;WIDTH: 472px; HEIGHT: 550px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e36.png&quot;&gt;&lt;br /&gt;
Figure-5.75&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;Solution: The solution is available as &quot;ready to open and build&quot; NetBeans project as &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ejb3.1_embedded&lt;/SPAN&gt; under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;lt;LAB_UNZIPPED_DIRECTORY&amp;gt;/javaee6_ejb3.1/solution&lt;/SPAN&gt; directory.&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;/DIV&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=5.8&gt;&lt;/A&gt;(5.8) Use APP_NAME JNDI name&lt;br /&gt;
&lt;/H3&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;1. Modify the ItemEJBTest.java as shown below. &lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;package testpackage;&lt;br /&gt;
&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;
import java.util.Map;&lt;br /&gt;
import mypackage.Book;&lt;br /&gt;
import javax.ejb.embeddable.EJBContainer;&lt;br /&gt;
import javax.naming.Context;&lt;br /&gt;
import mypackage.ItemEJB;&lt;br /&gt;
import org.junit.AfterClass;&lt;br /&gt;
import org.junit.BeforeClass;&lt;br /&gt;
import org.junit.Test;&lt;br /&gt;
import static org.junit.Assert.*;&lt;br /&gt;
&lt;br /&gt;public class ItemEJBTest {&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static EJBContainer ec;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private static Context ctx;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @BeforeClass&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void initContainer() throws Exception {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;----Creating EJBContainer...&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; &lt;SPAN style=&quot;COLOR: rgb(255,0,0)&quot;&gt;Map&amp;lt;String, Object&amp;gt; map = new HashMap&amp;lt;String, Object&amp;gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map.put(EJBContainer.APP_NAME, &quot;myapp&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: rgb(0,0,0)&quot;&gt;ec = EJBContainer.createEJBContainer(&lt;/SPAN&gt;map&lt;SPAN style=&quot;COLOR: rgb(0,0,0)&quot;&gt;);&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx = ec.getContext();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @AfterClass&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void closeContainer() throws Exception {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ec != null) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;----Closing EJBContainer...&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ec.close();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Test&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void createBook() throws Exception {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;----Looking up EJB...&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ItemEJB itemEJB = (ItemEJB) ctx.lookup(&quot;java:global/&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;myapp&lt;/SPAN&gt;/ItemEJB&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ItemEJB itemEJB = new ItemEJB();&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Counts all the books in the database&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int nbBooks = itemEJB.findAllBooks().size();&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Creates a new book&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Book book = new Book();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; book.setTitle(&quot;Passion&quot;);&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Persists the book to the database&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;----Creating a book...&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; book = itemEJB.createBook(book);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertNotNull(&quot;ID should not be null&quot;, book.getId());&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Checks that there is an extra book in the database&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertEquals(&quot;Should have an extra book&quot;, itemEJB.findAllBooks().size(), nbBooks + 1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;
2. Do the clean build.&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 575px; HEIGHT: 636px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e32.png&quot;&gt;&lt;br /&gt;
Figure-5.81&lt;br /&gt;
&lt;br /&gt;3. Run the testing.&lt;br /&gt;
&lt;/DIV&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Observe that the testing is successful.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;Solution: The solution is available as &quot;ready to open and build&quot; NetBeans project as &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ejb3.1_embedded_jndi_APP_NAME&lt;/SPAN&gt; under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;lt;LAB_UNZIPPED_DIRECTORY&amp;gt;/javaee6_ejb3.1/solutions&lt;/SPAN&gt; directory.&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/DIV&gt;&lt;br /&gt;

&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;Summary&lt;/H3&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;In this exercise,&amp;nbsp; you have learned how to test EJB through &quot;Embeddable EJB container&quot; feature of EJB 3.1, in which EJB container can be created programmatically and EJB are deployed and tested.&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;&lt;/P&gt;&lt;/div&gt;&lt;br /&gt;

&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;/DIV&gt;
&lt;H2&gt;&lt;A name=Exercise_6&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;Exercise 6: EJB and RESTful service&lt;/SPAN&gt;&lt;br /&gt;
&lt;/H2&gt;
&lt;p id=&quot;more93_5&quot; class=&quot;moreless_fold&quot;&gt;&lt;span style=&quot;cursor: pointer;&quot; onclick=&quot;toggleMoreLess(this, &#039;93_5&#039;,&#039;더보기&#039;,&#039;접기&#039;); return false;&quot;&gt;더보기&lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;content93_5&quot; class=&quot;moreless_content&quot; style=&quot;display: none;&quot;&gt;&lt;br /&gt;

&lt;P class=pBody style=&quot;MARGIN-LEFT: 40px&quot;&gt;In JAX-RS 1.1, EJB can be exposed as RESTful web service.&lt;br /&gt;
&lt;/P&gt;
&lt;OL&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index.html#6.1&quot;&gt;Verify a simple EJB application is working&lt;/A&gt;&lt;br /&gt;

&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index.html#6.2&quot;&gt;Expose EJB as restful web service&lt;br /&gt;
&lt;/A&gt;
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index.html#6.3&quot;&gt;Use &quot;Curl&quot; to test response format&lt;/A&gt; 
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/#6.4&quot;&gt;Use @ApplicationPath annotation&lt;/A&gt;&lt;br /&gt;
&lt;/LI&gt;&lt;/OL&gt;&lt;/OL&gt;&lt;br /&gt;

&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=6.1&gt;&lt;/A&gt;(6.1) Verify a simple EJB application is working&lt;br /&gt;
&lt;/H3&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;In this step, you are going to verify a simple EJB application is working as expected.&amp;nbsp; We are going to expose Session bean as RESTful services.&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;1. Open &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;ejb3.1_rest_base&lt;/SPAN&gt; NetBeans project (from &quot;Lab samples&quot;).&amp;nbsp; &lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;File&lt;/SPAN&gt;-&amp;gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Open Project (Ctrl+Shift+O)&lt;/SPAN&gt;.&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;/SPAN&gt; 
&lt;LI&gt;Observe that the&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; Open Project&lt;/SPAN&gt; dialog box appears. &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Browse down to &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;lt;LAB_UNZIPPED_DIRECTORY&amp;gt;/javaee6_ejb3.1/samples&lt;/SPAN&gt; directory directory.&amp;nbsp; &lt;br /&gt;

&lt;LI&gt;Select &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;ejb3.1_rest_base&lt;/SPAN&gt;. &lt;br /&gt;

&lt;LI&gt;Click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Open Project&lt;/SPAN&gt;. &lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Observe that the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ejb3.1_rest_base&lt;/SPAN&gt; project node appears under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Projects &lt;/SPAN&gt;tab window. &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;2. Build and run &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ejb3.1_rest_base &lt;/SPAN&gt;project. &lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;Right-click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ejb3.1_rest_base&lt;/SPAN&gt; project and select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Run&lt;/SPAN&gt;. 
&lt;LI&gt;Browser gets displayed. &lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 562px; HEIGHT: 625px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e66.png&quot;&gt;&lt;br /&gt;
Figure-6.11&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Observe that the newly created book title is displayed.&amp;nbsp; This verifies the sample app is a working EJB application.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 562px; HEIGHT: 613px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e67.png&quot;&gt;&lt;br /&gt;
Figure-6.12&lt;br /&gt;
&lt;br /&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/DIV&gt;&lt;br /&gt;
&lt;/DIV&gt;&lt;br /&gt;

&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=6.2&gt;&lt;/A&gt;(6.2) Make the Session bean as RESTful service&lt;/H3&gt;&lt;br /&gt;

&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;1. Modify&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; ItemEJB.java&lt;/SPAN&gt; as shown below. The code fragments that need to be added are highlighted in bold and red-colored font.&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;package mypackage;&lt;br /&gt;
&lt;br /&gt;import javax.ejb.Stateless;&lt;br /&gt;
import javax.persistence.EntityManager;&lt;br /&gt;
import javax.persistence.PersistenceContext;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;import javax.ws.rs.GET;&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;import javax.ws.rs.Path;&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;import javax.ws.rs.PathParam;&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;import javax.ws.rs.Produces;&lt;/SPAN&gt;&lt;br /&gt;
&lt;br /&gt;@Stateless&lt;br /&gt;
&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;@Path(&quot;/items&quot;)&lt;/SPAN&gt;&lt;br /&gt;
public class ItemEJB {&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @PersistenceContext&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private EntityManager em;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Book createBook(Book book) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; em.persist(book);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return book;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt; @GET&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Path(&quot;{bookKey}&quot;)&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Produces({&quot;application/xml&quot;, &quot;application/json&quot;})&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public Book getBook(&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;@PathParam(&quot;bookKey&quot;)&lt;/SPAN&gt; String key) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Book theBook = em.find(Book.class, new Long(key));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return theBook;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;@GET&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public List&amp;lt;Book&amp;gt; findAllBooks() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return em.createNamedQuery(&quot;findAllBooks&quot;).getResultList();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;
&lt;IMG style=&quot;WIDTH: 553px; HEIGHT: 510px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e68.png&quot;&gt;&lt;br /&gt;
Figure-6.21&lt;br /&gt;
&lt;br /&gt;2. Modify &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Book.java&lt;/SPAN&gt; as shown below.&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;package mypackage;&lt;br /&gt;
&lt;br /&gt;import java.io.Serializable;&lt;br /&gt;
import javax.persistence.*;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;import javax.xml.bind.annotation.XmlRootElement;&lt;/SPAN&gt;&lt;br /&gt;
&lt;br /&gt;@Entity&lt;br /&gt;
@NamedQueries({&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @NamedQuery(name = &quot;findAllBooks&quot;, query = &quot;SELECT b FROM Book b&quot;)&lt;br /&gt;
})&lt;br /&gt;
&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;@XmlRootElement&lt;/SPAN&gt;&lt;br /&gt;
public class Book implements Serializable {&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Id&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @GeneratedValue&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private Long id;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private String title;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Long getId() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return id;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String getTitle() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return title;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setTitle(String title) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.title = title;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;
&lt;IMG style=&quot;WIDTH: 561px; HEIGHT: 379px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e69.png&quot;&gt;&lt;br /&gt;
Figure-6.22&lt;br /&gt;
&lt;br /&gt;3. Build and run the application and add two Book items into Book table.&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 557px; HEIGHT: 679px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e70.png&quot;&gt;&lt;br /&gt;
Figure-6.23&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 564px; HEIGHT: 658px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e71.png&quot;&gt;&lt;br /&gt;
Figure-6.24&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 534px; HEIGHT: 657px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e72.png&quot;&gt;&lt;br /&gt;
Figure-6.25&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 559px; HEIGHT: 666px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e73.png&quot;&gt;&lt;br /&gt;
Figure-6.26&lt;br /&gt;
&lt;br /&gt;4. Verify that the BOOK table has two entries.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 546px; HEIGHT: 617px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e83.png&quot;&gt;&lt;br /&gt;
&lt;br /&gt;5. Test the ItemEJB RESTful web service.&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 551px; HEIGHT: 639px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e84.png&quot;&gt;&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Observe that the browser gets displayed.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 567px; HEIGHT: 664px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e74.png&quot;&gt;&lt;br /&gt;
&lt;br /&gt;6. Access ItemEJB as RESTful web services using browser.&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;From your browser, go to &lt;A href=&quot;http://localhost:8080/ejb3.1_rest_base/resources/items&quot;&gt;http://localhost:8080/ejb3.1_rest_base/resources/items&lt;/A&gt; 
&lt;LI&gt;Observe that the two books you added are displayed in XML format.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 548px; HEIGHT: 612px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e74.png&quot;&gt;&lt;br /&gt;
Figure-6.27&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 11px; HEIGHT: 12px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/0stop.jpg&quot;&gt; &lt;SPAN style=&quot;COLOR: rgb(255,0,0)&quot;&gt;Trouble-shooting&lt;/SPAN&gt;: If you are using Safari over MacOS, the response might not be prorperly formated in XML.&amp;nbsp; Please use Firefox instead..&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;From your browser, go to &lt;A href=&quot;http://localhost:8080/ejb3.1_rest_base/resources/items/1&quot;&gt;http://localhost:8080/ejb3.1_rest_base/resources/items/1&lt;/A&gt; 
&lt;LI&gt;Observe that the book item whose ID is 1 is displayed in XML format.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 532px; HEIGHT: 579px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e75.png&quot;&gt;&lt;br /&gt;
Figure-6.28&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;&lt;/DIV&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=6.3&gt;&lt;/A&gt;(6.3) Use &quot;Curl&quot; utility &lt;br /&gt;
&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
0. Install &quot;Curl&quot; utility only if you are running Windows or OpenSolaris.&amp;nbsp; &lt;SPAN style=&quot;COLOR: rgb(255,0,0)&quot;&gt;For MacOS or other Linux OS&#039;es, &quot;Curl&quot; utility comes with the OS.&amp;nbsp; Reinstallation of &quot;Curl&quot; might cause some mal-functioning behavior on Mac OS X or other Linux OS&#039;es.&lt;/SPAN&gt;&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;From your browser, go to &lt;A href=&quot;http://curl.haxx.se/&quot;&gt;http://curl.haxx.se/&lt;/A&gt; 
&lt;LI&gt;Download and install it.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 568px; HEIGHT: 607px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e76.png&quot;&gt;&lt;br /&gt;
&lt;br /&gt;1. Retrieve the response in JSON format.&lt;br /&gt;
The command to type in the terminal is highlighted in red color, the answer in blue color.&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;curl -H &quot;Accept:application/json&quot; http://localhost:8080/ejb3.1_rest_base/resources/items&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(0,0,255)&quot;&gt;{&quot;book&quot;:[{&quot;title&quot;:&quot;Life is passion!&quot;},{&quot;title&quot;:&quot;2nd book title&quot;}]}&lt;/SPAN&gt;&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;
&lt;IMG style=&quot;WIDTH: 567px; HEIGHT: 143px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e77.png&quot;&gt;&lt;br /&gt;
Figure-6.31&lt;br /&gt;
&lt;br /&gt;2. Retrieve the response in XML format&lt;br /&gt;
The command to type in the terminal is highlighted in red color, the answer in blue color.&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;curl -H &quot;Accept:application/xml&quot; http://localhost:8080/ejb3.1_rest_base/resources/items&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(0,0,255)&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&amp;gt;&amp;lt;books&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title&amp;gt;Life is passion!&amp;lt;/title&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title&amp;gt;2nd book title&amp;lt;/title&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/books&amp;gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;
&lt;IMG style=&quot;WIDTH: 562px; HEIGHT: 112px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e78.png&quot;&gt;&lt;br /&gt;
Figure-6.32&lt;br /&gt;
&lt;br /&gt;Solution: The solution is available as &quot;ready to open and build&quot; NetBeans project as &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ejb3.1_rest&lt;/SPAN&gt; under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;lt;LAB_UNZIPPED_DIRECTORY&amp;gt;/javaee6_ejb3.1/solutions&lt;/SPAN&gt; directory. (You will have to use &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ejb3.1_rest&lt;/SPAN&gt; rather than &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ejb3.1_rest_base&lt;/SPAN&gt; as application context.)&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;/DIV&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=6.4&gt;&lt;/A&gt;(6.4) Use @ApplicationPath annotation&lt;br /&gt;
&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
1. Add ApplicationConfig.java.&amp;nbsp; Note that the value of the Application path is et to &lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(51,51,255)&quot;&gt;resources1&lt;/SPAN&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;package mypackage;&lt;br /&gt;
&lt;br /&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(255,0,0)&quot;&gt;@javax.ws.rs.ApplicationPath(&quot;&lt;SPAN style=&quot;COLOR: rgb(51,51,255)&quot;&gt;resources1&lt;/SPAN&gt;&quot;)&lt;/SPAN&gt;&lt;br /&gt;
public class ApplicationConfig&amp;nbsp; extends javax.ws.rs.core.Application {&lt;br /&gt;
&lt;br /&gt;}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;
&lt;IMG style=&quot;WIDTH: 552px; HEIGHT: 535px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e87.png&quot;&gt;&lt;br /&gt;
Figure-6.41&lt;br /&gt;
&lt;br /&gt;2. Build and run the application and add two Book items into Book table.&lt;br /&gt;
&lt;br /&gt;3. Now observe that you can use &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;resources1 &lt;/SPAN&gt;application path.&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 554px; HEIGHT: 625px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e88.png&quot;&gt;&lt;br /&gt;
Figure-6.42&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 556px; HEIGHT: 627px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javaee6_ejb3.1/index_files/1_e89.png&quot;&gt;&lt;br /&gt;
Figure-6.43 &lt;/DIV&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;/DIV&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;Summary&lt;/H3&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;In this exercise, you have learned how to use JAX-RS annotations to expose EJB as RESTful web service.&lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;/P&gt;&lt;/div&gt;&lt;br /&gt;

&lt;H2&gt;&lt;A name=Homework_Exercise&gt;&lt;/A&gt;&lt;A name=Homework&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;Homework Exercise&lt;/SPAN&gt;&lt;br /&gt;
&lt;/H2&gt;&lt;br /&gt;

&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;1. The homework #1 is to modify &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;EJB-in-a-war&lt;/SPAN&gt; project you did in Exercise 1 above as following.&amp;nbsp;&amp;nbsp; (You might want to create a new project by copying &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;my_ejb3.1 &lt;/SPAN&gt;project.&amp;nbsp; You can name the newly copied project in any way you want.&amp;nbsp; Here it is referred to as &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;my_ejb3.1&lt;/SPAN&gt;.) 
&lt;UL&gt;
&lt;LI&gt;Exercise point: EJB in a war packaging 
&lt;UL&gt;
&lt;LI&gt;Add another stateless bean called &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;YourSessionBean &lt;/SPAN&gt;with the following two methods. 
&lt;UL&gt;
&lt;LI&gt;add(int x, int y) 
&lt;LI&gt;multiply(int x, int y) &lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;From the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;HelloServlet&lt;/SPAN&gt;, call these two methods using x value 10 and y value 6 and display the result&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Exercise point: Singleton&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Create a Singleton EJB which has the following two variables, which are used as a total values of the addition and multiplication&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;int total_addition 
&lt;LI&gt;int total_multiplication&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Exercise point: Timer 
&lt;UL&gt;
&lt;LI&gt;Use timer to display the value of&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; total_addition &lt;/SPAN&gt;and&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; total_multiplication&lt;/SPAN&gt; every hour of the day at the GlassFish v3 server log. (Basically use System.out.println(..) method.)&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;2. The homework #2 is to create &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;my_ejb3.1_embedded&lt;/SPAN&gt; project as following.&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Exercise point: EJB embedded 
&lt;UL&gt;
&lt;LI&gt;Create Java SE application in which the add(..) and multiply(..) methods are tested&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;3&lt;SPAN style=&quot;COLOR: rgb(0,0,0)&quot;&gt;. Send the following files to&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,0)&quot;&gt; &lt;A href=&quot;mailto:javaee6-homeworks@sun.com&quot;&gt;javaee6-homeworks@sun.com&lt;/A&gt; with &lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(0,0,0)&quot;&gt;Subject &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: rgb(0,0,0)&quot;&gt;as &lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(0,0,0)&quot;&gt;homework_javaee6_ejb3.1.&lt;/SPAN&gt;&lt;BR style=&quot;COLOR: rgb(0,0,0)&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(0,0,0)&quot;&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;UL style=&quot;MARGIN-LEFT: 40px; COLOR: rgb(0,0,0)&quot;&gt;
&lt;LI&gt;Zip file of the the&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; my_ejb3.1&lt;/SPAN&gt; and &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;my_ejb3.1_embedded&lt;/SPAN&gt; NetBeans projects.&amp;nbsp; (Someone else should be able to open and runthem as NetBeans projects.)&amp;nbsp; You can use your favorite zip utility or you can use &quot;jar&quot; utility that comes with JDK as following.&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;cd &amp;lt;parent directory that contains &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;my_ejb3.1&lt;/SPAN&gt; directory&amp;gt; (assuming you named your project as &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;my_ejb3.1&lt;/SPAN&gt;)&lt;br /&gt;

&lt;LI&gt;jar cvf my_ejb3.1.zip my_ejb3.1 (&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;my_ejb3.1 &lt;/SPAN&gt;should contain &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;nbproject &lt;/SPAN&gt;directory)&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 80px&quot;&gt;Please reduce the size of the zip file by right clicking the project and then selecting Clean before zipping the file.&lt;br /&gt;
&lt;/DIV&gt;
&lt;UL style=&quot;MARGIN-LEFT: 40px; COLOR: rgb(0,0,0)&quot;&gt;
&lt;LI&gt;Captured output screen&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; &lt;/SPAN&gt;- name it as &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;homework_javaee6_ejb3.1.gif&lt;/SPAN&gt; or &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;homework_javaee6_ejb3.1&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;_embedded&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;.jpg&lt;/SPAN&gt; (or &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;homework_javaee6_ejb3.1.&amp;lt;whatever graphics format&amp;gt;&lt;/SPAN&gt;) and as &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;homework_javaee6_ejb3.1&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;_embedded&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;.gif&lt;/SPAN&gt; or &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;homework_javaee6_ejb3.1&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;_embedded&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;.jpg&lt;/SPAN&gt; (or &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;homework_javaee6_ejb3.1&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;_embedded&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;.&amp;lt;whatever graphics format&amp;gt;&lt;/SPAN&gt;) 
&lt;UL&gt;
&lt;LI&gt;Any screen capture that shows that your program is working is good enough.&amp;nbsp; &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;br /&gt;
&lt;br /&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://nobaksan.tistory.com/attachment/cfile8.uf@135240014B53026E67E0A7.zip&quot;&gt;&lt;img src=&quot;http://cfs.tistory.com/blog/image/extension/zip.gif&quot; alt=&quot;&quot; style=&quot;vertical-align: middle;&quot; /&gt; 4534_javaee6_ejb3.1.zip&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://nobaksan.tistory.com/attachment/cfile8.uf@1906ED014B53027F01E615.pdf&quot;&gt;&lt;img src=&quot;http://cfs.tistory.com/blog/image/extension/pdf.gif&quot; alt=&quot;&quot; style=&quot;vertical-align: middle;&quot; /&gt; Session4EJB31.pdf&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://nobaksan.tistory.com/attachment/cfile5.uf@1239AC014B5302949D771E.zip&quot;&gt;&lt;img src=&quot;http://cfs.tistory.com/blog/image/extension/zip.gif&quot; alt=&quot;&quot; style=&quot;vertical-align: middle;&quot; /&gt; my_ejb3.1.zip&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-93-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-news-widget&quot; style=&quot;width: 100%; text-align: center&quot;&gt;
						&lt;embed src=&quot;http://api.v.daum.net/static/recombox3.swf?nid=5479964&quot; quality=&quot;high&quot; bgcolor=&quot;#ffffff&quot; width=&quot;67&quot; height=&quot;80&quot; type=&quot;application/x-shockwave-flash&quot;&gt;&lt;/embed&gt;&lt;/div&gt;&lt;br /&gt;&lt;iframe src=&quot;http://api.v.daum.net/open/related_news?news_id=5479964&amp;display_type=widget&amp;skin=1&amp;frameContents=both&quot; style=&quot;width:100%;height:160px;&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;</description>
			<category>J2EE</category>
			<author>들기름왕자</author>
			<guid>http://wmp.kr/93</guid>
			<comments>http://wmp.kr/entry/06-Java-EE-6-EJB-31#entry93comment</comments>
			<pubDate>Sun, 17 Jan 2010 21:29:30 +0900</pubDate>
		</item>
		<item>
			<title>29. J2SE 5.0 Concurrency</title>
			<link>http://wmp.kr/entry/29-J2SE-50-Concurrency</link>
			<description>&lt;H3 class=tutorial&gt;&lt;A name=Tutorial_Exercises&gt;&lt;/A&gt;Lab Exercises&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index.html#Exercise_1&quot;&gt;Exercise 1: ThreadPool (30 minutes)&lt;/A&gt;
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index.html#Exercise_2&quot;&gt;Exercise 2: Executors (30 minutes)&lt;/A&gt;
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index.html#Exercise_3&quot;&gt;Exercise 3: Callable and Future (30 minutes)&lt;/A&gt; 
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index.html#Exercise_4&quot;&gt;Exercise 4: Semaphore(30 minutes)&lt;/A&gt; 
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index.html#Exercise_5&quot;&gt;Exercise 5: Blocking queue (30 minutes)&lt;/A&gt; 
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index.html#Homework&quot;&gt;Homework Exercise (for people who are taking Sang Shin&#039;s &quot;Java Programming online course&quot;)&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;br /&gt;

&lt;UL&gt;
&lt;UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;!-- ===================================================================================== --&gt;
&lt;H2&gt;&lt;A name=Exercise_1&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;Exercise 1: ThreadPoolExecutor&lt;/SPAN&gt;&lt;br /&gt;
&lt;/H2&gt;
&lt;DIV&gt;
&lt;p id=&quot;more92_0&quot; class=&quot;moreless_fold&quot;&gt;&lt;span style=&quot;cursor: pointer;&quot; onclick=&quot;toggleMoreLess(this, &#039;92_0&#039;,&#039;더보기&#039;,&#039;접기&#039;); return false;&quot;&gt;더보기&lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;content92_0&quot; class=&quot;moreless_content&quot; style=&quot;display: none;&quot;&gt;&lt;br /&gt;
In this exercise, you will learn how to create a pool of threads using the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ThreadPoolExecutor &lt;/SPAN&gt;class. You also will learn how these pool of threads are used to execute tasks. &lt;br /&gt;

&lt;OL&gt;
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index.html#1.1&quot;&gt;Build and run a server that receives connection request (using ThreadPoolExecutor)&lt;/A&gt; 
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index.html#1.2&quot;&gt;Build and run two instances of clients&lt;/A&gt; &lt;/LI&gt;&lt;/OL&gt;&lt;br /&gt;

&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=1.1&gt;&lt;/A&gt;(1.1) Build and run a server that receives connection request (using ThreadPoolExecutor)&lt;br /&gt;
&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
0. Start NetBeans IDE if you have not done so yet.&lt;br /&gt;
1. Create a new NetBeans project&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;File&lt;/SPAN&gt;-&amp;gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;New Project (Ctrl+Shift+N)&lt;/SPAN&gt;. The &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;New Project&lt;/SPAN&gt; dialog box appears. 
&lt;LI&gt;Under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Choose Project&lt;/SPAN&gt; pane, select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;General &lt;/SPAN&gt;under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Categories &lt;/SPAN&gt;and &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Java Application&lt;/SPAN&gt; under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Projects&lt;/SPAN&gt;. &lt;br /&gt;

&lt;LI&gt;Click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Next&lt;/SPAN&gt;. &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Name and Location&lt;/SPAN&gt; pane, for the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Project Name&lt;/SPAN&gt; field, type in &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;COLOR: rgb(51,51,255)&quot;&gt;ServerUsingThreadPoolExecutor&lt;/SPAN&gt; &lt;/SPAN&gt;as project name. 
&lt;LI&gt;For &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Create Main Class&lt;/SPAN&gt; field, type in &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;COLOR: rgb(51,51,255)&quot;&gt;ServerUsingThreadPoolExecutor&lt;/SPAN&gt;&lt;/SPAN&gt;.&amp;nbsp; (Figure-1.10 below)&lt;br /&gt;

&lt;LI&gt;Click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Finish&lt;/SPAN&gt;. &lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 601px; HEIGHT: 409px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index_files/1_concurrency5.png&quot;&gt;&lt;br /&gt;
Figure-1.10: Create a new project&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Observe that &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ServerUsingThreadPoolExecutor &lt;/SPAN&gt;project appears and IDE generated &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ServerUsingThreadPoolExecutor.java&lt;/SPAN&gt; is displayed in the source editor window of NetBeans IDE. &lt;/LI&gt;&lt;/UL&gt;2. Modify the IDE generated &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ServerUsingThreadPoolExecutor.java &lt;/SPAN&gt;as shown in Code-1.11 below.&amp;nbsp; Study the code by paying special attention to the bold fonted parts.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;This class acts as a listener on an IP port and echo characters sent to it when a connection is made.&amp;nbsp; This is similar in functionality to a web server type application.&amp;nbsp; Since we want to be able to handle lots of short living connections simultaneously, we would create a separate thread of execution for each connection.&amp;nbsp; Since thread creation is a costly operation to the JVM, the best way to achieve this is to create and use a pool of threads.&amp;nbsp; A thread in this pool then can be re-used by a new connection when a previous connection is done with it. &lt;br /&gt;
&lt;br /&gt;For this example, we use an implementation of the Executor interface, ThreadPoolExecutor.&amp;nbsp; To create a new instance of this, we must also first create a Queue to be used for the pool, which in this example is an ArrayBlockingQueue which provides a fixed sized, queue which is protected to ensure multiple threads can add items without contention problems.&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;import java.net.*;&lt;br /&gt;
import java.io.*;&lt;br /&gt;
import java.util.concurrent.*;&lt;br /&gt;
&lt;br /&gt;public class ServerUsingThreadPoolExecutor {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private final static int MAX_THREADS = 2;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private final ServerSocket serverSocket;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private final ThreadPoolExecutor pool;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private final ArrayBlockingQueue&amp;lt;Runnable&amp;gt; workQueue;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp; Constructor&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; **/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public&lt;SPAN style=&quot;COLOR: rgb(51,51,255)&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(51,51,255)&quot;&gt;ServerUsingThreadPoolExecutor&lt;/SPAN&gt;(int port, int poolSize) throws IOException {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; Create a new ServerSocket to listen for incoming connections&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; serverSocket = new ServerSocket(port);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; In order to create a pool of threads, we must first have a queue&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp; that will be used to hold the work tasks before they are executed&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp; For this example we use a ArrayBlockingQueue that can hold the&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp; same number of tasks as we have maximum threads&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; workQueue = new ArrayBlockingQueue&amp;lt;Runnable&amp;gt;(MAX_THREADS);&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; Now create a ThreadPool.&amp;nbsp; The initial and maximum number of&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp; threads are the same in this example.&amp;nbsp; Please note that the&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp; MAX_THREADS is set to 2.&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pool = new ThreadPoolExecutor(MAX_THREADS, MAX_THREADS,&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 60, TimeUnit.SECONDS, workQueue);&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp; Service requests&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; **/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;serviceRequests&lt;/SPAN&gt;() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int count = 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int qLength = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (;;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((qLength = workQueue.size()) &amp;gt; 0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Queue length is &quot; + qLength);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; pool.execute(new ConnectionHandler(serverSocket.accept(), count++));&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException ioe) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;IO Error in ConnectionHandler: &quot; + ioe.getMessage());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pool.shutdown();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp; Main entry point&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param args Command line arguments&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; **/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Listening for connections...&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServerUsingThreadPoolExecutor ce = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; ce = &lt;SPAN style=&quot;COLOR: rgb(51,51,255)&quot;&gt;new ServerUsingThreadPoolExecutor&lt;/SPAN&gt;(8100, 4);&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Serve incoming connection request until interrupted.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp; ce.serviceRequests();&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException ioe) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;IO Error creating listener: &quot; + ioe.getMessage());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;Code-1.11: ServerUsingThreadPoolExecutor.java&lt;br /&gt;
&lt;br /&gt;3. Write &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ConnectionHandler.java&lt;/SPAN&gt; as shown in Code-1.12 below.&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 602px; HEIGHT: 412px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index_files/1_concurrency8.png&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;/SPAN&gt;import java.io.*;&lt;br /&gt;
import java.net.*;&lt;br /&gt;
import java.util.concurrent.*;&lt;br /&gt;
&lt;br /&gt;public class ConnectionHandler implements Runnable {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private final Socket socket;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private final int connectionID;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp; Constructor&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param socket The socket on which incoming data will arrive&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; **/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public ConnectionHandler(Socket socket, int connectionID) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.socket = socket;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.connectionID = connectionID;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp; run method to do the work of the handler&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; **/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void run() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Connection &quot; + connectionID + &quot;, started&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InputStream is = socket.getInputStream();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; Loop to do something with the socket here&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (true) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] inData = new byte[100];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; If the number of bytes read is less than zero then the connection&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp; has been terminated so we end the thread&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (is.read(inData) &amp;lt; 0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;[&quot; + connectionID + &quot;]: &quot; + new String(inData));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException ioe) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Ignore&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Connection &quot; + connectionID + &quot;, ended&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;Code-1.12: ConnectionHandler.java&lt;br /&gt;
&lt;br /&gt;4. Build and run the project&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Right click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ServerUsingThreadPoolExecutor &lt;/SPAN&gt;project and select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Run&lt;/SPAN&gt;. 
&lt;LI&gt;Observe the result in the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Output &lt;/SPAN&gt;window. (Figure-1.13 below)&amp;nbsp; The server is waiting for connection request from clients.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: helvetica,arial,sans-serif&quot;&gt;Listening for connections...&lt;/SPAN&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;Figure-1.13: Result of running ServerUsingThreadPoolExecutor application&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 612px; HEIGHT: 615px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index_files/1_concurrency9.png&quot;&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;

&lt;HR style=&quot;WIDTH: 100%; HEIGHT: 2px&quot;&gt;
&lt;SPAN style=&quot;COLOR: rgb(255,0,0)&quot;&gt;Trouble-shooting&lt;/SPAN&gt;:&amp;nbsp; If you see the following error condition, it is highly likely due to the fact that you have not terminate the server process that uses the same port - port 8100 in this example.&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;IO Error creating listener: Address already in use: JVM_Bind&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;
&lt;SPAN style=&quot;COLOR: rgb(51,51,255)&quot;&gt;Solution&lt;/SPAN&gt;: Terminate the previously started process that uses the same port.&amp;nbsp; Click Runtime tab window and expand Processes node and then right click the process and select Terminate Process.&amp;nbsp; Or as a brutal method, exiting the NetBeans IDE will do it as well.&amp;nbsp; Also you can use the different port number other than 8100.&amp;nbsp; In this case, you will also need to change the hard-coded port number of the client.&lt;br /&gt;

&lt;HR style=&quot;WIDTH: 100%; HEIGHT: 2px&quot;&gt;
&lt;br /&gt;
&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(51,51,255)&quot;&gt;Solution&lt;/SPAN&gt;: This exercise up to this point is provided as a ready-to-open-and-run NetBeans project as part of hands-on lab zip file. You can find it as &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;lt;LAB_UNZIPPED_DIRECTORY&amp;gt;/javase5concurrency/samples/&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ServerUsingThreadPoolExecutor&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;.&amp;nbsp; &lt;/SPAN&gt;You can just open it and run it.&amp;nbsp; &lt;br /&gt;
&lt;/DIV&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;

&lt;UL&gt;&lt;/UL&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;&lt;/DIV&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=1.2&gt;&lt;/A&gt;(1.2) Build and run two instances of ConnectionClient&lt;br /&gt;
&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
1. Create a new NetBeans project&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;File&lt;/SPAN&gt;-&amp;gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;New Project (Ctrl+Shift+N)&lt;/SPAN&gt;. The &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;New Project&lt;/SPAN&gt; dialog box appears. 
&lt;LI&gt;Under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Choose Project&lt;/SPAN&gt; pane, select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;General &lt;/SPAN&gt;under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Categories &lt;/SPAN&gt;and &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Java Application&lt;/SPAN&gt; under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Projects&lt;/SPAN&gt;. &lt;br /&gt;

&lt;LI&gt;Click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Next&lt;/SPAN&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;LI&gt;Under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Name and Location&lt;/SPAN&gt; pane, for the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Project Name&lt;/SPAN&gt; field, type in &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;COLOR: rgb(51,51,255)&quot;&gt;ConnectionClient&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; &lt;/SPAN&gt;as project name. 
&lt;LI&gt;For &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Create Main Class&lt;/SPAN&gt; field, type in &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;COLOR: rgb(51,51,255)&quot;&gt;ConnectionClient&lt;/SPAN&gt;&lt;/SPAN&gt;.&amp;nbsp; &lt;br /&gt;

&lt;LI&gt;Click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Finish&lt;/SPAN&gt;. &lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 607px; HEIGHT: 372px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index_files/1_concurrency7.png&quot;&gt;&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Observe that &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ConnectionClient &lt;/SPAN&gt;project appears and IDE generated &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ConnectionClient.java&lt;/SPAN&gt; is displayed in the source editor window of NetBeans IDE. &lt;/LI&gt;&lt;/UL&gt;2. Modify the IDE generated &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ConnectionClient.java &lt;/SPAN&gt;as shown in Code-1.21 below.&amp;nbsp; Study the code by paying special attention to the bold fonted parts.&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;import java.net.*;&lt;br /&gt;
import java.io.*;&lt;br /&gt;
import java.util.concurrent.*;&lt;br /&gt;
&lt;br /&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;/**&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;*&amp;nbsp; ConnectionClient pass characters from the keyboard to a socket.&amp;nbsp; Simplified version of&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;*&amp;nbsp; telnet&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;*/&lt;/SPAN&gt;&lt;br /&gt;
public class ConnectionClient {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp; Main entry point&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param args Command line arguments&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; **/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String host = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int port = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (args.length &amp;lt; 2) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; host = &quot;127.0.0.1&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; port = 8100;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OutputStream os = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; // The Socket() call returns only when the connection&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // request from this client is accepted by the server.&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt; Socket s = new Socket(host, port);&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; os = s.getOutputStream();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Connection established to server. Type characters and press &amp;lt;ENTER&amp;gt; to send&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Type EXIT and press &amp;lt;RETURN&amp;gt; to exit&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; Read data from the standard input and send it to the remote socket&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (true) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] inData = new byte[100];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.in.read(inData);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String inString = new String(inData);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (inString.substring(0, 4).compareTo(&quot;EXIT&quot;) == 0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.exit(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; os.write(inData);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (Exception e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Failed to connect to remote host: &quot; +&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.getMessage());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;Code-1.21: ConnectionClient.java&lt;br /&gt;
&lt;br /&gt;3. Build and run the project&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Right click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ConnectionClient &lt;/SPAN&gt;project and select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Run&lt;/SPAN&gt;. 
&lt;LI&gt;Observe the result in the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Output &lt;/SPAN&gt;window. (Figure-1.23 below) &lt;/LI&gt;&lt;/UL&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;Connection established to server. Type characters and press &amp;lt;ENTER&amp;gt; to send&lt;br /&gt;
Type EXIT and press &amp;lt;RETURN&amp;gt; to exit&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;Figure-1.23: Result of running ConnectionClient application&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 578px; HEIGHT: 543px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index_files/1_concurrency10.png&quot;&gt;&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Enter some value into the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Input &lt;/SPAN&gt;field and press &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Enter &lt;/SPAN&gt;key. (Figure-1.25 below)&amp;nbsp; In this example below, &quot;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;This is a message from ConnectionClient instance 1&lt;/SPAN&gt;&quot; is entered. &lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 609px; HEIGHT: 590px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index_files/1_concurrency1.png&quot;&gt;&lt;br /&gt;
Figure-1.25: Enter a message &lt;br /&gt;
&lt;br /&gt;
&lt;HR style=&quot;WIDTH: 100%; HEIGHT: 2px&quot;&gt;
&lt;SPAN style=&quot;COLOR: rgb(255,0,0)&quot;&gt;Trouble-shooting&lt;/SPAN&gt;:&amp;nbsp; If you see the following error condition, it is highly likely due to the fact that you have not started the server or firewall blocks the connection request.&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;Failed to connect to remote host: Connection refused: connect&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;
&lt;SPAN style=&quot;COLOR: rgb(51,51,255)&quot;&gt;Solution&lt;/SPAN&gt;: Start the server.&amp;nbsp; Also disable firewall on your computer,&lt;br /&gt;

&lt;HR style=&quot;WIDTH: 100%; HEIGHT: 2px&quot;&gt;
&lt;br /&gt;
4. Observe the output on the server side.&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Click the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ServerUsingThreadPoolExecutor &lt;/SPAN&gt;tab window to see the output of the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ServerUsingThreadPoolExecutor&lt;/SPAN&gt;.&lt;br /&gt;

&lt;LI&gt;Observe that the message it received from &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ConnectionClient &lt;/SPAN&gt;is displayed. (Figure-1.26 below)&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 612px; HEIGHT: 556px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index_files/1_concurrency2.png&quot;&gt;&lt;br /&gt;
Figure-1.26: Connection request from ConnectionClient is received and message from ConnectionClient is displayed&lt;br /&gt;
&lt;br /&gt;5. Build and run another instance of &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ConnectionClient&lt;/SPAN&gt;.&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Right click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ConnectionClient &lt;/SPAN&gt;project and select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Run&lt;/SPAN&gt;.&amp;nbsp; This will start the 2nd instance of the ConnectionClient. &lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 598px; HEIGHT: 592px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index_files/1_concurrency11.png&quot;&gt;&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Observe the result in the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Output &lt;/SPAN&gt;window has a &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ConnectionClient (run) #2&lt;/SPAN&gt; tab. (Figure-1.23 below) &lt;/LI&gt;&lt;/UL&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;Connection established to server. Type characters and press &amp;lt;ENTER&amp;gt; to send&lt;br /&gt;
Type EXIT and press &amp;lt;RETURN&amp;gt; to exit&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;Figure-1.23: Result of running ConnectionClient application&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 605px; HEIGHT: 592px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index_files/1_concurrency12.png&quot;&gt;&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Enter some value and press Enter key. (Figure-1.27 below)&amp;nbsp; In this example, &quot;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Message from the 2nd instance of ConnectionClient by Sang Shin&lt;/SPAN&gt;&quot; is entered.&lt;br /&gt;
&lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 599px; HEIGHT: 635px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index_files/1_concurrency3.png&quot;&gt;&lt;br /&gt;
Figure-1.27: Enter data from the 2nd instance of ConnectionClient&lt;br /&gt;
&lt;br /&gt;6. Observe the output on the server side.&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Click the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ServerUsingThreadPoolExecutor &lt;/SPAN&gt;tab window to see the output of the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ServerUsingThreadPoolExecutor&lt;/SPAN&gt;.&lt;br /&gt;

&lt;LI&gt;Observe that the message it received fromthe 2nd instance &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ConnectionClient &lt;/SPAN&gt;is displayed. (Figure-1.28 below) &lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 595px; HEIGHT: 570px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index_files/1_concurrency4.png&quot;&gt;&lt;br /&gt;
Figure-1.28: Connection request from ConnectionClient is received and message from ConnectionClient is displayed&lt;br /&gt;
&lt;br /&gt;7. Close NetBeans in order to terminate the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ServerUsingThreadPoolExecutor &lt;/SPAN&gt;and &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ConnectionClient &lt;/SPAN&gt;processes for subsequent exercises.&amp;nbsp; If you skip this, you will get &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;IO Error creating listener: Address already in use: JVM_Bind&lt;/SPAN&gt; later on when you run a server program that shares the same port number.&lt;br /&gt;
&lt;br /&gt;&lt;IMG style=&quot;WIDTH: 420px; HEIGHT: 244px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index_files/1_concurrency6.png&quot;&gt;&lt;br /&gt;
Figure-1.29: Exit NetBeans IDE to terminate the processes&lt;br /&gt;
&lt;br /&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold; COLOR: rgb(51,51,255)&quot;&gt;Solution&lt;/SPAN&gt;: This exercise up to this point is provided as a ready-to-open-and-run NetBeans project as part of hands-on lab zip file. You can find it as &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;lt;LAB_UNZIPPED_DIRECTORY&amp;gt;/javase5concurrency/samples/&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ConnectionClient&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;.&amp;nbsp; &lt;/SPAN&gt;You can just open it and run it.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;/DIV&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;Summary&lt;br /&gt;
&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
In this exercise, you learned how to create a pool of threads using the ThreadPoolExecutor class. You also will learn how these pool of threads are used to execute tasks.&amp;nbsp; &lt;/DIV&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;H2&gt;&lt;A name=Exercise_2&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;Exercise 2: Implement Runnable interface&lt;/SPAN&gt;&lt;br /&gt;
&lt;/H2&gt;
&lt;p id=&quot;more92_1&quot; class=&quot;moreless_fold&quot;&gt;&lt;span style=&quot;cursor: pointer;&quot; onclick=&quot;toggleMoreLess(this, &#039;92_1&#039;,&#039;더보기&#039;,&#039;접기&#039;); return false;&quot;&gt;더보기&lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;content92_1&quot; class=&quot;moreless_content&quot; style=&quot;display: none;&quot;&gt;&lt;br /&gt;

&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;In the previous exercise, you created your own instance of ThreadPoolExecutor.&amp;nbsp; There is a utility method in the Executors class that can be used to get a ThreadPoolExecutor more easily than by instantiating your own.&amp;nbsp; &lt;br /&gt;
&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 40px&quot;&gt;In this exercise, you are going to rewrite the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ServerUsingThreadPoolExecutor&lt;/SPAN&gt; code to use the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Executors &lt;/SPAN&gt;utility class.&amp;nbsp; We will rename the file to &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ServerUsingExecutors&lt;/SPAN&gt;.&lt;br /&gt;
&lt;/P&gt;
&lt;OL style=&quot;MARGIN-LEFT: 40px&quot;&gt;
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index.html#2.1&quot;&gt;Build and run a server that receives conenction requests (using Executors)&lt;/A&gt; 
&lt;LI&gt;&lt;A href=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index.html#2.2&quot;&gt;Build and run clients&lt;/A&gt;&lt;br /&gt;
&lt;/LI&gt;&lt;/OL&gt;&lt;br /&gt;

&lt;H3 class=tutorial style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;A name=2.1&gt;&lt;/A&gt;(2.1) Build and run a server that receives connection requests (using Executors)&lt;br /&gt;
&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-LEFT: 40px&quot;&gt;&lt;br /&gt;
1. Create a new NetBeans project&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;File&lt;/SPAN&gt;-&amp;gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;New Project (Ctrl+Shift+N)&lt;/SPAN&gt;. The &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;New Project&lt;/SPAN&gt; dialog box appears. 
&lt;LI&gt;Under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Choose Project&lt;/SPAN&gt; pane, select &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;General &lt;/SPAN&gt;under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Categories &lt;/SPAN&gt;and &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Java Application&lt;/SPAN&gt; under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Projects&lt;/SPAN&gt;. &lt;br /&gt;

&lt;LI&gt;Click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Next&lt;/SPAN&gt;. &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Under &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Name and Location&lt;/SPAN&gt; pane, for the &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Project Name&lt;/SPAN&gt; field, type in &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;COLOR: rgb(51,51,255)&quot;&gt;ServerUsingExecutors&lt;/SPAN&gt; &lt;/SPAN&gt;as project name. 
&lt;LI&gt;For &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Create Main Class&lt;/SPAN&gt; field, type in &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;COLOR: rgb(51,51,255)&quot;&gt;ServerUsingExecutors&lt;/SPAN&gt;&lt;/SPAN&gt;.&amp;nbsp; &lt;br /&gt;

&lt;LI&gt;Click &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;Finish&lt;/SPAN&gt;. &lt;/LI&gt;&lt;/UL&gt;&lt;IMG style=&quot;WIDTH: 600px; HEIGHT: 429px&quot; alt=&quot;&quot; src=&quot;http://www.javapassion.com/handsonlabs/javase5concurrency/index_files/1_concurrency13.png&quot;&gt;&lt;br /&gt;

&lt;UL&gt;
&lt;LI&gt;Observe that &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ServerUsingExecutors &lt;/SPAN&gt;project appears and IDE generated &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ServerUsingExecutors.java&lt;/SPAN&gt; is displayed in the source editor window of NetBeans IDE. &lt;/LI&gt;&lt;/UL&gt;2. Modify the IDE generated &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ServerUsingExecutors.java &lt;/SPAN&gt;as shown in Code-2.11 below.&amp;nbsp; Study the code by paying special attention to the bold fonted parts.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;import java.net.*;&lt;br /&gt;
import java.io.*;&lt;br /&gt;
import java.util.concurrent.*;&lt;br /&gt;
&lt;br /&gt;public class ServerUsingExecutors {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private final static int MAX_THREADS = 3;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private final ServerSocket serverSocket;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private final ExecutorService pool;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public ServerUsingExecutors(int port, int poolSize) throws IOException {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; Create a new ServerSocket to listen for incoming connections&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; serverSocket = new ServerSocket(port);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp; /*&amp;nbsp; Use the Exectors factory method to get a ThreadPool&amp;nbsp; */&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pool = Executors.newFixedThreadPool(MAX_THREADS);&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp; Service requests&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; **/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void serviceRequests() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int count = 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int qLength = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (;;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;pool.execute(new ConnectionHandler(serverSocket.accept(), count++));&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException ioe) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;IO Error in ConnectionHandler: &quot; + ioe.getMessage());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pool.shutdown();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Listening for connections...&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServerUsingExecutors ce = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp; ce = new ServerUsingExecutors(8100, 4);&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ce.serviceRequests();&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException ioe) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;IO Error creating listener: &quot; + ioe.getMessage());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;Code-2.11: ServerUsingExecutors.java&lt;br /&gt;
&lt;br /&gt;3. Write &lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;ConnectionHandler.java &lt;/SPAN&gt;as shown in Code-2.12 below.&amp;nbsp; This is the same code you&#039;ve created in the Exercise 1 above.&lt;br /&gt;
&lt;br /&gt;
&lt;TABLE style=&quot;WIDTH: 100%; TEXT-ALIGN: left&quot; cellSpacing=2 cellPadding=2 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;VERTICAL-ALIGN: top&quot;&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;/SPAN&gt;import java.io.*;&lt;br /&gt;
import java.net.*;&lt;br /&gt;
import java.util.concurrent.*;&lt;br /&gt;
&lt;br /&gt;public class ConnectionHandler implements Runnable {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private final Socket socket;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private final int connectionID;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp; Constructor&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param socket The socket on which incoming data will arrive&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; **/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public