<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="http://rss.egloos.com/style/blog.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
	<title>인생은 마라톤!!</title>
	<link>http://webgosu.egloos.com</link>
	<description>개인적으로 필요해서 모아놓은 정보입니다.
필요하면 얼마든지 퍼가세요^^</description>
	<language>ko</language>
	<pubDate>Tue, 21 Jul 2009 12:24:13 GMT</pubDate>
	<generator>Egloos</generator>
	<image>
		<title>인생은 마라톤!!</title>
		<url>http://pds11.egloos.com/logo/200903/09/72/a0116172.gif</url>
		<link>http://webgosu.egloos.com</link>
		<width>80</width>
		<height>84</height>
		<description>개인적으로 필요해서 모아놓은 정보입니다.
필요하면 얼마든지 퍼가세요^^</description>
	</image>
  	<item>
		<title><![CDATA[ date 관련 함수 ]]> </title>
		<link>http://webgosu.egloos.com/9982759</link>
		<guid>http://webgosu.egloos.com/9982759</guid>
		<description>
			<![CDATA[ 
  출처 : <a href="http://www.psoug.org/reference/date_func.html">http://www.psoug.org/reference/date_func.html</a><br><br><table border="0" cellspacing="0" cellpadding="0" width="100%"><tbody><tr><td></td></tr><tr><td align="middle"><table border="1" cellspacing="1" cellpadding="2" width="100%" bgcolor="#d8d8c4"><tbody><tr><td colspan="2"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>Date</strong></span></td></tr><tr><td rowspan="2" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">Current Date</span></td><td width="75%"><span style="FONT-FAMILY: Courier">CURRENT_DATE<br>SYSDATE</span></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">SELECT TO_CHAR(<span style="COLOR: #0000ff">CURRENT_DATE</span>, 'DD-MON-YYYY HH:MI:SS') FROM dual;<br><br>SELECT TO_CHAR(<span style="COLOR: #0000ff">SYSDATE</span>, 'DD-MON-YYYY HH:MI:SS') FROM dual;</span></td></tr><tr><td width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">Formats</span></td><td width="75%"><div align="center"><table border="1" cellspacing="0" cellpadding="0" width="100%" bgcolor="#ffffff"><tbody><tr><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">Day</span></td><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">Month</span></td><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">Year</span></td><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">Fill Mode</span></td><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">Julian Date</span></td></tr><tr><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">D</span></td><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">MM</span></td><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">YY</span></td><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">FM</span></td><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">J</span></td></tr><tr><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">DD</span></td><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">MON</span></td><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">YYYY</span></td><td width="20%" align="middle">&nbsp;</td><td width="20%" align="middle">&nbsp;</td></tr><tr><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">DDTH</span></td><td width="20%" align="middle">&nbsp;</td><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">RR</span></td><td width="20%" align="middle">&nbsp;</td><td width="20%" align="middle">&nbsp;</td></tr><tr><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">DAY</span></td><td width="20%" align="middle">&nbsp;</td><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">RRRR</span></td><td width="20%" align="middle">&nbsp;</td><td width="20%" align="middle">&nbsp;</td></tr></tbody></table></div></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>+ AND -</strong></span></td></tr><tr><td rowspan="2" width="25%" align="middle"><span style="FONT-FAMILY: Arial">+</span></td><td width="75%"><span style="FONT-FAMILY: Courier">&lt;date&gt; + &lt;integer&gt;</span></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">SELECT SYSDATE <span style="COLOR: #0000ff"><b>+</b></span> 1 FROM dual;</span></td></tr><tr><td rowspan="2" width="25%" align="middle"><span style="FONT-FAMILY: Arial">-</span></td><td width="75%"><span style="FONT-FAMILY: Courier">&lt;date&gt; - &lt;integer&gt;</span></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">SELECT SYSDATE <span style="COLOR: #0000ff"><b>-</b></span> 1 FROM dual;</span></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><a name="dfam"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>ADD_MONTHS</strong></span></a></td></tr><tr><td valign="top" rowspan="2" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%"><br>Add A Month To A Date</span></td><td width="75%"><span style="FONT-FAMILY: Courier">ADD_MONTHS(&lt;date&gt;, &lt;number of months_integer&gt;</span></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">SELECT <span style="COLOR: #0000ff">add_months</span>(SYSDATE, 2) FROM dual;<br><br><span style="COLOR: #008080">-- but be aware of what it is doing</span><br>SELECT <span style="COLOR: #0000ff">add_months</span>(TO_DATE('27-JAN-2007'), 1) FROM dual;<br><br>SELECT <span style="COLOR: #0000ff">add_months</span>(TO_DATE('28-JAN-2007'), 1) FROM dual;<br><br>SELECT <span style="COLOR: #0000ff">add_months</span>(TO_DATE('29-JAN-2007'), 1) FROM dual;<br><br>SELECT <span style="COLOR: #0000ff">add_months</span>(TO_DATE('30-JAN-2007'), 1) FROM dual;<br><br>SELECT <span style="COLOR: #0000ff">add_months</span>(TO_DATE('31-JAN-2007'), 1) FROM dual;<br><br>SELECT <span style="COLOR: #0000ff">add_months</span>(TO_DATE('01-FEB-2007'), 1) FROM dual;</span></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><a name="dfcd"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>CURRENT_DATE</strong></span></a></td></tr><tr><td valign="top" rowspan="2" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%"><br>Returns the current date in the session time zone, in a value in the Gregorian calendar of datatype DATE</span></td><td width="75%">&nbsp;</td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">col sessiontimezone format a30<br><br>SELECT sessiontimezone, <span style="COLOR: #0000ff">current_date</span><br>FROM dual;<br><br>ALTER SESSION SET TIME_ZONE = '-5:0';<br><br>SELECT sessiontimezone, <span style="COLOR: #0000ff">current_date</span><br>FROM dual;<br><br>ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';<br><br>SELECT sessiontimezone, <span style="COLOR: #0000ff">current_date</span><br>FROM dual;<br><br>ALTER SESSION SET TIME_ZONE = '-7:0';<br><br>SELECT sessiontimezone, <span style="COLOR: #0000ff">current_date</span><br>FROM dual;<br><br>ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY';</span></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><a name="dfdp"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>DUMP</strong></span></a></td></tr><tr><td valign="top" rowspan="2" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%"><br>Returns a VARCHAR2 value containing the datatype code, length in bytes, and internal representation of a value</span></td><td width="75%"><span style="FONT-FAMILY: Courier">DUMP(&lt;value&gt; [,&lt;return_format&gt;[,&lt;start_position&gt;[,&lt;length&gt;]]])<br>&nbsp;<br><div align="center"><center><table border="1" cellspacing="0" width="50%" bgcolor="#ffffff"><tbody><tr><td align="middle"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">8</span></td><td><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">Octal</span></td></tr><tr><td align="middle"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">10</span></td><td><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">Decimal</span></td></tr><tr><td align="middle"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">16</span></td><td><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">Hexidecimal</span></td></tr><tr><td align="middle"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">17</span></td><td><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">Single Characters</span></td></tr><tr><td align="middle"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">1008</span></td><td><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">octal notation with the character set name</span></td></tr><tr><td align="middle"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">1010</span></td><td><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">decimal notation with the character set name</span></td></tr><tr><td align="middle"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">1016</span></td><td><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">hexadecimal notation with the character set name</span></td></tr><tr><td align="middle"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">1017</span></td><td><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">single characters with the character set name</span></td></tr></tbody></table></center></div></span></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">col drows format a40<br><br>SELECT <span style="COLOR: #0000ff">DUMP</span>(SYSDATE) DROWS FROM dual;<br><br>SELECT <span style="COLOR: #0000ff">DUMP</span>(SYSDATE, 8) DROWS FROM dual;<br><br>SELECT <span style="COLOR: #0000ff">DUMP</span>(SYSDATE, 16) DROWS FROM dual;</span></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><a name="dfgr"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>GREATEST</strong></span></a></td></tr><tr><td valign="top" rowspan="2" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%"><br>Return the Latest Date</span></td><td width="75%"><span style="FONT-FAMILY: Courier">LEAST(&lt;date&gt;, &lt;date&gt;, &lt;date&gt;, ...)</span></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">CREATE TABLE t (<br>datecol1 DATE,<br>datecol2 DATE,<br>datecol3 DATE)<br>PCTFREE 0;<br><br>INSERT INTO t VALUES (SYSDATE+23, SYSDATE-10, SYSDATE-24);<br>INSERT INTO t VALUES (SYSDATE-15, SYSDATE, SYSDATE+15);<br>INSERT INTO t VALUES (SYSDATE-7, SYSDATE-18, SYSDATE-9);<br>COMMIT;<br><br>SELECT * FROM t;<br><br>SELECT <span style="COLOR: #0000ff">GREATEST</span>(datecol1, datecol2, datecol3)<br>FROM t;</span></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><a name="dfiv"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>INTERVAL</strong></span></a></td></tr><tr><td valign="top" rowspan="2" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%"><br>Interval to adjust date-time</span></td><td width="75%"><span style="FONT-FAMILY: Courier">INTERVAL '&lt;integer&gt;' &lt;unit&gt;</span></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">SELECT TO_CHAR(SYSDATE, 'HH:MI:SS')<br>FROM dual;<br><br>SELECT TO_CHAR(SYSDATE + <span style="COLOR: #0000ff">INTERVAL</span> '10' <span style="COLOR: #0000ff">MINUTE</span>, 'HH:MI:SS')<br>FROM dual;<br><br>SELECT TO_CHAR(SYSDATE - <span style="COLOR: #0000ff">INTERVAL</span> '10' <span style="COLOR: #0000ff">MINUTE</span>, 'HH:MI:SS')<br>FROM dual;</span></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><a name="dfld"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>LAST_DAY</strong></span></a></td></tr><tr><td rowspan="2" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">Returns The Last Date Of A Month</span></td><td width="75%"><span style="FONT-FAMILY: Courier">LAST_DAY(&lt;date&gt;)</span></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">SELECT * FROM t;<br><br>SELECT <span style="COLOR: #0000ff">LAST_DAY</span>(datecol1) FROM t;</span></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><a name="dflt"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>LEAST</strong></span></a></td></tr><tr><td rowspan="2" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">Return the Earliest Date</span></td><td width="75%"><span style="FONT-FAMILY: Courier">LEAST(&lt;date&gt;, &lt;date&gt;, &lt;date&gt;, ...)</span></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">SELECT * FROM t;<br><br>SELECT <span style="COLOR: #0000ff">LEAST</span>(datecol1, datecol2, datecol3) FROM t;</span></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><a name="dfln"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>LENGTH</strong></span></a></td></tr><tr><td rowspan="2" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">Returns length in characters</span></td><td width="75%"><span style="FONT-FAMILY: Courier">LENGTH(&lt;date&gt;)</span></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">SELECT <span style="COLOR: #0000ff">LENGTH</span>(last_ddl_time) FROM user_objects;</span></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><a name="dflb"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>LENGTHB</strong></span></a></td></tr><tr><td rowspan="2" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">Returns length in bytes</span></td><td width="75%"><span style="FONT-FAMILY: Courier">LENGTHB(&lt;date&gt;)</span></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">SELECT <span style="COLOR: #0000ff">LENGTHB</span>(last_ddl_time) FROM user_objects;</span></td></tr><tr><td colspan="2"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%"><b>Note:</b> Additional forms of LENGTH (LENGTHC, LENGTH2, and LENGTH4) are also available.</span></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><a name="dfmx"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>MAX</strong></span></a></td></tr><tr><td rowspan="2" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">Return the Latest Date</span></td><td width="75%"><span style="FONT-FAMILY: Courier">MAX(&lt;date&gt;)</span></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">SELECT * FROM t;<br><br>SELECT <span style="COLOR: #0000ff">MAX</span>(datecol1) FROM t;</span></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><a name="dfmn"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>MIN</strong></span></a></td></tr><tr><td rowspan="2" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">Return the Earliest Date</span></td><td width="75%"><span style="FONT-FAMILY: Courier">MIN(&lt;date&gt;)</span></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">SELECT * FROM t;<br><br>SELECT <span style="COLOR: #0000ff">MIN</span>(datecol1) FROM t;</span></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><a name="dfmb"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>MONTHS_BETWEEN</strong></span></a></td></tr><tr><td rowspan="2" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">Returns The Months Separating Two Dates</span></td><td width="75%"><span style="FONT-FAMILY: Courier">MONTHS_BETWEEN(&lt;latest_date&gt;, &lt;earliest_date&gt;)</span></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">SELECT <span style="COLOR: #0000ff">MONTHS_BETWEEN</span>(SYSDATE+365, SYSDATE-365) FROM dual;<br><br>SELECT <span style="COLOR: #0000ff">MONTHS_BETWEEN</span>(SYSDATE-365, SYSDATE+365) FROM dual;</span></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><a name="dfnt"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>NEW_TIME</strong></span></a></td></tr><tr><td valign="top" rowspan="2" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%"><br>Returns the date and time in time zone zone2 when date and time in time zone zone1 are date</span></td><td width="75%"><span style="FONT-FAMILY: Courier">Before using this function, you must set the NLS_DATE_FORMAT parameter to display 24-hour time.</span></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">SELECT <span style="COLOR: #0000ff">NEW_TIME</span>(TO_DATE('11-10-99 01:23:45',<br>'MM-DD-YY HH24:MI:SS'), 'AST', 'PST') "New Date and Time"<br>FROM dual;<br><br>ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';<br><br>SELECT <span style="COLOR: #0000ff">NEW_TIME</span>(TO_DATE('11-10-99 01:23:45',<br>'MM-DD-YY HH24:MI:SS'), 'AST', 'PST') "New Date and Time"<br>FROM dual;<br><br>ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY';</span></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><a name="dfnd"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>NEXT_DAY</strong></span></a></td></tr><tr><td rowspan="2" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">Date of next specified date following a date</span></td><td width="75%"><span style="FONT-FAMILY: Courier">NEXT_DAY(&lt;date&gt;, &lt;day of the week&gt;)<br><br>Options are SUN, MON, TUE, WED, THU, FRI, and SAT</span></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">SELECT <span style="COLOR: #0000ff">NEXT_DAY</span>(SYSDATE, 'FRI') FROM dual;</span></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><a name="dfrd"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>ROUND</strong></span></a></td></tr><tr><td rowspan="2" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">Returns date rounded to the unit specified by the format model. If you omit the format, the date is rounded to the nearest day</span></td><td width="75%"><span style="FONT-FAMILY: Courier">ROUND(&lt;date_value&gt;, &lt;format&gt;)</span></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">SELECT <span style="COLOR: #0000ff">ROUND</span>(TO_DATE('27-OCT-00'),'YEAR') NEW_YEAR<br>FROM dual;</span></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>Spelled Out Using TO_CHAR</strong></span></td></tr><tr><td valign="top" rowspan="2" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%"><br>Spelled Demo</span></td><td width="75%"><div align="center"><center><table border="1" cellspacing="0" cellpadding="0" width="100%" bgcolor="#ffffff"><tbody><tr><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">DDSP</span></td><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">HH24SP</span></td><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">MISP</span></td><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">MMSP</span></td><td width="20%" align="middle"><span style="FONT-FAMILY: Courier">SSSP</span></td></tr></tbody></table></center></div></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">SELECT TO_CHAR(TO_DATE('10:30:18', 'HH24:MI:SS'), '<span style="COLOR: #0000ff">HH24SP</span>:<span style="COLOR: #0000ff">MISP:SSSP</span>')<br>FROM dual;<br><br>SELECT TO_CHAR(TO_DATE('01-JAN-2008', 'DD-MON-YYYY'), '<span style="COLOR: #0000ff">DDSP</span>-MONTH-<span style="COLOR: #0000ff">YYYYSP</span>')<br>FROM dual;<br><br>SELECT TO_CHAR(TO_DATE('01-JAN-2008', 'DD-MM-YYYY'), '<span style="COLOR: #0000ff">DDSP</span>-<span style="COLOR: #0000ff">MMSP</span>-<span style="COLOR: #0000ff">YYYYSP</span>')<br>FROM dual;<br><br>SELECT TO_CHAR(TO_DATE(sal,'J'), 'JSP')<br>FROM emp;</span></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><a name="dfsd"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>SYSDATE</strong></span></a></td></tr><tr><td rowspan="2" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">Returns the current date and time set for the operating system on which the database resides</span></td><td width="75%"><span style="FONT-FAMILY: Courier">SYSDATE</span></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">SELECT <span style="COLOR: #0000ff">SYSDATE</span> FROM dual;</span></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><a name="dftr"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>TRUNC</strong></span></a></td></tr><tr><td valign="top" rowspan="2" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%"><br>Convert a date to the date at midnight</span></td><td width="75%"><span style="FONT-FAMILY: Courier">TRUNC(&lt;date_time&gt;)</span></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">CREATE TABLE t (<br>datecol DATE);<br><br>INSERT INTO t (datecol) VALUES (SYSDATE);<br><br>INSERT INTO t (datecol) VALUES (<span style="COLOR: #0000ff">TRUNC</span>(SYSDATE));<br><br>INSERT INTO t (datecol) VALUES (<span style="COLOR: #0000ff">TRUNC</span>(SYSDATE, '<span style="COLOR: #0000ff">HH</span>'));<br><br>INSERT INTO t (datecol) VALUES (<span style="COLOR: #0000ff">TRUNC</span>(SYSDATE, '<span style="COLOR: #0000ff">MI</span>'));<br><br>COMMIT;<br><br>SELECT TO_CHAR(datecol, 'DD-MON-YYYY HH:MI:SS')<br>FROM t;</span></td></tr><tr><td valign="top" rowspan="2" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%"><br>Selectively remove part of the date information<br><br>Special thanks to Dave Hayes for reminding me of this.</span></td><td width="75%"><span style="FONT-FAMILY: Courier">TRUNC(&lt;date_time&gt;, '&lt;format&gt;')</span></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">SELECT TO_CHAR(SYSDATE, 'DD-MON-YYYY HH:MI:SS')<br>FROM dual;<br><br><span style="COLOR: #008080">-- first day of the month</span><br>SELECT TO_CHAR(<span style="COLOR: #0000ff">TRUNC</span>(SYSDATE, <span style="COLOR: #0000ff">'MM'</span>), 'DD-MON-YYYY HH:MI:SS')<br>FROM dual;<br><br>SELECT TO_CHAR(<span style="COLOR: #0000ff">TRUNC</span>(SYSDATE, <span style="COLOR: #0000ff">'MON'</span>), 'DD-MON-YYYY HH:MI:SS')<br>FROM dual;<br><br>SELECT TO_CHAR(<span style="COLOR: #0000ff">TRUNC</span>(SYSDATE, <span style="COLOR: #0000ff">'MONTH'</span>), 'DD-MON-YYYY HH:MI:SS')<br>FROM dual;<br><br><span style="COLOR: #008080">-- first day of the year</span><br>SELECT TO_CHAR(<span style="COLOR: #0000ff">TRUNC</span>(SYSDATE, <span style="COLOR: #0000ff">'YYYY'</span>), 'DD-MON-YYYY HH:MI:SS')<br>FROM dual;<br><br>SELECT TO_CHAR(<span style="COLOR: #0000ff">TRUNC</span>(SYSDATE, <span style="COLOR: #0000ff">'YEAR'</span>), 'DD-MON-YYYY HH:MI:SS')<br>FROM dual;</span></td></tr><tr><td valign="top" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%"><br>Dates in WHERE Clause Joins</span></td><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">SELECT SYSDATE FROM dual;<br><br>ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';<br><br>SELECT SYSDATE FROM dual;<br><br>/<br><br>/<br><br>ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY';<br><br>CREATE TABLE t (<br>datecol DATE);<br><br>INSERT INTO t<br>(datecol)<br>VALUES<br>(SYSDATE);<br><br>SELECT * FROM t;<br><br>ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';<br><br>SELECT * FROM t;<br><br>ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY';<br><br>SELECT * FROM t;<br><br>SELECT SYSDATE FROM dual;<br><br>SELECT * FROM t<br>WHERE datecol = SYSDATE;<br><br>ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';<br><br>SELECT * FROM t;<br><br>SELECT SYSDATE FROM dual;<br><br>SELECT <span style="COLOR: #0000ff">TRUNC</span>(SYSDATE) FROM dual;<br><br>SELECT * FROM t<br>WHERE <span style="COLOR: #0000ff">TRUNC</span>(datecol) = <span style="COLOR: #0000ff">TRUNC</span>(SYSDATE);<br><br>ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY';</span></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><a name="dfvs"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>VSIZE</strong></span></a></td></tr><tr><td rowspan="2" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">Returns The Number Of Bytes Required By A Value</span></td><td width="75%"><span style="FONT-FAMILY: Courier">VSIZE(e IN DATE) RETURN NUMBER</span></td></tr><tr><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">SELECT <span style="COLOR: #0000ff">VSIZE</span>(SYSDATE) FROM dual;</span></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>Date Calculations</strong></span></td></tr><tr><td valign="top" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%"><br>Returns A Day A Specified Number Of Days In The Future Skipping Weekends</span></td><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">CREATE OR REPLACE FUNCTION business_date (start_date DATE,<br>Days2Add NUMBER) RETURN DATE IS<br>&nbsp;Counter&nbsp; NATURAL := 0;<br>&nbsp;CurDate&nbsp; DATE := start_date;<br>&nbsp;DayNum&nbsp;&nbsp; POSITIVE;<br>&nbsp;SkipCntr NATURAL := 0; <br>BEGIN<br>&nbsp; WHILE Counter &lt; Days2Add LOOP<br>&nbsp;&nbsp;&nbsp; CurDate := CurDate+1;<br>&nbsp;&nbsp;&nbsp; DayNum := TO_CHAR(CurDate, 'D');<br><br>&nbsp;&nbsp;&nbsp; IF DayNum BETWEEN 2 AND 6 THEN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Counter := Counter + 1;<br>&nbsp;&nbsp;&nbsp; ELSE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SkipCntr := SkipCntr + 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;END IF;<br>&nbsp; END LOOP;<br>&nbsp; RETURN start_date + Counter + SkipCntr;<br>END business_date;<br>/</span> </td></tr><tr><td valign="top" width="25%"><br><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">Business Date function, above, enhanced by Larry Benton to handle negative values for the days2add parameter.</span></td><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">CREATE OR REPLACE FUNCTION business_date (start_date DATE,&nbsp;<br>days2add NUMBER) RETURN DATE IS<br>&nbsp;Counter NATURAL := 0;<br>&nbsp;CurDate DATE := start_date;<br>&nbsp;DayNum POSITIVE;<br>&nbsp;SkipCntr NATURAL := 0;<br>&nbsp;Direction INTEGER := 1;&nbsp; <span style="COLOR: #008080">-- days after start_date</span><br>&nbsp;BusinessDays NUMBER := Days2Add;<br>BEGIN<br>&nbsp; IF Days2Add &lt; 0 THEN<br>&nbsp;&nbsp;&nbsp; Direction := - 1; <span style="COLOR: #008080">-- days before start_date</span><br>&nbsp;&nbsp;&nbsp; BusinessDays := (-1) * BusinessDays;<br>&nbsp; END IF;<br><br>&nbsp; WHILE Counter &lt; BusinessDays LOOP<br>&nbsp;&nbsp;&nbsp; CurDate := CurDate + Direction;<br>&nbsp;&nbsp;&nbsp; DayNum := TO_CHAR( CurDate, 'D');<br><br>&nbsp;&nbsp;&nbsp; IF DayNum BETWEEN 2 AND 6 THEN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Counter := Counter + 1;<br>&nbsp;&nbsp;&nbsp; ELSE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SkipCntr := SkipCntr + 1;<br>&nbsp;&nbsp;&nbsp; END IF;<br>&nbsp; END LOOP;<br><br>&nbsp; RETURN start_date + (Direction * (Counter + SkipCntr));<br>END business_date;<br>/</span> </td></tr><tr><td valign="top" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%"><br>Returns The First Day Of A Month</span></td><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">CREATE OR REPLACE FUNCTION fday_ofmonth(value_in DATE)<br>RETURN DATE IS<br>&nbsp;vMo VARCHAR2(2);<br>&nbsp;vYr VARCHAR2(4); <br>BEGIN<br>&nbsp; vMo := TO_CHAR(value_in, 'MM');<br>&nbsp; vYr := TO_CHAR(value_in, 'YYYY');<br>&nbsp; RETURN TO_DATE(vMo || '-01-' || vYr, 'MM-DD-YYYY'); <br>EXCEPTION<br>&nbsp; WHEN OTHERS THEN<br>&nbsp;&nbsp;&nbsp; RETURN TO_DATE('01-01-1900', 'MM-DD-YYYY'); <br>END fday_ofmonth;<br>/</span></td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><span style="FONT-FAMILY: Arial; COLOR: #808000"><strong>Time Calculations</strong></span></td></tr><tr><td valign="top" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%"><br>Returns The Number Of Seconds Between Two Date-Time Values</span></td><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">CREATE OR REPLACE FUNCTION time_diff (<br>DATE_1 IN DATE, DATE_2 IN DATE) RETURN NUMBER IS<br><br>NDATE_1&nbsp;&nbsp; NUMBER;<br>NDATE_2&nbsp;&nbsp; NUMBER;<br>NSECOND_1 NUMBER(5,0);<br>NSECOND_2 NUMBER(5,0);<br><br>BEGIN<br>&nbsp; <span style="COLOR: #008080">-- Get Julian date number from first date (DATE_1)</span><br>&nbsp; NDATE_1 := TO_NUMBER(TO_CHAR(DATE_1, 'J'));<br><br>&nbsp; <span style="COLOR: #008080">-- Get Julian date number from second date (DATE_2)</span><br>&nbsp; NDATE_2 := TO_NUMBER(TO_CHAR(DATE_2, 'J'));<br><br>&nbsp; <span style="COLOR: #008080">-- Get seconds since midnight from first date (DATE_1)</span><br>&nbsp; NSECOND_1 := TO_NUMBER(TO_CHAR(DATE_1, 'SSSSS'));<br><br>&nbsp; <span style="COLOR: #008080">-- Get seconds since midnight from second date (DATE_2)</span><br>&nbsp; NSECOND_2 := TO_NUMBER(TO_CHAR(DATE_2, 'SSSSS'));<br><br>&nbsp; RETURN (((NDATE_2 - NDATE_1) * 86400)+(NSECOND_2 - NSECOND_1));<br>END time_diff;<br>/</span></td></tr><tr><td width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%">Calculating time from seconds<br><br>Posted by John K. Hinsdale<br>12/30/06 to c.d.o.misc</span></td><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">SELECT DECODE(FLOOR(999999/86400), 0, '',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FLOOR(999999/86400) || ' day(s), ') ||&nbsp;<br>&nbsp;&nbsp; TO_CHAR(TO_DATE(MOD(999999, 86400),'SSSSS'), 'HH24:MI:SS') AS elapsed<br>FROM dual;</span></td></tr><tr><td valign="top" width="25%"><span style="FONT-FAMILY: Arial; FONT-SIZE: 100%"><br>Obtain counts per ten minute increment<br><br>Posted by Michele Cadot<br>03/09/08 to c.d.o.misc</span></td><td bgcolor="#80ffff" width="75%"><span style="FONT-FAMILY: Courier">ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';<br><br>SELECT TRUNC(SYSDATE) + dbms_random.value(0,86400)/86400<br>FROM dual<br>CONNECT BY LEVEL &lt;= 10;<br><br>WITH data AS (<br>&nbsp; SELECT TRUNC(SYSDATE)+dbms_random.value(0,86400)/86400 <span style="COLOR: #800080">h</span><br>&nbsp; FROM dual<br>&nbsp; CONNECT BY LEVEL &lt;= 10)<br>SELECT TO_CHAR(<span style="COLOR: #800080">h</span>,'DD/MM/YYYY HH24:MI:SS') <span style="COLOR: #800080">h</span>, TO_CHAR(TRUNC(<span style="COLOR: #800080">h</span>)<br>&nbsp;+ TRUNC(TO_CHAR(<span style="COLOR: #800080">h</span>,'SSSSS')/600)/144, 'DD/MM/YYYY HH24:MI:SS') "10m"<br>FROM data<br>ORDER BY <span style="COLOR: #800080">h</span>;</span></td></tr></tbody></table></td></tr><tr><td>&nbsp;</td></tr></tbody></table>			 ]]> 
		</description>
		<category>ORACLE</category>

		<comments>http://webgosu.egloos.com/9982759#comments</comments>
		<pubDate>Tue, 21 Jul 2009 12:24:13 GMT</pubDate>
		<dc:creator>webgosu</dc:creator>
	</item>
	<item>
		<title><![CDATA[ WebTob + Jeus 연동후 처리 ]]> </title>
		<link>http://webgosu.egloos.com/9822284</link>
		<guid>http://webgosu.egloos.com/9822284</guid>
		<description>
			<![CDATA[ 
  <p>webtob는 ws(webserver)입니다. ws가 처리 할 수 있는 건 html, htm, gif, jpg, cgi 등 정적인 파일들 이며, jsp, servlet, ejb와 같은 동적인 파일들은 was인 jeus에서 처리 합니다.</p><p>그러므로, jsp 파일들은 jeus에 등록된 context의 WEB-INF/jeus-web-dd.xml 파일의 docbase (또는, jeus-web-dd.xml 파일이 없다면, JEUSMain.xml 에 등록된 application의&nbsp;path) 에서 해당 파일을 찾아 처리하게 됩니다.</p><p>==========================================================================<br>참고) 모든 요청은 webserver인 webtob에서 받아 자신이 처리 할 것인지, jeus로 넘길 것인지를 판단하여 처리합니다. <br>판단 하는 기준은 $WEBTOBDIR/config/http.m or sample.m 파일의 *uri 절 , *ext 절을 보고 나누어 집니다.<br><br>예)<br>*URI<br>uri0&nbsp;&nbsp;Uri = "/examples/",&nbsp;&nbsp; <strong>Svrtype = JSV</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;-- jeus 로 넘김<br>uri1&nbsp;&nbsp;Uri = "/",&nbsp;&nbsp; <strong>Svrtype = JSV</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;-- jeus 로 넘김<br>uri2&nbsp; Uri = "/html/", <strong>Svrtype = HTML</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;-- webtob에서 처리</p><p>*EXT<br>htm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MimeType = "text/html", <strong>SvrType = HTML</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;-- webtob에서 처리<br>html&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MimeType = "text/html", <strong>SvrType = HTML</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;-- webtob 에서 처리<br>jsp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mimetype = "application/jsp",&nbsp; <strong>Svrtype=JSV</strong>&nbsp;&nbsp;&nbsp;&nbsp; &lt;--- jeus에서 처리<br>gif&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MimeType = "image/gif", SvrType = HTML<br>jpeg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MimeType = "image/jpeg", SvrType = HTML<br>jpg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MimeType = "image/jpeg", SvrType = HTML<br>js&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MimeType = "application/x-javascript", SvrType = HTML<br>css&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MimeType = "text/css", SvrType = HTML<br>swf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MimeType = "application/octet-stream", SvrType = HTML<br>hwp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MimeType = "application/octet-stream", SvrType = HTML<br>doc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MimeType = "application/msword", SvrType = HTML<br>ppt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MimeType = "application/vns.ms-powerpoint", SvrType = HTML <div class="autosourcing-stub"><p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: 12px; PADDING-BOTTOM: 0px; MARGIN: 11px 0px 7px; PADDING-TOP: 0px; FONT-STYLE: normal; FONT-FAMILY: Dotum"><strong style="PADDING-RIGHT: 7px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">[출처]</strong> <a href="http://blog.naver.com/ohlucky6/150013447555" target="_blank">WebTob + Jeus 연동후 처리</a><span style="PADDING-RIGHT: 7px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">|</span><strong style="PADDING-RIGHT: 7px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">작성자</strong> <a href="http://blog.naver.com/ohlucky6" target="_blank">민주가인</a></p></div><p></p>			 ]]> 
		</description>
		<category>JEUS</category>

		<comments>http://webgosu.egloos.com/9822284#comments</comments>
		<pubDate>Thu, 11 Jun 2009 14:55:47 GMT</pubDate>
		<dc:creator>webgosu</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 하나의 서버에 두개의 노드 설정 ]]> </title>
		<link>http://webgosu.egloos.com/9822280</link>
		<guid>http://webgosu.egloos.com/9822280</guid>
		<description>
			<![CDATA[ 
  <p>A라는 애플리케이션은 8080포트로, B라는 애플리케이션은 8090 포트로 서비스 설정방법</p><p>&nbsp;</p><p>일단 웹투비쪽 설정을 보겠습니다. 가상호스트를 사용하게 됩니다.<br>웹투비 설정파일(http.m)의 몇군데를 수정하셔야 합니다.</p><p>*NODE<br>노드명&nbsp;&nbsp;&nbsp;&nbsp;DocRoot="/aaa/a1",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PORT="8080",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #ff0000">ServiceOrder="ext,uri",</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IndexName = "index.html"</p><p><span style="COLOR: #ff0000">*VHOST<br>vhost1&nbsp;&nbsp;&nbsp;&nbsp;DocRoot="/aaa/a2",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PORT="8090",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServiceOrder="ext,uri",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HostName="서버IP또는 도메인",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NodeName="노드명",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IndexName = "index.html"</span></p><p>*SVRGROUP<br>htmlg&nbsp;&nbsp;&nbsp;&nbsp;NODENAME="노드명", SVRTYPE = HTML<br>jsvg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NODENAME="노드명", SVRTYPE = JSV<br><span style="COLOR: #ff0000">jsvg2&nbsp;&nbsp;&nbsp;&nbsp; NODENAME="노드명", SVRTYPE = JSV, VhostName = vhost1</span></p><p>*SERVER<br>html&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SVGNAME=htmlg, MinProc=1, MaxProc=5<br>MyGroup&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SVGNAME=jsvg, MinProc=5, MaxProc=5<br><span style="COLOR: #ff0000">MyGroup2&nbsp;&nbsp;&nbsp;&nbsp; SVGNAME=jsvg2, MinProc=5, MaxProc=5</span></p><p>*URI<br><span style="COLOR: #ff0000">uri1&nbsp;&nbsp;&nbsp;&nbsp;Uri = "/", SvrType = JSV, VhostName=vhost1, SvrName = MyGroup2<br>uri2&nbsp;&nbsp;&nbsp;&nbsp;Uri = "/", SvrType = JSV, SvrName = MyGroup</span></p><p>*EXT<br><span style="COLOR: #ff0000">사용할 확장자와 마임타입을 추가하고 SvrType 에 웹투비면 HTML, 제우스면 JSV를 써준다.</span></p><p>여기서 MyGroup, MyGroup2 가 설정되었고 Min/MaxProc 값 등은 제우스 설정과 맞춰야 한다.</p><p>제우스단에서는 2개의 컨테이너를 사용하도록 하고 <br>WEBMain.xml 파일의 &lt;webtob-listener&gt;설정 부분을 수정하시기 바랍니다.<br>&lt;webtob-listener&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #ff0000">&lt;registration-id&gt;MyGroup(2)&lt;/registration-id&gt;</span></p><p>이때 8080으로 서비스할 컨테이너의 경우는 MyGroup으로, 8090으로 서비스할 컨테이너의 경우는 MyGroup2 로 설정하셔야&nbsp;웹투비에 정의된 SERVER로 연결이 되며, 서비스 수행이 가능합니다. WebApplication 배포는 서비스할 컨텍스트를 해당 컨테이너에 배포 하시면 됩니다.</p><p>개략적으로 설명을 드렸습니다. 설정부분은 꼭 넣어야 하는 부분, 수정해야 하는 부분을 위주로 작성하였으니 빨간색 부분을 기존의 환경과 비교하시면서 수정하시면 됩니다. <div class="autosourcing-stub"><p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: 12px; PADDING-BOTTOM: 0px; MARGIN: 11px 0px 7px; PADDING-TOP: 0px; FONT-STYLE: normal; FONT-FAMILY: Dotum"><strong style="PADDING-RIGHT: 7px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">[출처]</strong> <a href="http://blog.naver.com/ohlucky6/150013448720" target="_blank">하나의 서버에 두개의 노드 설정</a><span style="PADDING-RIGHT: 7px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">|</span><strong style="PADDING-RIGHT: 7px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">작성자</strong> <a href="http://blog.naver.com/ohlucky6" target="_blank">민주가인</a></p></div><p></p>			 ]]> 
		</description>
		<category>JEUS</category>

		<comments>http://webgosu.egloos.com/9822280#comments</comments>
		<pubDate>Thu, 11 Jun 2009 14:53:03 GMT</pubDate>
		<dc:creator>webgosu</dc:creator>
	</item>
	<item>
		<title><![CDATA[ WebtoB+Jeus 가상호스트설정  ]]> </title>
		<link>http://webgosu.egloos.com/9822275</link>
		<guid>http://webgosu.egloos.com/9822275</guid>
		<description>
			<![CDATA[ 
  www.bbb.co.kr 와 www.bbb.co.kr/aaa 는 도메인 주소와 포트번호가 <br>동일하므로 VHOST를 이용한 구분은 불가능합니다. <br>URI 설정을 이용하여 Context Path "/" 와 "/aaa" 를 구분하여 <br>처리하면 됩니다. <br><br>설정 예는 다음과 같습니다. <br><br>=========================================================== <br>상략 <br><br>*NODE <br>nodename &nbsp;&nbsp;&nbsp;WEBTOBDIR = "/home/jeus42/webserver", <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SHMKEY &nbsp;&nbsp;&nbsp;= 54000, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DOCROOT &nbsp;&nbsp;= "/home/Jeus42/webserver/docs", <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORT &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= "8080", <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JSVPORT &nbsp;&nbsp;= 9900, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HTH &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 1 <br><br>*SVRGROUP <br>htmlg &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NODENAME = "nodename", SvrType = HTML <br>jsvg &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NODENAME = "nodename", SVRTYPE = JSV <br><br>*SERVER <br>html &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SVGNAME &nbsp;= htmlg, MinProc = 1, &nbsp;MaxProc = 2 <br>MyGroup &nbsp;&nbsp;&nbsp;&nbsp;SVGNAME &nbsp;= jsvg, &nbsp;MinProc = 25, MaxProc = 30 <br>HpGroup &nbsp;&nbsp;&nbsp;&nbsp;SVGNAME &nbsp;= jsvg, &nbsp;MinProc = 25, MaxProc = 30 <br><br>*URI <br>uri1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uri &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= "/aaa/", Svrtype = JSV, SvrName = "MyGroup" <br>uri2 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uri &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= "/", Svrtype = JSV, SvrName = "HpGroup" <br><br>하략 <br>===================================================================== <br><br>그리고 A장비_servlet_engine1 의 WEBMain.xml(jeus4.x) <br>설정중 webtob-listener 설정을 하나 더 추가하여 B장비 웹투비의 <br>MyGroup과 연결해야 합니다. webtob-listener는 반복구조를 가집니다. <br>즉, 하나의 엔진이 여러 웹투비와의 연결을 제공합니다.&nbsp; <div class="autosourcing-stub"><p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: 12px; PADDING-BOTTOM: 0px; MARGIN: 11px 0px 7px; PADDING-TOP: 0px; FONT-STYLE: normal; FONT-FAMILY: Dotum"><strong style="PADDING-RIGHT: 7px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">[출처]</strong> <a href="http://blog.naver.com/ohlucky6/150013451057" target="_blank">WebtoB+Jeus 가상호스트설정</a><span style="PADDING-RIGHT: 7px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">|</span><strong style="PADDING-RIGHT: 7px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">작성자</strong> <a href="http://blog.naver.com/ohlucky6" target="_blank">민주가인</a></p></div>			 ]]> 
		</description>
		<category>JEUS</category>

		<comments>http://webgosu.egloos.com/9822275#comments</comments>
		<pubDate>Thu, 11 Jun 2009 14:50:04 GMT</pubDate>
		<dc:creator>webgosu</dc:creator>
	</item>
	<item>
		<title><![CDATA[ JEUS&WEBTOB 가이드  ]]> </title>
		<link>http://webgosu.egloos.com/9822269</link>
		<guid>http://webgosu.egloos.com/9822269</guid>
		<description>
			<![CDATA[ 
  이&nbsp;문서는&nbsp;ww.tmax.co.kr&nbsp;에서&nbsp;개발/배포하는 <br><br>웹서버(WebToB)와&nbsp;웹어플리케이션서버(JEUS)의&nbsp;설치&nbsp;및&nbsp;시동,&nbsp;연동,&nbsp;경로설정에&nbsp;관한&nbsp;자료입니다. <br><br>(버젼&nbsp;:&nbsp;JEUS4.2,&nbsp;WEBTOB3.1.6(build3),&nbsp;j2sdk1.4.1_07) <br><br>&nbsp; <br><br>&nbsp; <br><br>###&nbsp;설치/시동/테스팅/종료&nbsp;### <br><br>---------------------------------------------------------------------------------------- <br><br>1.&nbsp;필요&nbsp;프로그램 <br><br>-&nbsp;j2sdk1.4.1_07&nbsp;(http://java.sun.com)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;j2sdk1.4.1_07&nbsp;이하&nbsp;버젼&nbsp;권장&nbsp;(1.4.2버젼대에서는&nbsp;문제발생할&nbsp;수&nbsp;있음) <br><br>-&nbsp;jeus42.exe&nbsp;(http://www.tmax.co.kr) <br><br>-&nbsp;webtob_3.1.6(build3).exe&nbsp;(http://www.tmax.co.kr) <br><br>---------------------------------------------------------------------------------------- <br><br>2.&nbsp;j2sdk1.4.1_07&nbsp;설치 <br><br>-&nbsp;path&nbsp;맨&nbsp;앞에&nbsp;C:/jdk1.4.1_07/bin&nbsp;설정 <br><br>-&nbsp;classpath에&nbsp;.&nbsp;설정 <br><br>---------------------------------------------------------------------------------------- <br><br>3.&nbsp;JEUS42&nbsp;설치 <br><br>-&nbsp;JEUS42.exe를&nbsp;실행&nbsp; <br><br>&nbsp;&nbsp;(windows2003&nbsp;서버의&nbsp;경우&nbsp;installing...&nbsp;uninstall부분에서&nbsp;정지시는&nbsp;windows2000호환성모드로&nbsp;다시&nbsp;실행) <br><br>-&nbsp;http://www.tmax.co.kr의&nbsp;download링크를&nbsp;클릭&nbsp;(회원가입필요) <br><br>&nbsp;&nbsp;JEUS&nbsp;license를&nbsp;신청&nbsp;-&gt;&nbsp;이메일을&nbsp;통해&nbsp;license부여받음&nbsp;(90일&nbsp;사용가능) <br><br>&nbsp;&nbsp;부여받은&nbsp;license파일을&nbsp;제우스홈\license에&nbsp;복사&nbsp;(덮어쓰기) <br><br>-&nbsp;설치&nbsp;후&nbsp;다음&nbsp;세개의&nbsp;파일을&nbsp;자신의&nbsp;환경에&nbsp;맞게&nbsp;편집 <br><br>&nbsp;&nbsp;1)&nbsp;제우스홈\config\노드명\JEUSMain.xml&nbsp; <br><br>&nbsp;&nbsp;2)&nbsp;제우스홈\webhome\servlet_home\webapps\examples\web-inf\web.xml <br>&nbsp;&nbsp;3)&nbsp;제우스홈\config\노드명\노드명_servlet_engine1\WEBMain.xml <br><br>------------------------------------------------------------------------------------- <br><br>4.&nbsp;webtob3.1.6&nbsp;설치 <br><br>-&nbsp;webtob_3.1.6(build3).exe&nbsp;실행하여&nbsp;설치&nbsp; <br><br>&nbsp;&nbsp;(windows2003에서&nbsp;installing...&nbsp;uninstall부분에서&nbsp;정지시는&nbsp;windows2000호환성모드로&nbsp;다시&nbsp;실행) <br><br>-&nbsp;http://www.tmax.co.kr의&nbsp;download링크를&nbsp;클릭&nbsp;(회원가입필요) <br><br>&nbsp;&nbsp;WEBTOB&nbsp;license를&nbsp;신청&nbsp;-&gt;&nbsp;이메일을&nbsp;통해&nbsp;license.dat부여&nbsp;(90일&nbsp;사용가능) <br><br>&nbsp;&nbsp;부여받은&nbsp;license.dat파일을&nbsp;c:\webtob\license에&nbsp;복사&nbsp;(덮어쓰기) <br><br>------------------------------------------------------------------------------------- <br><br>5.&nbsp;PATH&nbsp;설정&nbsp;후&nbsp;리부팅&nbsp;:&nbsp;자신의&nbsp;환경에&nbsp;맞게&nbsp;설정하고&nbsp;시스템을&nbsp;리부팅 <br><br>&nbsp;&nbsp;(Program&nbsp;Files처럼&nbsp;공백을&nbsp;포함한&nbsp;디렉토리를&nbsp;가진&nbsp;경로는&nbsp;맨뒤로...) <br><br>ex)&nbsp;PATH=C:\J2SDK1.4.1_07\bin;C:\webtob\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOW <br>S\System32\Wbem;C:\webtob\bin;C:\Jeus42\lib\etc\ant\bin;C:\Jeus42\bin;C:\Jeus42\lib\system <br><br>------------------------------------------------------------------------------------- <br><br>6.&nbsp;WEBTOB&nbsp;환경설정 <br><br>&nbsp;&nbsp;1)&nbsp;웹투비홈\config\sample.m을&nbsp;카피해서&nbsp;http.m을&nbsp;생성 <br><br>&nbsp;&nbsp;2)&nbsp;wscfl&nbsp;-i&nbsp;http.m을&nbsp;커맨드창에서&nbsp;실행&nbsp;(webtob&nbsp;환경설정) <br><br>&nbsp;&nbsp;정상결과&nbsp;예) <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Current&nbsp;configuration: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Number&nbsp;of&nbsp;client&nbsp;handler(HTH)&nbsp;=&nbsp;1 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Supported&nbsp;maximum&nbsp;user&nbsp;per&nbsp;node&nbsp;=&nbsp;975 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Supported&nbsp;maximum&nbsp;user&nbsp;per&nbsp;handler&nbsp;=&nbsp;975 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CFL&nbsp;is&nbsp;done&nbsp;successfully&nbsp;for&nbsp;node(노드명(노드명)) <br><br>--------------------------------------------------------------------------------------- <br><br>7.&nbsp;시동 <br><br>1)&nbsp;webtob를&nbsp;실행 <br><br>-&nbsp;webtob&nbsp;실행&nbsp;:&nbsp;&nbsp;wsboot <br><br>2)&nbsp;JEUS를&nbsp;실행 <br><br>-&nbsp;우선&nbsp;command창을&nbsp;두개&nbsp;띄웁니다.(제우스,&nbsp;제우스관리자) <br><br>-&nbsp;제우스창에&nbsp;"jeus&nbsp;+&nbsp;엔터" <br><br>-&nbsp;제우스관리자창에&nbsp;"jeusadmin&nbsp;노드명&nbsp;-U유져명&nbsp;-P제우스패스워드&nbsp;-&gt;boot <br><br>-&nbsp;제우스창에&nbsp;에러(Exception)가&nbsp;없다면&nbsp;실행&nbsp;성공!!! <br><br>-------------------------------------------------------------------------------------- <br><br>8.&nbsp;테스팅 <br><br>-&nbsp;JEUS기본포트는&nbsp;8088,&nbsp;webtob기본포트는&nbsp;8080 <br><br>-&nbsp;JSP&nbsp;기본경로 <br><br>제우스홈\webhome\servlet_home\webapps\examples <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://127.0.0.1/examples/ <br><br>-&nbsp;Servlet&nbsp;기본경로 <br><br>제우스홈\webhome\servlet_home\webapps\examples\WEB-INF\classes <br>&nbsp;&nbsp;&nbsp;&nbsp;http://127.0.0.1/examples/ <br><br>-------------------------------------------------------------------------------------- <br><br>9.&nbsp;종료 <br><br>1)&nbsp;JEUS종료 <br><br>-&nbsp;제우스관리자창에&nbsp;down&nbsp;-&gt;&nbsp;jeusexit <br><br>2)&nbsp;WEBTOB종료 <br><br>-&nbsp;웹투비창에&nbsp;wsdown&nbsp;-i <br><br>-------------------------------------------------------------------------------------- <br><br>&nbsp; <br><br>&nbsp; <br><br>&nbsp; <br><br>&nbsp; <br><br>###&nbsp;JEUS/WEBTOB&nbsp;연동하기&nbsp;### <br><br>-------------------------------------------------------------------------------------- <br><br>1.&nbsp;webtob&nbsp;설정 <br><br>&nbsp;&nbsp;&nbsp;-&nbsp;웹투비홈/config/http.m의&nbsp;각&nbsp;항목에&nbsp;추가합니다. <br><br>&nbsp;&nbsp;&nbsp;*NODE <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JSVPORT&nbsp;=&nbsp;9900 <br><br>&nbsp;&nbsp;&nbsp;*SVRGROUP <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsvg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NODENAME=노드이름,&nbsp;SVRTYPE=JSV <br><br>&nbsp;&nbsp;&nbsp;*SERVER <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyGroup&nbsp;&nbsp;&nbsp;&nbsp;SVGNAME=jsvg,&nbsp;MinProc=10,&nbsp;MaxProc=10 <br><br>&nbsp;&nbsp;&nbsp;*URI <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uri2&nbsp;&nbsp;&nbsp;&nbsp;Uri="/examples/",&nbsp;Svrtype=JSV <br><br>-------------------------------------------------------------------------------------- <br><br>2.&nbsp;jeus&nbsp;설정 <br><br>&nbsp;&nbsp;&nbsp;-&nbsp;제우스홈/config/노드이름/노드이름_servlet_engine1/WEBMain.xml&nbsp;수정 <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;webserver-connection&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;webtob-listener&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;listener-id&gt;webtob1&lt;/listener-id&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;port&gt;9900&lt;/port&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;hth-count&gt;1&lt;/hth-count&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;webtob-address&gt;IP&nbsp;혹은&nbsp;127.0.0.1(동일서버에&nbsp;JEUS와&nbsp;WEBTOB존재시)&lt;/webtob-address&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;registration-id&gt;MyGroup&lt;/registration-id&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;thread-pool&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;min&gt;4&lt;/min&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;max&gt;10&lt;/max&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;step&gt;2&lt;/step&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;max-idle-time&gt;30000&lt;/max-idle-time&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;max-wait-queue&gt;4&lt;/max-wait-queue&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/thread-pool&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/webtob-listener&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/webserver-connection&gt; <br><br><br>-------------------------------------------------------------------------------------- <br><br>3.&nbsp;제우스홈/bin/jeus.properties&nbsp;조정 <br><br>&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;JEUS_WSDIR&nbsp;부분을&nbsp;주석처리&nbsp;하거나&nbsp;삭제 <br><br>&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;PATH&nbsp;에서&nbsp;$JEUS_HOME/webserver&nbsp;부분도&nbsp;제거 <br><br>-------------------------------------------------------------------------------------- <br><br>4.&nbsp;webtob&nbsp;와&nbsp;jeus&nbsp;를&nbsp;부팅&nbsp;후&nbsp;확인 <br><br>&nbsp;&nbsp;&nbsp;http://주소:8080/exapmples/index.jsp&nbsp;에서&nbsp;테스팅&nbsp;페이지&nbsp;보기 <br><br>-------------------------------------------------------------------------------------- <br><br>&nbsp; <br><br>&nbsp; <br><br>###&nbsp;DB&nbsp;연동&nbsp;### <br><br>-------------------------------------------------------------------------------------- <br><br>*&nbsp;MySQL&nbsp;커넥션풀&nbsp;샘플&nbsp;(WEBMain.xml에&nbsp;추가) <br><br>JEUS에서&nbsp;제공하는&nbsp;ConnectionPool은&nbsp;JDBC&nbsp;Drive를&nbsp;통해&nbsp;얻은&nbsp;Connection의&nbsp;관리는&nbsp; <br>엔진에서&nbsp;해주는&nbsp;것이므로&nbsp;JDBC&nbsp;Driver를&nbsp;$JEUS_HOME/lib/datasource&nbsp;아래에&nbsp;두고 <br>DBConnectionPool은&nbsp;container.xml에&nbsp;DataSource는&nbsp;JeusMain.xml에&nbsp;다음과&nbsp;같이&nbsp; <br>설정을&nbsp;하시면&nbsp;사용하실&nbsp;수가&nbsp;있습니다.&nbsp; <br>&nbsp; <br>1)&nbsp;DBConnectionPool <br>------------------------------------------------------------------------------ <br>&lt;DBConnectionPool&nbsp;MaxUseCount="-1"&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ConnectionPoolType="shared"&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CloseDelayMillis="-1"&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MaxActiveTimeSecs="-1"&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ConnectionPoolID="mysql-shared"&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ConnectionArguments="user=root;password="&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DriverClassName="org.gjt.mm.mysql.Driver"&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DynamicIncrement="true"&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ConnectionURL="jdbc:mysql://localhost:3306/mysql"&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LoginDelayMillis="-1"&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CloseLongActiveConnection="false"&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ConnectionTimeOutSecs="10"&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;DBPoolControl&nbsp;MaxCapacity="30"&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InitCapacity="20"&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MaxIdleTimeSecs="300"&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IncrementRate="4"&nbsp;/&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;DBAConnection&nbsp;ForcedClose="false"&nbsp;/&gt; <br>&lt;/DBConnectionPool&gt; <br>&nbsp; <br>&nbsp; <br>2)&nbsp;DataSource <br>------------------------------------------------------------------------------ <br>&lt;DataSource&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;Database&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Vendor&gt;others&lt;/Vendor&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ExportName&gt;mysql&lt;/ExportName&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;DataSourceClassName&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jeus.jdbc.driver.blackbox.BlackboxConnectionPoolDataSource <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/DataSourceClassName&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Property&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Name&gt;URL&lt;/Name&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Type&gt;java.lang.String&lt;/Type&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Value&gt;jdbc:mysql://localhost:3306/mysql&lt;/Value&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Property&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Property&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Name&gt;DriverClassName&lt;/Name&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Type&gt;java.lang.String&lt;/Type&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Value&gt;com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource&lt;/Value&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Property&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Property&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Name&gt;Password&lt;/Name&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Type&gt;java.lang.String&lt;/Type&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Value&gt;&lt;/Value&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Property&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Property&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Name&gt;User&lt;/Name&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Type&gt;java.lang.String&lt;/Type&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Value&gt;root&lt;/Value&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Property&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;DataSourceType&gt;ConnectionPoolDataSource&lt;/DataSourceType&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ConnectionPool&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;MinPoolSize&gt;4&lt;/MinPoolSize&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;MaxPoolSize&gt;4&lt;/MaxPoolSize&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;IncreasingStep&gt;1&lt;/IncreasingStep&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ResizingPeriod&gt;10&lt;/ResizingPeriod&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;OperationTimeout&gt;30000&lt;/OperationTimeout&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;WaitForFreeConnection&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;WaitingTime&gt;10000&lt;/WaitingTime&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/WaitForFreeConnection&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ConnectionPool&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Database&gt;&nbsp; <br>&nbsp;&nbsp;&lt;/DataSource&gt; <br>-------------------------------------------------------------------------------------- <br><br>*&nbsp;Oracle&nbsp;커넥션풀&nbsp;샘플&nbsp;(JEUSMain.xml의&nbsp;&lt;/node&gt;하단에&nbsp;추가) <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;resource&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;data-source&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;database&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;vendor&gt;oracle&lt;/vendor&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;export-name&gt;오라클UID&lt;/export-name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;data-source-class-name&gt;oracle.jdbc.pool.OracleConnectionPoolDataSource&lt;/data-source-class-name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;data-source-type&gt;DataSource&lt;/data-source-type&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;database-name&gt;디비명&lt;/database-name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;data-source-name&gt;oracle.jdbc.pool.OracleConnectionPoolDataSource&lt;/data-source-name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;network-protocol&gt;tcp&lt;/network-protocol&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;user&gt;scott&lt;/user&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;password&gt;tiger&lt;/password&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;port-number&gt;1521&lt;/port-number&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;server-name&gt;아이피&nbsp;또는&nbsp;127.0.0.1&lt;/server-name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;driver-type&gt;thin&lt;/driver-type&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;connection-pool&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;pooling&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;max&gt;20&lt;/max&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;step&gt;1&lt;/step&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;period&gt;500000&lt;/period&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/pooling&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/connection-pool&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/database&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/data-source&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/resource&gt; <br><br>-------------------------------------------------------------------------------------- <br><br>*&nbsp;DB2 <br><br>&nbsp;&nbsp;1)&nbsp;JEUS&nbsp;3.x&nbsp;($JEUS_HOME/config/&lt;NODENAME&gt;/JeusMain.xml <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Database&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Vendor&gt;db2&lt;/Vendor&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ExportName&gt;db2local&lt;/ExportName&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;DatabaseName&gt;SAMPLE&lt;/DatabaseName&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;DataSourceClassName&gt;COM.ibm.db2.jdbc.DB2ConnectionPoolDataSource&lt;/DataSourceClassName&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;DataSourceName/&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ServiceName/&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Description/&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;NetworkProtocol/&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Password&gt;jeus2013&lt;/Password&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;PortNumber&gt;포트번호&lt;/PortNumber&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ServerName&gt;DB서버&nbsp;IP&lt;/ServerName&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;User&gt;db2inst1&lt;/User&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;DataSourceType&gt;LocalXADataSource&lt;/DataSourceType&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ConnectionPool&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;MinPoolSize&gt;2&lt;/MinPoolSize&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;MaxPoolSize&gt;4&lt;/MaxPoolSize&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;IncreasingStep&gt;1&lt;/IncreasingStep&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ResizingPeriod&gt;600000&lt;/ResizingPeriod&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;OperationTimeout&gt;30000&lt;/OperationTimeout&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;WaitForFreeConnection&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;WaitingTime&gt;10000&lt;/WaitingTime&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/WaitForFreeConnection&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ConnectionPool&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Database&gt;&nbsp;&nbsp; <br>&nbsp;&nbsp;2)&nbsp;JEUS&nbsp;4.x&nbsp;($JEUS_HOME/config/&lt;NODENAME&gt;/JEUSMain.xml <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;database&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;vendor&gt;db2&lt;/vendor&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;export-name&gt;db2XADatasource1&lt;/export-name&gt; <br>&lt;data-source-class-name&gt;COM.ibm.db2.jdbc.DB2XADataSource&lt;/data-source-class-name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;data-source-type&gt;XADataSource&lt;/data-source-type&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;database-name&gt;sample&lt;/database-name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;description&gt;Customer&nbsp;DB&lt;/description&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;password&gt;db2inst1&lt;/password&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;encryption&gt;false&lt;/encryption&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;port-number&gt;포트번호&lt;/port-number&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;server-name&gt;DB서버&nbsp;IP&lt;/server-name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;user&gt;db2inst1&lt;/user&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;connection-pool&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;pooling&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;min&gt;2&lt;/min&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;max&gt;4&lt;/max&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;step&gt;1&lt;/step&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;period&gt;600000&lt;/period&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/pooling&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;wait-free-connection&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;enable-wait&gt;false&lt;/enable-wait&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;wait-time&gt;10000&lt;/wait-time&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/wait-free-connection&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;operation-to&gt;30000&lt;/operation-to&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/connection-pool&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/database&gt; <br>-------------------------------------------------------------------------------------- <br><br><br>&nbsp; <br><br>&nbsp; <br><br>###&nbsp;TIPS&nbsp;### <br><br>-------------------------------------------------------------------------------------- <br><br>*&nbsp;파일경로설정 <br><br>1)&nbsp;파일&nbsp;실제경로&nbsp;(기본값) <br><br>-&nbsp;servlet&nbsp;:&nbsp;제우스홈\webhome\servlet_home\webapps\examples\WEB-INF\classes <br><br>-&nbsp;jsp&nbsp;:&nbsp;제우스홈\webhome\servlet_home\webapps\examples <br><br>2)&nbsp;기존의&nbsp;examples&nbsp;컨텍스트&nbsp;이외에&nbsp;새로운&nbsp;aaa라는&nbsp;컨텍스트를&nbsp;추가하는&nbsp;방법&nbsp;(컨텍스트&nbsp;설정법) <br>-&nbsp;WEBMain.xml에서&nbsp;다음&nbsp;부분을&nbsp;추가한다.&nbsp; <br>&nbsp;&nbsp;&lt;context&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;context-name&gt;aaa&lt;/context-name&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;context-path&gt;/aaa&lt;/context-path&gt;&nbsp; <br>&nbsp;&nbsp;&lt;/context&gt;&nbsp; <br>-&nbsp;aaa&nbsp;컨텍스트의&nbsp;DD(deployment&nbsp;descriptor)파일을&nbsp;작성&nbsp; <br>&nbsp;&nbsp;제우스홈\config\노드명\[SERVLET_ENGINE_NAME]\jeus-web-dd_examples.xml&nbsp;파일을&nbsp;jeus-web-dd_aaa.xml&nbsp;파일로&nbsp;복사&nbsp;&nbsp; <br><br>&nbsp;&nbsp;하여&nbsp;편집.&nbsp;context-name,&nbsp;docbase&nbsp;만&nbsp;설정하면&nbsp;됩니다.&nbsp;WEBMain.xml의&nbsp;이름과&nbsp;동일해야&nbsp;함.&nbsp; <br>&nbsp;&nbsp;&lt;?xml&nbsp;version="1.0"?&gt;&nbsp; <br>&nbsp;&nbsp;&lt;!DOCTYPE&nbsp;jeus-web-dd&nbsp;PUBLIC&nbsp;"-//Tmax&nbsp;Soft.,&nbsp;Inc.//DTD&nbsp;JEUS&nbsp;WEB&nbsp;Deployment&nbsp;Info&nbsp;4.0//EN"&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"http://www.tmaxsoft.com/jeus/dtd/4.0/jeus-web-dd.dtd"&gt;&nbsp; <br>&nbsp;&nbsp;&lt;jeus-web-dd&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;context&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;context-name&gt;aaa&lt;/context-name&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;docbase&gt;서버의&nbsp;물리적&nbsp;절대경로&lt;/docbase&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;auto-reload&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;enable-reload&gt;true&lt;/enable-reload&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;check-on-demand&gt;true&lt;/check-on-demand&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/auto-reload&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/context&gt;&nbsp; <br>&nbsp;&nbsp;&lt;/jeus-web-dd&gt;&nbsp; <br>-&nbsp;WebtoB의&nbsp;환경설정파일(http.m)의&nbsp;URI&nbsp;절에&nbsp;aaa&nbsp;컨텍스트&nbsp;경로를&nbsp;다음과&nbsp;같이&nbsp;추가한다.&nbsp; <br>&nbsp;&nbsp;*URI&nbsp; <br>&nbsp;&nbsp;uri8&nbsp;Uri&nbsp;=&nbsp;"/aaa/",Svrtype&nbsp;=&nbsp;JSV&nbsp; <br>-&nbsp;WebtoB의&nbsp;환경파일&nbsp;수정&nbsp;후에는&nbsp;반드시&nbsp;환경파일&nbsp;컴파일&nbsp;후&nbsp;WebtoB를&nbsp;재기동&nbsp;:&nbsp;wscfl&nbsp;-i&nbsp;http.m&nbsp; <br>-&nbsp;JEUS&nbsp;를&nbsp;재기동 <br><br><br><br>-------------------------------------------------------------------------------------- <br><br>*&nbsp;index.jsp를&nbsp;자동으로&nbsp;인식시키려면 <br><br>-&nbsp;제우스홈\config\노드명\[SERVLET_ENGINE_NAME]\webcommon.xml&nbsp;파일에&nbsp;index.jsp추가 <br><br>&nbsp;&nbsp;&lt;welcome-file-list&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;welcome-file&gt;index.html&lt;/welcome-file&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;welcome-file&gt;index.htm&lt;/welcome-file&gt; <br>&nbsp;&nbsp;&lt;/welcome-file-list&gt; <br><br>-------------------------------------------------------------------------------------- <br><br>*&nbsp;jspwork&nbsp;디렉토리&nbsp;변경 <br><br>1.&nbsp;JEUS&nbsp;3.x <br>$JEUS_HOME/config/&lt;HOSTNAME&gt;/&lt;SERVLET_ENGINE_NAME&gt;/container.xml의 <br>&lt;JSPEngine&gt;&nbsp;태그&nbsp;안에&nbsp;JspWorkDir을&nbsp;설정하면&nbsp;됩니다. <br>&lt;Container&gt; <br>&nbsp;&nbsp;... <br>&nbsp;&nbsp;&lt;ContextGroup&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;... <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;JSPEngine&nbsp;...&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JspWorkDir="/app/jwork"&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... <br>&nbsp;&nbsp;&nbsp;&nbsp;/&gt; <br>2.&nbsp;JEUS&nbsp;4.x <br>$JEUS_HOME/config/&lt;HOSTNAME&gt;/&lt;SERVLET_ENGINE_NAME&gt;/WEBMain.xml의 <br>&lt;jsp-engine&gt;&nbsp;태그&nbsp;안에&nbsp;&lt;jsp-work-dir&gt;를&nbsp;설정하면&nbsp;됩니다. <br>&lt;web-container&gt; <br>&nbsp;&nbsp;&lt;context-group&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;... <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;jsp-engine&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;jsp-work-dir&gt;/app/jwork&lt;/jsp-work-dir&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/jsp-engine&gt; <br>-------------------------------------------------------------------------------------- <br><br>*&nbsp;폴더관리&nbsp;(webtob,&nbsp;jeus&nbsp;연동시) <br><br>-&nbsp;image,&nbsp;js,&nbsp;css,&nbsp;html&nbsp;등은WebToB홈\docs&nbsp;에&nbsp;폴더로&nbsp;관리해서&nbsp;WEBTOB가&nbsp;처리 <br><br>-&nbsp;jsp,&nbsp;servlet은&nbsp;context를&nbsp;별도&nbsp;설정&nbsp;(컨텍스트&nbsp;설정법&nbsp;참조)해서&nbsp;JEUS가&nbsp;처리 <br><br>-------------------------------------------------------------------------------------- <br><br>*&nbsp;오라클&nbsp;데이터베이스&nbsp;사용시&nbsp;C:/jeus/lib/datasource&nbsp;폴더에&nbsp;classes12.zip&nbsp;복사 <br><br>-------------------------------------------------------------------------------------- <br><br>*&nbsp;trouble&nbsp;shooting <br><br>-&nbsp;Out&nbsp;Of&nbsp;Memory&nbsp;에러 <br><br>&nbsp;&nbsp;JVM에서&nbsp;사용할&nbsp;수&nbsp;있는&nbsp;memory가&nbsp;부족할&nbsp;때&nbsp;발생합니다.&nbsp; <br>&nbsp;&nbsp;이것을&nbsp;해결하는&nbsp;방법으로는&nbsp;버전별로&nbsp;다음과&nbsp;같이&nbsp;JEUS&nbsp;환경&nbsp;파일에서 <br>&nbsp;&nbsp;추가하면&nbsp;됩니다.&nbsp;-Xms가&nbsp;min&nbsp;값이고&nbsp;-Xmx가&nbsp;max&nbsp;값입니다. <br>&nbsp;&nbsp;1)&nbsp;JEUS&nbsp;3.x&nbsp;($JEUS_HOME/config/&lt;HOSTNAME&gt;/JeusMain.xml) <br>&nbsp;&nbsp;&lt;JeusSystemConfig&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;NodeConfig&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;EngineContainer&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;CommandOption&gt;-Xms256m&nbsp;-Xmx256m&lt;CommandOption&gt; <br>&nbsp;&nbsp;2)&nbsp;JEUS&nbsp;4.x&nbsp;($JEUS_HOME/config/&lt;HOSTNAME&gt;/JEUSMain.xml) <br>&nbsp;&nbsp;&lt;jeus-system&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;node&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;engine-container&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;command-option&gt;-Xms256m&nbsp;-Xmx256m&lt;command-option&gt; <br>-&nbsp;노드명에&nbsp;'-'&nbsp;문자를&nbsp;썼을&nbsp;경우&nbsp;또는&nbsp;노드명에&nbsp;공백이&nbsp;있는&nbsp;경우 <br><br>&nbsp;&nbsp;wscfl&nbsp;-i&nbsp;http.m&nbsp;부분에서&nbsp;오류&nbsp;-&gt;&nbsp;노드명을&nbsp;""으로&nbsp;묶어준다. <br><br>-&nbsp;8080포트&nbsp;사용하려고&nbsp;할때&nbsp;XDB&nbsp;인증창이&nbsp;뜬다면...&nbsp; <br><br>&nbsp;&nbsp;=====&gt;&nbsp;오라클의&nbsp;XDB포트와&nbsp;충돌하는&nbsp;경우이므로&nbsp;오라클의&nbsp;XDB포트를&nbsp;아래와&nbsp;같이&nbsp;변경해준다. <br><br>&nbsp;&nbsp;[시작]&nbsp;-&gt;&nbsp;[프로그램]&nbsp;-&gt;&nbsp;[Oracle&nbsp;-&nbsp;OraHome92]&nbsp;-&gt;&nbsp;[Configuration&nbsp;and&nbsp;Migration&nbsp;Tools]&nbsp; <br><br>&nbsp;&nbsp;-&gt;&nbsp;[Database&nbsp;Configuration&nbsp;Assistant]&nbsp;&nbsp;&nbsp;선택 <br><br>&nbsp;&nbsp;프로그램이&nbsp;실행이되면..... <br><br>&nbsp;&nbsp;[다음]&nbsp;버튼을&nbsp;Click&nbsp;-&gt;&nbsp;[데이터베이스의&nbsp;데이이터베이스&nbsp;옵션구성]&nbsp;선택&nbsp;-&gt;&nbsp;[사용&nbsp;가능한&nbsp;데이터베이스]&nbsp;선택&nbsp; <br><br>&nbsp;&nbsp;-&gt;&nbsp;[표준데이터베이&nbsp;&nbsp;스&nbsp;기능...]&nbsp;버튼을&nbsp;Click&nbsp;-&gt;&nbsp;Oracle&nbsp;XML&nbsp;DB&nbsp;의&nbsp;[사용자&nbsp;정의&nbsp;...]&nbsp;버튼을&nbsp;Click&nbsp; <br><br>&nbsp;&nbsp;-&gt;&nbsp;[포트&nbsp;번호&nbsp;구성]&nbsp;항목의&nbsp;[사용자&nbsp;정의&nbsp;값&nbsp;지정]&nbsp;을&nbsp;선택하셔서&nbsp;HTTP&nbsp;포트를&nbsp;바꿔줍니다.&nbsp; <br><br>&nbsp;&nbsp;그리고&nbsp;FTP&nbsp;및&nbsp;WebDAV&nbsp;포트는&nbsp;기본&nbsp;설정인&nbsp;2100&nbsp;을&nbsp;사용합니다.&nbsp;-&gt;&nbsp;[확인]&nbsp;버튼을&nbsp;Click&nbsp;하시고&nbsp; <br><br>&nbsp;&nbsp;[다음]&nbsp;버튼을&nbsp;Click&nbsp;하셔서&nbsp;데이터베이스를&nbsp;실행할&nbsp;기본모드를&nbsp;선택하시고&nbsp;[완료]&nbsp;버튼을&nbsp;눌러주시면&nbsp; <br><br>&nbsp;&nbsp;요약&nbsp;메세지창이&nbsp;뜨고&nbsp;[확인]&nbsp;버튼을&nbsp;눌러주시면&nbsp;XDB&nbsp;의&nbsp;Port&nbsp;설정이&nbsp;끝나게&nbsp;됩니다. <br><br>-&nbsp;다음과&nbsp;같은&nbsp;nullpointer&nbsp;exception&nbsp;발생시 <br><br>&nbsp;&nbsp;&lt;&lt;__Exception__&gt;&gt; <br>&nbsp;&nbsp;java.lang.NullPointerException <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;javax.servlet.GenericServlet.getServletContext(GenericServlet.java:20 <br>&nbsp;&nbsp;5) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;javax.servlet.GenericServlet.log(GenericServlet.java:300) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;javax.servlet.GenericServlet.init(GenericServlet.java:257) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;jeus.servlet.common.WebContainerManager.startContainer(WebContainerMa <br>&nbsp;&nbsp;nager.java:538) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;jeus.servlet.syscontext.SystemContext.startup(SystemContext.java:64) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;jeus.servlet.deployment.SystemWebContainer.startup(SystemWebContainer <br>&nbsp;&nbsp;.java:35) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;jeus.server.SystemEngineController.startEngine(SystemEngineController <br>&nbsp;&nbsp;.java:26) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;jeus.server.JeusServer.boot(JeusServer.java:720) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;jeus.server.ControlThread.acceptRequests(ControlThread.java:181) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;jeus.server.ControlThread.run(ControlThread.java:86) <br>&nbsp;&nbsp;java.lang.NullPointerException&nbsp;:&nbsp;null <br>&nbsp;&nbsp;[SystemEngineController]&nbsp;fail&nbsp;to&nbsp;start&nbsp;System&nbsp;Engine&nbsp;[devserver_system_engine]&nbsp;: <br>&nbsp;&nbsp;&nbsp;jeus.server.JeusServerException <br>&nbsp;&nbsp;&lt;&lt;__!Exception__&gt;&gt; <br>&nbsp;&nbsp;[2005.05.26&nbsp;10:30:05][2]&nbsp;[ControlThread]&nbsp;command&nbsp;(210.117.198.62:1063)&nbsp;:&nbsp;disconn <br>&nbsp;&nbsp;ect() <br><br>&nbsp;=====&gt;&nbsp;j2sdk1.4.1_07&nbsp;이하&nbsp;버젼으로&nbsp;jdk를&nbsp;다시&nbsp;설치한&nbsp;수&nbsp;jeus/webtob&nbsp;다시설치&nbsp;해보세요. <br><br>-&nbsp;C:\Program&nbsp;Files\Java\j2re1.4.1_07\bin\server\jvm.dll&nbsp;파일을&nbsp;찾지&nbsp;못할때 <br><br>&nbsp;&nbsp;=====&gt;&nbsp;C:\j2sdk1.4.1_07\jre\bin\server&nbsp;폴더를&nbsp;카피해서&nbsp; <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C:\Program&nbsp;Files\Java\j2re1.4.1_07\bin&nbsp;폴더에&nbsp;복사하세요. <br><br>-------------------------------------------------------------------------------------- <br><br>*&nbsp;클래스파일&nbsp;변경시&nbsp;실시간으로&nbsp;변경&nbsp;반영 <br><br>소스가&nbsp;WEB-INF/classes&nbsp;아래에&nbsp;있으면&nbsp;리부팅이&nbsp;필요&nbsp;없습니다.&nbsp; <br>단,&nbsp;확인&nbsp;하실&nbsp;것이&nbsp;container.xml(WEBMain.xml)에&nbsp;context&nbsp;태그&nbsp;내에&nbsp;AutoReload="true"가&nbsp;설정되어&nbsp;있으면&nbsp;됩니다. <br>WEB-INF/lib/*.jar는&nbsp;라이브러리와&nbsp;같이&nbsp;수정하지&nbsp;않는다는&nbsp;의미를&nbsp;포함하고&nbsp;있으므로(J2EE&nbsp;스펙에&nbsp;준하면...)&nbsp; <br>jar&nbsp;파일&nbsp;내의&nbsp;수정은&nbsp;&nbsp;반드시&nbsp;제우스를&nbsp;리부팅&nbsp;해야&nbsp;적용됩니다. <br>-------------------------------------------------------------------------------------- <br><br>*&nbsp;인클루드된&nbsp;파일&nbsp;변경시&nbsp;즉시&nbsp;적용(&lt;%@&nbsp;include&nbsp;자동&nbsp;반영하기) <br><br>JSP의&nbsp;include의&nbsp;방식에는&nbsp;&lt;%@&nbsp;include&nbsp;(action),&nbsp;&lt;jsp:include&nbsp;(directive)&nbsp;가&nbsp;있다. <br><br>이&nbsp;중&nbsp;&lt;jsp:include&nbsp;(action)&nbsp;는&nbsp;include하는&nbsp;JSP(a.jsp)와&nbsp;include되는&nbsp;JSP(b.jsp)가&nbsp;각각&nbsp;별도의&nbsp;servlet으로&nbsp;변환된다. <br>a.jsp가&nbsp;수행&nbsp;도중&nbsp;b.jsp의&nbsp;include&nbsp;구문을&nbsp;만나면&nbsp;b.jsp로&nbsp;제어권이&nbsp;넘어가서&nbsp;수행된&nbsp;후&nbsp;다시&nbsp;a.jsp로&nbsp;제어권이&nbsp;넘어와서&nbsp;계속&nbsp;수행된다. <br>그래서&nbsp;b.jsp가&nbsp;변경된&nbsp;경우&nbsp;변경사항이&nbsp;자동으로&nbsp;반영된다. <br><br>그리고&nbsp;&lt;%@&nbsp;include&nbsp;(directive)는&nbsp;include하는&nbsp;JSP(a.jsp)와&nbsp;include되는&nbsp;JSP(b.jsp)가&nbsp;&nbsp;하나의&nbsp;servlet으로&nbsp;변환되어서&nbsp;a.jsp&nbsp;내에&nbsp;b.jsp가&nbsp;완전히&nbsp;포함되는&nbsp;형태로&nbsp;변환된다. <br>&lt;%@&nbsp;include&nbsp;(directive)의&nbsp;목적은&nbsp;JSP가&nbsp;Servlet으로&nbsp;변환되어&nbsp;컴파일&nbsp;될&nbsp;때에 <br>특정&nbsp;코드나&nbsp;text를&nbsp;포함하기&nbsp;위해서&nbsp;이다. <br>따라서&nbsp;b.jsp가&nbsp;변경된&nbsp;경우&nbsp;a.jsp는&nbsp;b.jsp가&nbsp;변경되었는지&nbsp;모르기&nbsp;때문에&nbsp;include&nbsp;된&nbsp;JSP의&nbsp;변경시&nbsp;이것을&nbsp;인지하지&nbsp;못한다. <br><br>&lt;%@&nbsp;include&nbsp;(directive)&nbsp;를&nbsp;사용하는&nbsp;경우&nbsp;JSP&nbsp;container가&nbsp;include된&nbsp;파일이&nbsp;변경된&nbsp;경우&nbsp;자동으로&nbsp;반영해&nbsp;주기&nbsp;위해서는&nbsp;include하는&nbsp;파일이&nbsp;수행될&nbsp;때&nbsp;마다&nbsp;include된&nbsp;파일의&nbsp;변경&nbsp;여부를&nbsp;검사해서&nbsp;변경되었다면&nbsp;include&nbsp;하는&nbsp;파일을&nbsp;recompile&nbsp;해&nbsp;주어야&nbsp;한다. <br>이것은&nbsp;JSP&nbsp;container에게는&nbsp;상당히&nbsp;부하를&nbsp;주는&nbsp;작업이다. <br>그래서&nbsp;JSP&nbsp;Spec에서는&nbsp;include된&nbsp;파일의&nbsp;변경시&nbsp;반영&nbsp;여부는&nbsp;명시하지&nbsp;않고&nbsp;있다. <br><br>JEUS에서는&nbsp;개발과&nbsp;운영의&nbsp;편의성을&nbsp;위해서&nbsp;이것을&nbsp;옵션으로&nbsp;지정하여&nbsp;변경시&nbsp;자동&nbsp;반영이&nbsp;되게&nbsp;설정할&nbsp;수&nbsp;있다. <br>하지만&nbsp;이&nbsp;옵션을&nbsp;true로&nbsp;설정하는&nbsp;경우&nbsp;불필요한&nbsp;검사가&nbsp;들어가게&nbsp;되므로&nbsp;수행&nbsp;속도에&nbsp;지장을&nbsp;주게됩니다.&nbsp;반드시&nbsp;JSP&nbsp;파일의&nbsp;변경이&nbsp;빈번한&nbsp;경우에만&nbsp;설정하면&nbsp;된다. <br><br>1.&nbsp;JEUS&nbsp;3.x <br>$JEUS_HOME/config/&lt;HOSTNAME&gt;/&lt;SERVLET_ENGINE_NAME&gt;/container.xml에&nbsp;설정 <br>--------------------------------------------------------- <br>&lt;Container&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;... <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;ContextGroup&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;JSPEngine&nbsp;... <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CheckIncludedJspFile="true" <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;/&gt; <br>2.&nbsp;JEUS&nbsp;4.x <br>$JEUS_HOME/config/&lt;HOSTNAME&gt;/&lt;SERVLET_ENGINE_NAME&gt;/WEBMain.xml에&nbsp;설정 <br>--------------------------------------------------------- <br>&lt;web-container&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;... <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;context-group&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;jsp-engine&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;check-included-jspfile&gt;true&lt;/check-included-jspfile&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/jsp-engine&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/context-group&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;... <br>&lt;/web-container&gt; <br>-------------------------------------------------------------------------------------- <br><br>*&nbsp;http.m&nbsp;샘플 <br><br>*DOMAIN <br>WebtoB <br><br>*NODE <br>devserver&nbsp;WEBTOBDIR="C:/webtob",&nbsp; <br>&nbsp;&nbsp;SHMKEY&nbsp;=&nbsp;54000, <br>&nbsp;&nbsp;DOCROOT="C:/tmax/webdocs", <br>&nbsp;&nbsp;IndexName="index.jsp,index.html,index.htmm", <br>&nbsp;&nbsp;PORT&nbsp;=&nbsp;"80",&nbsp; <br>&nbsp;&nbsp;LOGGING&nbsp;=&nbsp;"log1", <br>&nbsp;&nbsp;ERRORLOG&nbsp;=&nbsp;"log2", <br>&nbsp;&nbsp;HTH&nbsp;=&nbsp;1, <br>&nbsp;&nbsp;JSVPORT&nbsp;=&nbsp;9900 <br><br>*SVRGROUP <br>htmlg&nbsp;&nbsp;NODENAME&nbsp;=&nbsp;devserver,&nbsp;SvrType&nbsp;=&nbsp;HTML <br>cgig&nbsp;&nbsp;NODENAME&nbsp;=&nbsp;devserver,&nbsp;SVRTYPE&nbsp;=&nbsp;CGI <br>ssig&nbsp;&nbsp;NODENAME&nbsp;=&nbsp;devserver,&nbsp;SVRTYPE&nbsp;=&nbsp;SSI <br>jsvg&nbsp;&nbsp;NODENAME&nbsp;=&nbsp;devserver,&nbsp;SVRTYPE=JSV <br><br>*SERVER <br>html&nbsp;&nbsp;SVGNAME&nbsp;=&nbsp;htmlg,&nbsp;MinProc&nbsp;=&nbsp;3,&nbsp;MaxProc&nbsp;=&nbsp;10 <br>cgi&nbsp;&nbsp;SVGNAME&nbsp;=&nbsp;cgig,&nbsp;MinProc&nbsp;=&nbsp;3,&nbsp;MaxProc&nbsp;=&nbsp;10 <br>ssi&nbsp;&nbsp;SVGNAME&nbsp;=&nbsp;ssig,&nbsp;MinProc&nbsp;=&nbsp;3,&nbsp;MaxProc&nbsp;=10 <br>MyGroup&nbsp;&nbsp;SVGNAME=jsvg,&nbsp;MinProc=10,&nbsp;MaxProc=10 <br><br>*URI <br>uri1&nbsp;&nbsp;Uri&nbsp;=&nbsp;"/cgi-bin/",&nbsp;Svrtype&nbsp;=&nbsp;CGI <br>uri2&nbsp;&nbsp;Uri="/examples/",&nbsp;Svrtype=JSV <br>uri3&nbsp;&nbsp;Uri="/",&nbsp;Svrtype=JSV <br><br>*ALIAS <br>alias1&nbsp;&nbsp;URI&nbsp;=&nbsp;"/cgi-bin/",&nbsp;RealPath&nbsp;=&nbsp;"C:/webtob/cgi-bin/" <br><br>*LOGGING <br>log1&nbsp;&nbsp;Format&nbsp;=&nbsp;"DEFAULT",&nbsp;FileName&nbsp;=&nbsp;"C:/webtob/log/access.log",&nbsp;Option&nbsp;=&nbsp;"sync" <br>log2&nbsp;&nbsp;Format&nbsp;=&nbsp;"ERROR",&nbsp;FileName&nbsp;=&nbsp;"C:/webtob/log/error.log",&nbsp;Option&nbsp;=&nbsp;"sync" <br><br>*EXT <br>htm&nbsp;&nbsp;MimeType&nbsp;=&nbsp;"text/html",&nbsp;SvrType&nbsp;=&nbsp;HTML <br>-------------------------------------------------------------------------------------- <br><br>*&nbsp;JEUSMain.xml&nbsp;샘플 <br><br>&lt;?xml&nbsp;version="1.0"?&gt; <br>&lt;!DOCTYPE&nbsp;jeus-system&nbsp;PUBLIC&nbsp;"-//Tmax&nbsp;Soft,&nbsp;Inc.//DTD&nbsp;JEUS&nbsp;Main&nbsp;Config&nbsp;4.0//EN" <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"http://www.tmaxsoft.com/jeus/dtd/4.0/jeus-main-config.dtd"&gt; <br>&lt;jeus-system&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;node&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;devserver&lt;/name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;class-ftp&gt;true&lt;/class-ftp&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;sequential-start&gt;true&lt;/sequential-start&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;enable-webadmin&gt;true&lt;/enable-webadmin&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;system-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;level&gt;debug&lt;/level&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/system-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;engine-container&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;container1&lt;/name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;engine-command&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;type&gt;servlet&lt;/type&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;engine1&lt;/name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;startup-mode&gt;xml&lt;/startup-mode&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/engine-command&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tm-config&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;pooling&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;min&gt;10&lt;/min&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;max&gt;20&lt;/max&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;step&gt;2&lt;/step&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;period&gt;600000&lt;/period&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/pooling&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;active-timeout&gt;300000&lt;/active-timeout&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;commit-timeout&gt;120000&lt;/commit-timeout&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;capacity&gt;20000&lt;/capacity&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tm-config&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/engine-container&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/node&gt; <br>&lt;/jeus-system&gt; <br><br>-------------------------------------------------------------------------------------- <br><br>*&nbsp;WEBMain.xml&nbsp;샘플 <br><br>&lt;?xml&nbsp;version="1.0"?&gt; <br>&lt;!DOCTYPE&nbsp;web-container&nbsp;PUBLIC&nbsp;"-//Tmax&nbsp;Soft.,&nbsp;Inc.//DTD&nbsp;WEB&nbsp;Main&nbsp;Config&nbsp;4.0//EN" <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"http://www.tmaxsoft.com/jeus/dtd/4.0/web-main-config.dtd"&gt; <br>&lt;web-container&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;context-group&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;group-name&gt;MyGroup&lt;/group-name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;group-docbase&gt;webapps&lt;/group-docbase&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;session-config&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;timeout&gt;20&lt;/timeout&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;shared&gt;true&lt;/shared&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/session-config&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;logging&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;error-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;target&gt;stdout&lt;/target&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;level&gt;information&lt;/level&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;buffer-size&gt;0&lt;/buffer-size&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;valid-day&gt;1&lt;/valid-day&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/error-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;user-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;target&gt;file&lt;/target&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;buffer-size&gt;0&lt;/buffer-size&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;valid-day&gt;1&lt;/valid-day&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/user-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;access-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;target&gt;file&lt;/target&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;buffer-size&gt;0&lt;/buffer-size&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;valid-day&gt;1&lt;/valid-day&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;log-format&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;time-format&gt;default&lt;/time-format&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/log-format&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/access-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logging&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;context&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;context-name&gt;examples&lt;/context-name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;context-path&gt;/examples&lt;/context-path&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/context&gt; <br>&nbsp;&nbsp;&lt;context&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&lt;context-name&gt;ngi&lt;/context-name&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&lt;context-path&gt;/&lt;/context-path&gt;&nbsp; <br>&nbsp;&nbsp;&lt;/context&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;webserver-connection&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;webtob-listener&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;listener-id&gt;webtob1&lt;/listener-id&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;port&gt;9900&lt;/port&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;hth-count&gt;1&lt;/hth-count&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;webtob-address&gt;127.0.0.1&lt;/webtob-address&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;registration-id&gt;MyGroup&lt;/registration-id&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;thread-pool&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;min&gt;4&lt;/min&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;max&gt;10&lt;/max&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;step&gt;2&lt;/step&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;max-idle-time&gt;30000&lt;/max-idle-time&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;max-wait-queue&gt;4&lt;/max-wait-queue&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/thread-pool&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/webtob-listener&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/webserver-connection&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/context-group&gt; <br>&lt;/web-container&gt; <br>-------------------------------------------------------------------------------------- <br><br>&nbsp; <br><br>&nbsp; <br><br>&nbsp; <br><br>###&nbsp;실무&nbsp;적용&nbsp;예&nbsp;(버츄얼호스팅&nbsp;사용)&nbsp;### <br><br>--------------------------------------------------------------------------------------&nbsp; <br><br>프로젝트&nbsp;실제환경을&nbsp;로컬에서&nbsp;구현해&nbsp;작업해야&nbsp;하는&nbsp;상황에서... <br><br>두대의&nbsp;IBM서버로&nbsp;돌아가는&nbsp;JEUS/WEBTOB의&nbsp;환경설정&nbsp;입니다. <br><br>&nbsp; <br><br>&lt;&lt;&lt;&nbsp;실제환경&nbsp;&gt;&gt;&gt; <br><br>--------------------------------------------------------------------------- <br><br>-&nbsp;서버1&nbsp;:&nbsp;WindowsServer2003Standard,&nbsp;웹서버&nbsp;(WEBTOB) <br><br>-&nbsp;서버2&nbsp;:&nbsp;WindowsServer2003Standard,&nbsp;웹컨테이너&nbsp;(JEUS),&nbsp;DB(Oracle9i) <br><br>-&nbsp;두&nbsp;서버는&nbsp;9999포트를&nbsp;통해&nbsp;연동한다. <br><br>-&nbsp;images,css,js는&nbsp;서버1에&nbsp;jsp,java는&nbsp;서버2에&nbsp;위치시킨다. <br><br>-&nbsp;서버구조는&nbsp;1&nbsp;WEBSERVER,&nbsp;2&nbsp;CONTAINER&nbsp;(원래&nbsp;4개에서&nbsp;필요한&nbsp;두개만&nbsp;가동) <br><br>-&nbsp;윈도우&nbsp;hosts파일에&nbsp;localhost2,&nbsp;localhost3&nbsp;추가 <br><br>---------------------------------------------------------------------------- <br><br>&nbsp; <br><br>&lt;&lt;&lt;&nbsp;sample.m&nbsp;&gt;&gt;&gt; <br><br>*DOMAIN <br>WebtoB <br><br>*NODE <br>realchokyCompaq <br>&nbsp;&nbsp;WebtobDir="C:/webtob", <br>&nbsp;&nbsp;Shmkey=54000, <br>&nbsp;&nbsp;Docroot="C:/center", <br>&nbsp;&nbsp;HTH=1, <br>&nbsp;&nbsp;port="9900", <br>&nbsp;&nbsp;JSVPort=9999, <br>&nbsp;&nbsp;IndexName="index.jsp,index.htm,index.html", <br>&nbsp;&nbsp;Logging="log1", <br>&nbsp;&nbsp;ErrorLog="log2" <br><br>*VHOST <br>center <br>&nbsp;&nbsp;NodeName="realchokyCompaq", <br>&nbsp;&nbsp;HostName="localhost2", <br>&nbsp;&nbsp;DocRoot="C:/center", <br>&nbsp;&nbsp;Port="9900", <br>&nbsp;&nbsp;SSLFlag=N, <br>&nbsp;&nbsp;IndexName="index.jsp,index.htm,index.html" <br><br>admin <br>&nbsp;&nbsp;NodeName="realchokyCompaq", <br>&nbsp;&nbsp;HostName="localhost3", <br>&nbsp;&nbsp;DocRoot="C:/admin", <br>&nbsp;&nbsp;Port="9900", <br>&nbsp;&nbsp;IndexName="index.jsp,index.htm,index.html" <br><br>*SVRGROUP <br>htmlg <br>&nbsp;&nbsp;NodeName="realchokyCompaq", <br>&nbsp;&nbsp;SvrType=HTML <br><br>jsvg <br>&nbsp;&nbsp;NodeName="realchokyCompaq", <br>&nbsp;&nbsp;SvrType=JSV, <br>&nbsp;&nbsp;VHostName=center <br><br>jsvg2 <br>&nbsp;&nbsp;NodeName="realchokyCompaq", <br>&nbsp;&nbsp;SvrType=JSV, <br>&nbsp;&nbsp;VHostName=admin <br><br>*SERVER <br>html <br>&nbsp;&nbsp;SvgName=htmlg, <br>&nbsp;&nbsp;MinProc=30, <br>&nbsp;&nbsp;MaxProc=60 <br><br>Center <br>&nbsp;&nbsp;SvgName=jsvg, <br>&nbsp;&nbsp;MinProc=30, <br>&nbsp;&nbsp;MaxProc=30, <br>&nbsp;&nbsp;HttpInBufsize=0, <br>&nbsp;&nbsp;HttpOutBufsize=0 <br><br>Admin <br>&nbsp;&nbsp;SvgName=jsvg2, <br>&nbsp;&nbsp;MinProc=10, <br>&nbsp;&nbsp;MaxProc=10, <br>&nbsp;&nbsp;HttpInBufsize=0, <br>&nbsp;&nbsp;HttpOutBufsize=0 <br><br>*URI <br>images <br>&nbsp;&nbsp;Uri="/images/", <br>&nbsp;&nbsp;SvrType=HTML <br><br>center <br>&nbsp;&nbsp;Uri="/", <br>&nbsp;&nbsp;SvrType=JSV, <br>&nbsp;&nbsp;VhostName=center <br><br>admin <br>&nbsp;&nbsp;Uri="/", <br>&nbsp;&nbsp;SvrType=JSV, <br>&nbsp;&nbsp;VhostName=admin <br><br>*LOGGING <br>log1 <br>&nbsp;&nbsp;FileName="C:/webtob/log/access.log", <br>&nbsp;&nbsp;Format="DEFAULT", <br>&nbsp;&nbsp;Option="sync" <br><br>log2 <br>&nbsp;&nbsp;FileName="C:/webtob/log/error.log", <br>&nbsp;&nbsp;Format="ERROR", <br>&nbsp;&nbsp;Option="sync" <br><br>*EXT <br>htm <br>&nbsp;&nbsp;Mimetype="text/html", <br>&nbsp;&nbsp;Svrtype=HTML <br><br>jsp <br>&nbsp;&nbsp;Mimetype="application/jsp", <br>&nbsp;&nbsp;Svrtype=JSV <br><br>&nbsp; <br><br>&nbsp; <br><br>&lt;&lt;&lt;&nbsp;JEUSMain.xml&nbsp;&gt;&gt;&gt; <br><br>&nbsp; <br><br>&lt;?xml&nbsp;version="1.0"?&gt; <br>&lt;!DOCTYPE&nbsp;jeus-system&nbsp;PUBLIC&nbsp;"-//Tmax&nbsp;Soft,&nbsp;Inc.//DTD&nbsp;JEUS&nbsp;Main&nbsp;Config&nbsp;4.0//EN" <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"http://www.tmaxsoft.com/jeus/dtd/4.0/jeus-main-config.dtd"&gt; <br>&lt;jeus-system&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;node&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;realchokyCompaq&lt;/name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;class-ftp&gt;true&lt;/class-ftp&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;sequential-start&gt;true&lt;/sequential-start&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;system-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;level&gt;debug&lt;/level&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/system-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;engine-container&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;container1&lt;/name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;engine-command&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;type&gt;servlet&lt;/type&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;engine1&lt;/name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;startup-mode&gt;xml&lt;/startup-mode&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/engine-command&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tm-config&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;pooling&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;min&gt;10&lt;/min&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;max&gt;20&lt;/max&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;step&gt;2&lt;/step&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;period&gt;600000&lt;/period&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/pooling&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;active-timeout&gt;300000&lt;/active-timeout&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;commit-timeout&gt;120000&lt;/commit-timeout&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;capacity&gt;20000&lt;/capacity&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tm-config&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/engine-container&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;engine-container&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;container2&lt;/name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;engine-command&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;type&gt;servlet&lt;/type&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;engine2&lt;/name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;startup-mode&gt;xml&lt;/startup-mode&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/engine-command&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tm-config&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;pooling&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;min&gt;10&lt;/min&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;max&gt;20&lt;/max&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;step&gt;2&lt;/step&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;period&gt;600000&lt;/period&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/pooling&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;active-timeout&gt;300000&lt;/active-timeout&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;commit-timeout&gt;120000&lt;/commit-timeout&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;capacity&gt;20000&lt;/capacity&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tm-config&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/engine-container&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/node&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;resource&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;data-source&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;database&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;vendor&gt;oracle&lt;/vendor&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;export-name&gt;오라클UID&lt;/export-name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;data-source-class-name&gt;oracle.jdbc.pool.OracleConnectionPoolDataSource&lt;/data-source-class-name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;data-source-type&gt;DataSource&lt;/data-source-type&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;database-name&gt;디비명&lt;/database-name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;data-source-name&gt;oracle.jdbc.pool.OracleConnectionPoolDataSource&lt;/data-source-name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;network-protocol&gt;tcp&lt;/network-protocol&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;user&gt;아이피&lt;/user&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;password&gt;패스워드&lt;/password&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;port-number&gt;1521&lt;/port-number&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;server-name&gt;아이피&nbsp;혹은&nbsp;127.0.0.1&lt;/server-name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;driver-type&gt;thin&lt;/driver-type&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;connection-pool&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;pooling&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;max&gt;20&lt;/max&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;step&gt;1&lt;/step&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;period&gt;500000&lt;/period&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/pooling&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/connection-pool&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/database&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/data-source&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/resource&gt; <br>&lt;/jeus-system&gt; <br><br>&nbsp; <br><br>&nbsp; <br><br>&lt;&lt;&lt;&nbsp;WEBMain.xml&nbsp;(컨테이너&nbsp;1)&nbsp;&gt;&gt;&gt; <br><br>&nbsp; <br><br>&lt;?xml&nbsp;version="1.0"?&gt; <br>&lt;!DOCTYPE&nbsp;web-container&nbsp;PUBLIC&nbsp;"-//Tmax&nbsp;Soft.,&nbsp;Inc.//DTD&nbsp;WEB&nbsp;Main&nbsp;Config&nbsp;4.0//EN" <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"http://www.tmaxsoft.com/jeus/dtd/4.0/web-main-config.dtd"&gt; <br>&lt;web-container&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;context-group&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;group-name&gt;Center&lt;/group-name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;group-docbase&gt;webapps&lt;/group-docbase&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-home&gt;c:\&lt;/servlet-home&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;context&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;context-name&gt;Center&lt;/context-name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;context-path&gt;/&lt;/context-path&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/context&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;session-config&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;shared&gt;true&lt;/shared&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;timeout&gt;20&lt;/timeout&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/session-config&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;webserver-connection&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;webtob-listener&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;listener-id&gt;Center&lt;/listener-id&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;port&gt;9999&lt;/port&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;output-buffer-size&gt;0&lt;/output-buffer-size&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;webtob-address&gt;127.0.0.1&lt;/webtob-address&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;thread-pool&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;min&gt;30&lt;/min&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;max&gt;30&lt;/max&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/thread-pool&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/webtob-listener&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/webserver-connection&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;logging&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;error-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;target&gt;stdout&lt;/target&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;buffer-size&gt;0&lt;/buffer-size&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;level&gt;information&lt;/level&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/error-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;user-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;buffer-size&gt;0&lt;/buffer-size&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/user-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;access-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;buffer-size&gt;0&lt;/buffer-size&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;valid-day&gt;1&lt;/valid-day&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;log-format&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;time-format&gt;default&lt;/time-format&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/log-format&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/access-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logging&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/context-group&gt; <br>&lt;/web-container&gt; <br><br>&nbsp; <br><br>&nbsp; <br><br>&lt;&lt;&lt;&nbsp;jeus-web-dd_Center.xml&nbsp;&gt;&gt;&gt; <br><br>&nbsp; <br><br>&lt;?xml&nbsp;version="1.0"?&gt; <br>&lt;!DOCTYPE&nbsp;jeus-web-dd&nbsp;PUBLIC&nbsp;"-//Tmax&nbsp;Soft.,&nbsp;Inc.//DTD&nbsp;JEUS&nbsp;WEB&nbsp;Deployment&nbsp;Info&nbsp;4.0//EN" <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"http://www.tmaxsoft.com/jeus/dtd/4.0/jeus-web-dd.dtd"&gt; <br>&lt;jeus-web-dd&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;context&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;context-name&gt;center&lt;/context-name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;docbase&gt;center&lt;/docbase&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;auto-reload&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;enable-reload&gt;true&lt;/enable-reload&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;check-on-demand&gt;true&lt;/check-on-demand&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/auto-reload&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/context&gt; <br>&lt;/jeus-web-dd&gt; <br><br>&nbsp; <br><br>&nbsp; <br><br>&nbsp; <br><br>&lt;&lt;&lt;&nbsp;WEBMain.xml&nbsp;(컨테이너&nbsp;2)&nbsp;&gt;&gt;&gt; <br><br>&nbsp; <br><br>&lt;?xml&nbsp;version="1.0"?&gt; <br>&lt;!DOCTYPE&nbsp;web-container&nbsp;PUBLIC&nbsp;"-//Tmax&nbsp;Soft.,&nbsp;Inc.//DTD&nbsp;WEB&nbsp;Main&nbsp;Config&nbsp;4.0//EN" <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"http://www.tmaxsoft.com/jeus/dtd/4.0/web-main-config.dtd"&gt; <br>&lt;web-container&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;context-group&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;group-name&gt;Admin&lt;/group-name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;group-docbase&gt;webapps&lt;/group-docbase&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-home&gt;c:\&lt;/servlet-home&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;context&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;context-name&gt;Admin&lt;/context-name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;context-path&gt;/&lt;/context-path&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/context&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;session-config&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;shared&gt;true&lt;/shared&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;timeout&gt;20&lt;/timeout&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/session-config&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;webserver-connection&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;webtob-listener&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;listener-id&gt;Center&lt;/listener-id&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;port&gt;9999&lt;/port&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;output-buffer-size&gt;0&lt;/output-buffer-size&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;webtob-address&gt;127.0.0.1&lt;/webtob-address&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;thread-pool&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;min&gt;30&lt;/min&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;max&gt;30&lt;/max&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/thread-pool&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/webtob-listener&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/webserver-connection&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;logging&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;error-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;target&gt;stdout&lt;/target&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;buffer-size&gt;0&lt;/buffer-size&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;level&gt;information&lt;/level&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/error-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;user-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;buffer-size&gt;0&lt;/buffer-size&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/user-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;access-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;buffer-size&gt;0&lt;/buffer-size&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;valid-day&gt;1&lt;/valid-day&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;log-format&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;time-format&gt;default&lt;/time-format&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/log-format&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/access-log&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/logging&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/context-group&gt; <br>&lt;/web-container&gt; <br><br><br>&nbsp; <br><br>&nbsp; <br><br>&lt;&lt;&lt;&nbsp;jeus-web-dd_Admin.xml&nbsp;&gt;&gt;&gt; <br><br>&nbsp; <br><br>&lt;?xml&nbsp;version="1.0"?&gt; <br>&lt;!DOCTYPE&nbsp;jeus-web-dd&nbsp;PUBLIC&nbsp;"-//Tmax&nbsp;Soft.,&nbsp;Inc.//DTD&nbsp;JEUS&nbsp;WEB&nbsp;Deployment&nbsp;Info&nbsp;4.0//EN" <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"http://www.tmaxsoft.com/jeus/dtd/4.0/jeus-web-dd.dtd"&gt; <br>&lt;jeus-web-dd&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;context&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;context-name&gt;admin&lt;/context-name&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;docbase&gt;admin&lt;/docbase&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;auto-reload&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;enable-reload&gt;true&lt;/enable-reload&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;check-on-demand&gt;true&lt;/check-on-demand&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/auto-reload&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/context&gt; <br>&lt;/jeus-web-dd&gt; <br><br><br>-------------------------------------------------------------------------------------- <br><br>&nbsp; <br><br>&nbsp; <br><br>이&nbsp;문서는&nbsp;실무에서&nbsp;자주&nbsp;사용되는&nbsp;웹/웹어플서버인&nbsp;JEUS/WEBTOB를&nbsp;접하면서&nbsp;생기게된 <br><br>설정문제와&nbsp;기타&nbsp;문제들을&nbsp;정리해볼&nbsp;목적으로&nbsp;만들어&nbsp;졌습니다.&nbsp;오류사항이&nbsp;있으면&nbsp;메일을&nbsp;보내주세요. <br><br>기타&nbsp;문의는&nbsp;http://www.tmax.co.kr&nbsp;개발자포럼을&nbsp;이용하세요. <br><br>&nbsp; <br><br>-&nbsp;작성자&nbsp;:&nbsp;realchoky&nbsp;(realchoky@naver.com) <br><br>-&nbsp;최초작성일&nbsp;:&nbsp;2004.&nbsp;9.&nbsp;13 <br><br>-&nbsp;최종수정일&nbsp;:&nbsp;2005.&nbsp;5.&nbsp;31&nbsp; <div class="autosourcing-stub"><p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: 12px; PADDING-BOTTOM: 0px; MARGIN: 11px 0px 7px; PADDING-TOP: 0px; FONT-STYLE: normal; FONT-FAMILY: Dotum"><strong style="PADDING-RIGHT: 7px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">[출처]</strong> <a href="http://blog.naver.com/ohlucky6/150014049409" target="_blank">[본문스크랩] [펌]JEUS&amp;WEBTOB 가이드</a><span style="PADDING-RIGHT: 7px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">|</span><strong style="PADDING-RIGHT: 7px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">작성자</strong> <a href="http://blog.naver.com/ohlucky6" target="_blank">민주가인</a></p></div>			 ]]> 
		</description>
		<category>기타</category>

		<comments>http://webgosu.egloos.com/9822269#comments</comments>
		<pubDate>Thu, 11 Jun 2009 14:46:23 GMT</pubDate>
		<dc:creator>webgosu</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Logging설정 for JEUS5 ]]> </title>
		<link>http://webgosu.egloos.com/9822251</link>
		<guid>http://webgosu.egloos.com/9822251</guid>
		<description>
			<![CDATA[ 
  <p class="KM-7"><span style="FONT-FAMILY: 돋움">소개</span></p><p class="KM-1"><span style="FONT-FAMILY: 굴림">이</span> <span style="FONT-FAMILY: 굴림">문서는</span> <span>JEUS 5</span><span style="FONT-FAMILY: 굴림">의</span> <span style="FONT-FAMILY: 굴림">웹</span> <span style="FONT-FAMILY: 굴림">관리자를</span> <span style="FONT-FAMILY: 굴림">사용한</span> <span>logging</span> <span style="FONT-FAMILY: 굴림">설정</span> <span style="FONT-FAMILY: 굴림">방법</span> <span style="FONT-FAMILY: 굴림">및</span> <span>customization</span> <span style="FONT-FAMILY: 굴림">방법</span><span>, log4j</span> <span style="FONT-FAMILY: 굴림">사용법</span> <span style="FONT-FAMILY: 굴림">등을</span> <span style="FONT-FAMILY: 굴림">설명한다</span><span>.</span></p><p class="KM-1"><strong><span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: 돋움">기본</span></strong><strong><span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: Arial">logger</span></strong> <strong><span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: 돋움">파일</span></strong></p><p class="KM-1"><span style="FONT-FAMILY: 굴림">최초</span> <span>JEUS</span> <span style="FONT-FAMILY: 굴림">설치</span> <span style="FONT-FAMILY: 굴림">시</span><span>, JEUS log</span><span style="FONT-FAMILY: 굴림">는</span> <span>default</span><span style="FONT-FAMILY: 굴림">로</span> <span>console handler</span><span style="FONT-FAMILY: 굴림">를</span> <span style="FONT-FAMILY: 굴림">사용하기</span> <span style="FONT-FAMILY: 굴림">때문에</span> <span>JEUS manager</span><span style="FONT-FAMILY: 굴림">와</span> <span style="FONT-FAMILY: 굴림">모든</span> <span>engine container</span><span style="FONT-FAMILY: 굴림">의</span> <span>log message</span><span style="FONT-FAMILY: 굴림">가</span> <span>stdout</span><span style="FONT-FAMILY: 굴림">형태로</span> <span style="FONT-FAMILY: 굴림">출력된다</span><span>.</span> <span style="FONT-FAMILY: 굴림">또한</span> <span>web container</span> <span style="FONT-FAMILY: 굴림">의</span> <span>access log</span><span style="FONT-FAMILY: 굴림">가</span> <span>$JEUS_HOME/logs/&lt;</span><span style="FONT-FAMILY: 굴림">노드명</span><span>&gt;/&lt;</span><span style="FONT-FAMILY: 굴림">노드명</span><span>&gt;_&lt;</span><span style="FONT-FAMILY: 굴림">컨테이너명</span><span>&gt;/servlet/accesslog/access.log</span> <span style="FONT-FAMILY: 굴림">에</span> <span style="FONT-FAMILY: 굴림">출력</span> <span style="FONT-FAMILY: 굴림">된다</span><span>.</span></p><p class="KM-1"><strong><span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: 돋움">웹</span></strong><strong><span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: 돋움">관리자</span></strong><strong><span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: 돋움">접속</span></strong></p><p class="KM-1"><span style="FONT-FAMILY: 굴림">웹</span> <span style="FONT-FAMILY: 굴림">관리자에</span> <span style="FONT-FAMILY: 굴림">접속하는</span> <span style="FONT-FAMILY: 굴림">방법은</span> <span style="FONT-FAMILY: 굴림">다음과</span> <span style="FONT-FAMILY: 굴림">같다</span><span>.</span> <span style="FONT-FAMILY: 굴림">웹</span> <span style="FONT-FAMILY: 굴림">관리자는</span> <span>JEUS_BASEPORT + 8</span> <span style="FONT-FAMILY: 굴림">의</span> <span style="FONT-FAMILY: 굴림">포트를</span> <span style="FONT-FAMILY: 굴림">사용하므로</span> <span>JEUS_BASEPORT</span> <span style="FONT-FAMILY: 굴림">가</span> <span>default</span> <span style="FONT-FAMILY: 굴림">로</span> <span>9736</span><span style="FONT-FAMILY: 굴림">이므로</span> <span style="FONT-FAMILY: 굴림">웹</span> <span style="FONT-FAMILY: 굴림">관리자는</span> <span>9744</span><span style="FONT-FAMILY: 굴림">를</span> <span style="FONT-FAMILY: 굴림">사용하고</span><span>,</span> <span style="FONT-FAMILY: 굴림">해당</span> <span>Port</span><span style="FONT-FAMILY: 굴림">에</span> <span style="FONT-FAMILY: 굴림">대해</span> <span style="FONT-FAMILY: 굴림">방화벽이</span> <span style="FONT-FAMILY: 굴림">열려</span> <span style="FONT-FAMILY: 굴림">있어야</span> <span style="FONT-FAMILY: 굴림">한다</span><span>.</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">http://IPAddress:9744/webadmin/</span></p><p class="KM-1">&nbsp;</p><p class="KM-7" style="MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt"><span style="FONT-FAMILY: 돋움">웹</span> <span style="FONT-FAMILY: 돋움">관리자로</span> <span>log</span> <span style="FONT-FAMILY: 돋움">설정하기</span></p><p class="KM-2"><span>1. JEUS Server log</span> <span style="FONT-FAMILY: 굴림">설정</span></p><p class="KM-2"><span style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; COLOR: rgb(85,85,85); FONT-FAMILY: 굴림">웹</span><span style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; COLOR: rgb(85,85,85); FONT-FAMILY: 굴림">관리자</span><span style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; COLOR: rgb(85,85,85); FONT-FAMILY: 굴림">접속</span><span style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; COLOR: rgb(85,85,85); FONT-FAMILY: 굴림">후</span><span style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; COLOR: rgb(85,85,85); FONT-FAMILY: 굴림">노드명을</span><span style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; COLOR: rgb(85,85,85); FONT-FAMILY: 굴림">선택하면</span><span style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; COLOR: rgb(85,85,85); FONT-FAMILY: 굴림">오른쪽</span><span style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; COLOR: rgb(85,85,85); FONT-FAMILY: 굴림">화면에서</span><span style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; COLOR: rgb(85,85,85); FONT-FAMILY: 굴림">에러</span><span style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; COLOR: rgb(85,85,85); FONT-FAMILY: 굴림">로그</span><span style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; COLOR: rgb(85,85,85); FONT-FAMILY: 굴림">설정</span><span style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; COLOR: rgb(85,85,85); FONT-FAMILY: 굴림">항목을</span><span style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; COLOR: rgb(85,85,85); FONT-FAMILY: 굴림">볼</span><span style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; COLOR: rgb(85,85,85); FONT-FAMILY: 굴림">수</span><span style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; COLOR: rgb(85,85,85); FONT-FAMILY: 굴림">있다</span><span style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; COLOR: rgb(85,85,85)">.</span></p><p class="KM-1"><span></span></p><p class="KM-1"><span style="FONT-FAMILY: 굴림"><br><br><br>로거추가를</span> <span style="FONT-FAMILY: 굴림">선택하면</span> <span>logging level</span> <span style="FONT-FAMILY: 굴림">설정</span> <span style="FONT-FAMILY: 굴림">화면이</span> <span style="FONT-FAMILY: 굴림">나오는데</span><span>, logging level</span> <span style="FONT-FAMILY: 굴림">은</span> <span style="FONT-FAMILY: 굴림">다음과</span> <span style="FONT-FAMILY: 굴림">같다</span><span>.</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">FATAL&lt;NOTICE&lt;INFORMATION&lt;DEBUG&lt;SEVERE&lt;WARNING&lt;INFO&lt;CONFIG&lt;FINE&lt;FINER&lt;FINEST&lt;ALL</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">- default level</span> <span style="FONT-FAMILY: 굴림체">은</span> <span style="FONT-FAMILY: 'Courier New'">INFO</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">-</span> <span style="FONT-FAMILY: 굴림체">개발자는</span><span style="FONT-FAMILY: 굴림체">보통</span> <span style="FONT-FAMILY: 'Courier New'">FINE</span></p><p class="KM-1"><span>logging level</span> <span style="FONT-FAMILY: 굴림">선택</span> <span style="FONT-FAMILY: 굴림">후</span> <span style="FONT-FAMILY: 굴림">확인을</span> <span style="FONT-FAMILY: 굴림">누르면</span> <span style="FONT-FAMILY: 굴림">아래와</span> <span style="FONT-FAMILY: 굴림">같이</span> <span>jeus logger</span><span style="FONT-FAMILY: 굴림">가</span> <span style="FONT-FAMILY: 굴림">추가된</span> <span style="FONT-FAMILY: 굴림">것을</span> <span style="FONT-FAMILY: 굴림">볼</span> <span style="FONT-FAMILY: 굴림">수</span> <span style="FONT-FAMILY: 굴림">있다</span><span>.</span></p><p class="KM-1"><span></span></p><p class="KM-1"><span style="FONT-FAMILY: 굴림"><br><br><br>추가된</span> <span>jeus logger</span><span style="FONT-FAMILY: 굴림">를</span> <span style="FONT-FAMILY: 굴림">선택하면</span> <span style="FONT-FAMILY: 굴림">로그핸들러</span> <span style="FONT-FAMILY: 굴림">생성화면을</span> <span style="FONT-FAMILY: 굴림">볼</span> <span style="FONT-FAMILY: 굴림">수</span> <span style="FONT-FAMILY: 굴림">있는데</span><span>,</span> <span style="FONT-FAMILY: 굴림">핸들러의</span> <span style="FONT-FAMILY: 굴림">종류는</span> <span style="FONT-FAMILY: 굴림">다음과</span> <span style="FONT-FAMILY: 굴림">같다</span><span>.</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">console-handler, file-handler, smtp-handler, socket-handler, user-handler</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">- default</span> <span style="FONT-FAMILY: 굴림체">는</span> console-handler</p><p class="KM-1"><span style="FONT-FAMILY: 굴림">사용하고자</span> <span style="FONT-FAMILY: 굴림">하는</span> <span style="FONT-FAMILY: 굴림">핸들러를</span> <span style="FONT-FAMILY: 굴림">선택하면</span> <span style="FONT-FAMILY: 굴림">아래와</span> <span style="FONT-FAMILY: 굴림">같이</span> <span style="FONT-FAMILY: 굴림">새</span> <span style="FONT-FAMILY: 굴림">로그</span> <span style="FONT-FAMILY: 굴림">핸들러</span> <span style="FONT-FAMILY: 굴림">생성</span> <span style="FONT-FAMILY: 굴림">화면이</span> <span style="FONT-FAMILY: 굴림">나타난다</span><span>.</span> <span style="FONT-FAMILY: 굴림">각</span> <span style="FONT-FAMILY: 굴림">항목</span> <span style="FONT-FAMILY: 굴림">확인</span> <span style="FONT-FAMILY: 굴림">후</span> <span style="FONT-FAMILY: 굴림">생성버튼을</span> <span style="FONT-FAMILY: 굴림">누르면</span> <span>JEUS Server log</span> <span style="FONT-FAMILY: 굴림">가</span> <span style="FONT-FAMILY: 굴림">생성된다</span><span>.</span></p><p class="KM-1"><span></span></p><p class="KM-1"><span style="FONT-FAMILY: 굴림"><br><br><br><br>웹관리자에서</span> <span style="FONT-FAMILY: 굴림">생성한</span> <span>JEUS Server log</span> <span style="FONT-FAMILY: 굴림">는</span> <span>$JEUS_HOME/config/&lt;</span><span style="FONT-FAMILY: 굴림">노드명</span><span>&gt;/JEUSMain.xml</span> <span style="FONT-FAMILY: 굴림">에</span> <span>xml</span> <span style="FONT-FAMILY: 굴림">형태로</span> <span style="FONT-FAMILY: 굴림">추가된다</span><span>.</span></p><p class="KM-xml" style="TEXT-ALIGN: center"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;&lt;JEUSMain.xml&gt;&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&lt;jeus-system xmlns="http://www.tmaxsoft.com/xml/ns/jeus"&gt;</span></p><p class="KM-xml" style="TEXT-INDENT: 16pt"><span style="FONT-FAMILY: 'Courier New'">&lt;node&gt;</span></p><p class="KM-xml" style="TEXT-INDENT: 16pt"><span style="FONT-FAMILY: 'Courier New'">...</span></p><p class="KM-xml" style="TEXT-INDENT: 32pt"><span style="COLOR: red; FONT-FAMILY: 'Courier New'">&lt;system-logging&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;level&gt;INFO&lt;/level&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;handler&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;file-handler&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;handler1&lt;/name&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;level&gt;FINEST&lt;/level&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;valid-day&gt;1&lt;/valid-day&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;/file-handler&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;/handler&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;/system-logging&gt;</span></p><p class="KM-1"><span style="FONT-FAMILY: 굴림">위와</span> <span style="FONT-FAMILY: 굴림">같이</span> <span>file-handler, 1</span><span style="FONT-FAMILY: 굴림">일</span> <span style="FONT-FAMILY: 굴림">단위로</span> <span style="FONT-FAMILY: 굴림">생성했을</span> <span style="FONT-FAMILY: 굴림">경우</span> <span>log</span> <span style="FONT-FAMILY: 굴림">는</span><span>, $JEUS_HOME/logs/&lt;</span><span style="FONT-FAMILY: 굴림">노드명</span><span>&gt;</span> <span style="FONT-FAMILY: 굴림">에</span> <span>JeusServer_&lt;</span><span style="FONT-FAMILY: 굴림">날짜</span><span>&gt;.log</span> <span style="FONT-FAMILY: 굴림">형식으로</span> <span style="FONT-FAMILY: 굴림">남게</span> <span style="FONT-FAMILY: 굴림">된다</span><span>. &lt;system-logging&gt;&lt;level&gt;</span><span style="FONT-FAMILY: 굴림">의</span> <span>log level</span><span style="FONT-FAMILY: 굴림">은</span> <span>&lt;handler&gt;</span><span style="FONT-FAMILY: 굴림">에서</span> <span style="FONT-FAMILY: 굴림">설정한</span> <span>&lt;level&gt;</span> <span style="FONT-FAMILY: 굴림">보다</span> <span style="FONT-FAMILY: 굴림">우선한다</span><span>. &nbsp;log</span> <span style="FONT-FAMILY: 굴림">를</span> <span style="FONT-FAMILY: 굴림">실시간으로</span> <span style="FONT-FAMILY: 굴림">확인하기</span> <span style="FONT-FAMILY: 굴림">위해서</span> <span>tail</span> <span style="FONT-FAMILY: 굴림">명령어를</span> <span style="FONT-FAMILY: 굴림">사용하거나</span><span>,</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">test:/home/main/jeus5/logs/test&gt;</span> <span style="COLOR: red; FONT-FAMILY: 'Courier New'">tail -f JeusServer_&lt;</span><span style="COLOR: red; FONT-FAMILY: 굴림체">날짜</span><span style="COLOR: red; FONT-FAMILY: 'Courier New'">&gt;.log</span></p><p class="KM-1"><span style="FONT-FAMILY: 굴림">또는</span> <span style="FONT-FAMILY: 굴림">사용자</span> <span>profile</span> <span style="FONT-FAMILY: 굴림">에</span> <span style="FONT-FAMILY: 굴림">아래와</span> <span style="FONT-FAMILY: 굴림">같이</span> <span>alias</span> <span style="FONT-FAMILY: 굴림">를</span> <span style="FONT-FAMILY: 굴림">설정하는</span> <span style="FONT-FAMILY: 굴림">방법이</span> <span style="FONT-FAMILY: 굴림">있다</span><span>.</span></p><p class="KM-xml"><span style="COLOR: red; FONT-FAMILY: 'Courier New'">alias jlog='tail -f ${JEUS_HOME}/logs/`hostname`/JeusServer_`date +%Y%m%d`.log'</span></p><p class="KM-1">&nbsp;</p><p class="KM-2"><span>2. Container log</span> <span style="FONT-FAMILY: 굴림">설정</span></p><p class="KM-1"><span>Container log</span> <span style="FONT-FAMILY: 굴림">는</span> <span>Container</span> <span style="FONT-FAMILY: 굴림">마다</span> <span style="FONT-FAMILY: 굴림">별도로</span> <span>log</span><span style="FONT-FAMILY: 굴림">를</span> <span style="FONT-FAMILY: 굴림">관리</span> <span style="FONT-FAMILY: 굴림">할</span> <span style="FONT-FAMILY: 굴림">수</span> <span style="FONT-FAMILY: 굴림">있다는</span> <span style="FONT-FAMILY: 굴림">장점이</span> <span style="FONT-FAMILY: 굴림">있다</span><span>.</span></p><p class="KM-1"><span>Container log</span><span style="FONT-FAMILY: 굴림">설정은</span> <span style="FONT-FAMILY: 굴림">위와</span> <span style="FONT-FAMILY: 굴림">마찬가지로</span> <span style="FONT-FAMILY: 굴림">웹</span> <span style="FONT-FAMILY: 굴림">관리자를</span> <span style="FONT-FAMILY: 굴림">사용한다</span><span>.</span> <span style="FONT-FAMILY: 굴림">웹</span> <span style="FONT-FAMILY: 굴림">관리자에</span> <span style="FONT-FAMILY: 굴림">접속</span> <span style="FONT-FAMILY: 굴림">후</span> <span style="FONT-FAMILY: 굴림">컨테이너명을</span> <span style="FONT-FAMILY: 굴림">선택하면</span> <span style="FONT-FAMILY: 굴림">오른쪽</span> <span style="FONT-FAMILY: 굴림">화면에서</span> <span style="FONT-FAMILY: 굴림">에러</span> <span style="FONT-FAMILY: 굴림">로그</span> <span style="FONT-FAMILY: 굴림">설정</span> <span style="FONT-FAMILY: 굴림">항목을</span> <span style="FONT-FAMILY: 굴림">볼</span> <span style="FONT-FAMILY: 굴림">수</span> <span style="FONT-FAMILY: 굴림">있다</span><span>.</span></p><p class="KM-1"><span>logging</span> <span style="FONT-FAMILY: 굴림">설정은</span> <span>JEUS Server log</span> <span style="FONT-FAMILY: 굴림">설정을</span> <span style="FONT-FAMILY: 굴림">참고한다</span><span>.</span></p><p class="KM-1"><span></span></p><p class="KM-1"><span style="FONT-FAMILY: 굴림"><br><br><br><br><br>웹관리자에서</span> <span style="FONT-FAMILY: 굴림">생성한</span> <span>Container log</span><span style="FONT-FAMILY: 굴림">는</span> <span>$JEUS_HOME/config/&lt;</span><span style="FONT-FAMILY: 굴림">노드명</span><span>&gt;/JEUSMain.xml</span> <span style="FONT-FAMILY: 굴림">에</span> <span>xml</span> <span style="FONT-FAMILY: 굴림">형태로</span> <span style="FONT-FAMILY: 굴림">추가된다</span><span>.</span></p><p class="KM-xml" style="TEXT-ALIGN: center"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;&lt;JEUSMain.xml&gt;&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&lt;jeus-system xmlns="http://www.tmaxsoft.com/xml/ns/jeus"&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp; &lt;node&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;test&lt;/name&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;engine-container&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;container1&lt;/name&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...</span></p><p class="KM-xml"><span style="COLOR: red; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;system-logging&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;level&gt;INFO&lt;/level&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;handler&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;file-handler&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;handler1&lt;/name&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;level&gt;FINE&lt;/level&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;valid-day&gt;1&lt;/valid-day&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/file-handler&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/handler&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/system-logging&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/engine-container&gt;</span></p><p class="KM-1"><span>Container log</span> <span style="FONT-FAMILY: 굴림">를</span> <span>file-handler, 1</span><span style="FONT-FAMILY: 굴림">일</span> <span style="FONT-FAMILY: 굴림">단위로</span> <span style="FONT-FAMILY: 굴림">생성했을</span> <span style="FONT-FAMILY: 굴림">경우</span> <span>log</span> <span style="FONT-FAMILY: 굴림">는</span><span>, $JEUS_HOME/logs/&lt;</span><span style="FONT-FAMILY: 굴림">노드명</span><span>&gt;/&lt;</span><span style="FONT-FAMILY: 굴림">노드명</span><span>&gt;_&lt;</span><span style="FONT-FAMILY: 굴림">컨테이너명</span><span>&gt;</span> <span style="FONT-FAMILY: 굴림">에</span> <span>&lt;</span><span style="FONT-FAMILY: 굴림">노드명</span><span>&gt;_&lt;</span><span style="FONT-FAMILY: 굴림">컨테이너명</span><span>&gt;_&lt;</span><span style="FONT-FAMILY: 굴림">날짜</span><span>&gt;.log</span> <span style="FONT-FAMILY: 굴림">형식으로</span> <span style="FONT-FAMILY: 굴림">남게</span> <span style="FONT-FAMILY: 굴림">된다</span><span>. &lt;system-logging&gt;&lt;level&gt;</span><span style="FONT-FAMILY: 굴림">의</span> <span>log level</span><span style="FONT-FAMILY: 굴림">은</span> <span>&lt;handler&gt;</span><span style="FONT-FAMILY: 굴림">에서</span> <span style="FONT-FAMILY: 굴림">설정한</span> <span>&lt;level&gt;</span> <span style="FONT-FAMILY: 굴림">보다</span> <span style="FONT-FAMILY: 굴림">우선한다</span><span>. log</span> <span style="FONT-FAMILY: 굴림">를</span> <span style="FONT-FAMILY: 굴림">실시간으로</span> <span style="FONT-FAMILY: 굴림">확인하기</span> <span style="FONT-FAMILY: 굴림">위해</span> <span>tail</span> <span style="FONT-FAMILY: 굴림">명령어를</span> <span style="FONT-FAMILY: 굴림">사용하거나</span> <span style="FONT-FAMILY: 굴림">사용자</span> <span>profile</span> <span style="FONT-FAMILY: 굴림">에</span> <span style="FONT-FAMILY: 굴림">아래와</span> <span style="FONT-FAMILY: 굴림">같이</span> <span>alias</span> <span style="FONT-FAMILY: 굴림">를</span> <span style="FONT-FAMILY: 굴림">설정하는</span> <span style="FONT-FAMILY: 굴림">방법이</span> <span style="FONT-FAMILY: 굴림">있다</span><span>.</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">alias clog='tail -f ${JEUS_HOME}/logs/`hostname`/`hostname`_container1/`hostname`_container1_`date +%Y%m%d`.log'</span></p><p class="KM-1"><span>Container log</span><span style="FONT-FAMILY: 굴림">에서</span> <span>ConsoleHandler</span> <span style="FONT-FAMILY: 굴림">를</span> <span style="FONT-FAMILY: 굴림">사용할</span> <span style="FONT-FAMILY: 굴림">경우</span> <span>Console</span><span style="FONT-FAMILY: 굴림">로</span> <span style="FONT-FAMILY: 굴림">외의</span> <span>JEUS Server log</span><span style="FONT-FAMILY: 굴림">에</span> <span style="FONT-FAMILY: 굴림">같이</span> <span style="FONT-FAMILY: 굴림">출력</span> <span style="FONT-FAMILY: 굴림">된다</span><span>.</span></p><p class="KM-1">&nbsp;</p><p class="KM-1"><strong><span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: Arial">JEUS logging</span></strong> <strong><span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: 돋움">패턴</span></strong></p><p class="KM-1"><span>JEUS logging</span> <span style="FONT-FAMILY: 굴림">은</span> <span>JDK1.4</span><span style="FONT-FAMILY: 굴림">에서</span> <span style="FONT-FAMILY: 굴림">포함된</span> <span>java.util.logging</span> <span style="FONT-FAMILY: 굴림">패키지에</span> <span style="FONT-FAMILY: 굴림">있는</span> <span>Logging API</span><span style="FONT-FAMILY: 굴림">를</span> <span style="FONT-FAMILY: 굴림">따른다</span><span>. JEUS</span><span style="FONT-FAMILY: 굴림">의</span> <span>logging</span> <span style="FONT-FAMILY: 굴림">환경은</span> <span>JEUS_HOME/bin/logging.properties</span> <span style="FONT-FAMILY: 굴림">에</span> <span style="FONT-FAMILY: 굴림">설정되어</span> <span style="FONT-FAMILY: 굴림">있다</span><span>. logging.propertis</span> <span style="FONT-FAMILY: 굴림">를</span> <span style="FONT-FAMILY: 굴림">보면</span> <span>JEUS</span><span style="FONT-FAMILY: 굴림">는</span> <span>default</span> <span style="FONT-FAMILY: 굴림">로</span> <span>ConsoleHandler</span> <span style="FONT-FAMILY: 굴림">를</span> <span style="FONT-FAMILY: 굴림">사용하고</span><span>, logging level</span> <span style="FONT-FAMILY: 굴림">은</span> <span>INFO</span> <span style="FONT-FAMILY: 굴림">임을</span> <span style="FONT-FAMILY: 굴림">알</span> <span style="FONT-FAMILY: 굴림">수</span> <span style="FONT-FAMILY: 굴림">있다</span><span>. handler</span> <span style="FONT-FAMILY: 굴림">를</span> <span style="FONT-FAMILY: 굴림">추가할</span> <span style="FONT-FAMILY: 굴림">경우는</span> <span style="FONT-FAMILY: 굴림">다음과</span> <span style="FONT-FAMILY: 굴림">같이</span> <span style="FONT-FAMILY: 굴림">콤마로</span> <span style="FONT-FAMILY: 굴림">분리한다</span><span>.</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler</span></p><p class="KM-1"><a><u><span style="COLOR: #568942"><span style="FONT-FAMILY: 굴림">또한</span> <span>console</span></span></u></a> <span style="FONT-FAMILY: 굴림">에</span> <span style="FONT-FAMILY: 굴림">출력되는</span> <span>log level</span> <span style="FONT-FAMILY: 굴림">은</span> <span style="FONT-FAMILY: 굴림">아래의</span> <span style="FONT-FAMILY: 굴림">항목에서</span> <span style="FONT-FAMILY: 굴림">지정할</span> <span style="FONT-FAMILY: 굴림">수</span> <span style="FONT-FAMILY: 굴림">있다</span><span>.</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">java.util.logging.ConsoleHandler.level = FINE</span></p><p class="KM-1"><span>FileHandler</span> <span style="FONT-FAMILY: 굴림">를</span> <span style="FONT-FAMILY: 굴림">사용할</span> <span style="FONT-FAMILY: 굴림">경우</span><span>, log</span><span style="FONT-FAMILY: 굴림">는</span> <span style="FONT-FAMILY: 굴림">기본적으로</span> <span style="FONT-FAMILY: 굴림">사용자</span> <span style="FONT-FAMILY: 굴림">홈</span> <span style="FONT-FAMILY: 굴림">디렉토리에</span> <span style="FONT-FAMILY: 굴림">출력되지만</span> <span style="FONT-FAMILY: 굴림">경로나</span> <span style="FONT-FAMILY: 굴림">출력</span> <span style="FONT-FAMILY: 굴림">포맷</span> <span>(XMLFormatter or SimpleFormatter)</span><span style="FONT-FAMILY: 굴림">등을</span> <span style="FONT-FAMILY: 굴림">지정할</span> <span style="FONT-FAMILY: 굴림">수</span> <span style="FONT-FAMILY: 굴림">있다</span><span>.</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">java.util.logging.FileHandler.pattern =</span> <span style="COLOR: red; FONT-FAMILY: 'Courier New'">/home/main/MyLog.log</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">java.util.logging.FileHandler.formatter =</span> <span style="COLOR: red; FONT-FAMILY: 'Courier New'">java.util.logging.XMLFormatter</span></p><p class="KM-1"><span>ConsoleHandler</span><span style="FONT-FAMILY: 굴림">도</span> <span style="FONT-FAMILY: 굴림">마찬가지로</span> <span>log level</span> <span style="FONT-FAMILY: 굴림">과</span> <span style="FONT-FAMILY: 굴림">출력</span> <span style="FONT-FAMILY: 굴림">포맷을</span> <span style="FONT-FAMILY: 굴림">지정할</span> <span style="FONT-FAMILY: 굴림">수</span> <span style="FONT-FAMILY: 굴림">있고</span><span>,</span> <span style="FONT-FAMILY: 굴림">특정</span> <span>class</span> <span style="FONT-FAMILY: 굴림">에서의</span> <span>log level</span> <span style="FONT-FAMILY: 굴림">설정도</span> <span style="FONT-FAMILY: 굴림">가능하다</span><span>.</span></p><p class="KM-1"><span style="FONT-FAMILY: 굴림">아래는</span> <span>logging.properties</span> <span style="FONT-FAMILY: 굴림">에</span> <span style="FONT-FAMILY: 굴림">설정한</span> <span style="FONT-FAMILY: 굴림">각</span> <span style="FONT-FAMILY: 굴림">항목을</span> <span style="FONT-FAMILY: 굴림">테스트</span> <span style="FONT-FAMILY: 굴림">할</span> <span style="FONT-FAMILY: 굴림">수</span> <span style="FONT-FAMILY: 굴림">있는</span> <span style="FONT-FAMILY: 굴림">예이다</span><span>.</span></p><p class="KM-xml" style="TEXT-ALIGN: center"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;&lt;shbean.jsp&gt;&gt;</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">&lt;%</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; com.SHBean a = new com.SHBean();</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">%&gt;</span></p><p class="KM-1">&nbsp;</p><p class="KM-xml" style="TEXT-ALIGN: center"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;&lt;SHBean.java&gt;&gt;</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">package com;</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">import java.util.logging.*;</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">public class SHBean{</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Logger logger = null;</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public SHBean(){</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger = Logger.getLogger(getClass().getName());</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.setLevel(Level.FINEST);</span></p><p class="KM-xml">&nbsp;</p><p class="KM-xml" style="TEXT-INDENT: 64pt"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">logger.info("info test");</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.severe("severe test");</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.fine("fine test");</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.finest("finest test");</span></p><p class="KM-xml">&nbsp;</p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">}</span></p><p class="KM-1"><span>logging.properties</span> <span style="FONT-FAMILY: 굴림">를</span> <span style="FONT-FAMILY: 굴림">아래와</span> <span style="FONT-FAMILY: 굴림">같이</span> <span style="FONT-FAMILY: 굴림">설정할</span> <span style="FONT-FAMILY: 굴림">경우</span><span>,</span></p><p class="KM-xml" style="TEXT-ALIGN: center"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;&lt;logging.properties&gt;&gt;</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">java.util.logging.FileHandler.pattern = /home/star/MyLog.log</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">java.util.logging.FileHandler.limit = 50000</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">java.util.logging.FileHandler.count = 1</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">java.util.logging.ConsoleHandler.level = FINE</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">...</span></p><p class="KM-1"><span style="FONT-FAMILY: 굴림">아래와</span> <span style="FONT-FAMILY: 굴림">같은</span> <span style="FONT-FAMILY: 굴림">결과를</span> <span style="FONT-FAMILY: 굴림">얻을</span> <span style="FONT-FAMILY: 굴림">수</span> <span style="FONT-FAMILY: 굴림">있다</span><span>.</span></p><p class="KM-xml" style="TEXT-ALIGN: center"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;&lt;JeusServer_20080404.log&gt;&gt;</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">...</span></p><p class="KM-xml" style="TEXT-ALIGN: center"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;&lt;JeusServer_20080404.log&gt;&gt;</span></p><p class="KM-xml">&nbsp;</p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">2008. 4. 4</span><span style="COLOR: windowtext; FONT-FAMILY: 굴림체">오후</span> <span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">6:11:16</span> <span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">com.SHBean &lt;init&gt;</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 굴림체">정보</span><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">: info test</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">2008. 4. 4</span><span style="COLOR: windowtext; FONT-FAMILY: 굴림체">오후</span> <span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">6:11:16</span> <span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">com.SHBean &lt;init&gt;</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 굴림체">심각</span><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">: severe test</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">2008. 4. 4</span><span style="COLOR: windowtext; FONT-FAMILY: 굴림체">오후</span> <span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">6:11:16</span> <span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">com.SHBean &lt;init&gt;</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 굴림체">자세히</span><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">: fine test</span></p><p class="KM-1"><strong><span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: Arial"><br>access log</span></strong> <strong><span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: 돋움">비활성화</span></strong></p><p class="KM-1"><span style="FONT-FAMILY: 굴림">별도의</span> <span style="FONT-FAMILY: 굴림">설정이</span> <span style="FONT-FAMILY: 굴림">없을</span> <span style="FONT-FAMILY: 굴림">경우</span> <span>Web Container</span><span style="FONT-FAMILY: 굴림">당</span> <span>1</span><span style="FONT-FAMILY: 굴림">개의</span> <span>access-log</span> <span style="FONT-FAMILY: 굴림">가</span> <span style="FONT-FAMILY: 굴림">생성된다</span><span>. access log</span> <span style="FONT-FAMILY: 굴림">에는</span> <span>Context Group</span><span style="FONT-FAMILY: 굴림">에</span> <span style="FONT-FAMILY: 굴림">대한</span> <span style="FONT-FAMILY: 굴림">모든</span> <span style="FONT-FAMILY: 굴림">요청과</span> <span style="FONT-FAMILY: 굴림">사용자</span> <span style="FONT-FAMILY: 굴림">접근에</span> <span style="FONT-FAMILY: 굴림">관한</span> <span>log</span><span style="FONT-FAMILY: 굴림">가</span> <span style="FONT-FAMILY: 굴림">남는다</span><span>. access log</span><span style="FONT-FAMILY: 굴림">의</span> <span style="FONT-FAMILY: 굴림">기본</span> <span style="FONT-FAMILY: 굴림">위치는</span><span>, $JEUS_HOME/logs/&lt;</span><span style="FONT-FAMILY: 굴림">노드명</span><span>&gt;/&lt;</span><span style="FONT-FAMILY: 굴림">노드명</span><span>&gt;_&lt;</span><span style="FONT-FAMILY: 굴림">컨테이너명</span><span>&gt;/servlet/accesslog/&lt;GroupName&gt;/access.log</span><span style="FONT-FAMILY: 굴림">가</span> <span style="FONT-FAMILY: 굴림">기본</span> <span>log file</span><span style="FONT-FAMILY: 굴림">이다</span><span>. &nbsp;</span></p><p class="KM-1"><span style="FONT-FAMILY: 굴림">그런데</span> <span style="FONT-FAMILY: 굴림">접근이</span> <span style="FONT-FAMILY: 굴림">빈번한</span> <span style="FONT-FAMILY: 굴림">사이트에서는</span> <span>access log</span><span style="FONT-FAMILY: 굴림">의</span> <span style="FONT-FAMILY: 굴림">양이</span> <span style="FONT-FAMILY: 굴림">클</span> <span style="FONT-FAMILY: 굴림">수가</span> <span style="FONT-FAMILY: 굴림">있으므로</span> <span>access logging</span> <span style="FONT-FAMILY: 굴림">기능을</span> <span style="FONT-FAMILY: 굴림">사용하지</span> <span style="FONT-FAMILY: 굴림">않는</span> <span style="FONT-FAMILY: 굴림">것이</span> <span style="FONT-FAMILY: 굴림">좋다</span><span>. access log</span><span style="FONT-FAMILY: 굴림">는</span> <span>default</span> <span style="FONT-FAMILY: 굴림">가</span> <span>true</span> <span style="FONT-FAMILY: 굴림">이기</span> <span style="FONT-FAMILY: 굴림">때문에</span><span>, $JEUS_HOME/config/&lt;</span><span style="FONT-FAMILY: 굴림">노드명</span><span>&gt;/&lt;</span><span style="FONT-FAMILY: 굴림">노드명</span><span>&gt;_servlet_&lt;</span><span style="FONT-FAMILY: 굴림">엔진명</span><span>&gt;/WEBMain.xml</span> <span style="FONT-FAMILY: 굴림">에서</span> <span style="FONT-FAMILY: 굴림">설정을</span> <span style="FONT-FAMILY: 굴림">변경</span> <span style="FONT-FAMILY: 굴림">할</span> <span style="FONT-FAMILY: 굴림">수</span> <span style="FONT-FAMILY: 굴림">있다</span><span>.</span> <span style="FONT-FAMILY: 굴림">아래와</span> <span style="FONT-FAMILY: 굴림">같이</span> <span>&lt;logging&gt;&lt;access-log&gt;&lt;enable&gt;</span><span style="FONT-FAMILY: 굴림">을</span> <span>false</span> <span style="FONT-FAMILY: 굴림">로</span> <span style="FONT-FAMILY: 굴림">하면</span> <span style="FONT-FAMILY: 굴림">된다</span><span>.</span></p><p class="KM-xml" style="TEXT-ALIGN: center"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;&lt;WEBMain.xml&gt;&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&lt;web-container xmlns="http://www.tmaxsoft.com/xml/ns/jeus"&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp; &lt;context-group&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...</span></p><p class="KM-xml" style="TEXT-INDENT: 32pt"><span style="FONT-FAMILY: 'Courier New'">&lt;logging&gt;</span></p><p class="KM-xml" style="TEXT-INDENT: 48pt"><span style="FONT-FAMILY: 'Courier New'">&lt;access-log&gt;</span></p><p class="KM-xml" style="TEXT-INDENT: 64pt"><span style="COLOR: red; FONT-FAMILY: 'Courier New'">&lt;enable&gt;false&lt;/enable&gt;</span></p><p class="KM-xml" style="TEXT-INDENT: 64pt"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">...</span></p><p class="KM-1"><span style="FONT-FAMILY: 굴림">참고해야</span> <span style="FONT-FAMILY: 굴림">할</span> <span style="FONT-FAMILY: 굴림">사항은</span> <span>access log</span> <span style="FONT-FAMILY: 굴림">는</span> <span>&lt;valid-day&gt;</span> <span style="FONT-FAMILY: 굴림">를</span> <span style="FONT-FAMILY: 굴림">명시하지</span> <span style="FONT-FAMILY: 굴림">않으면</span> <span style="FONT-FAMILY: 굴림">하나의</span> <span style="FONT-FAMILY: 굴림">파일에</span> <span style="FONT-FAMILY: 굴림">남기</span> <span style="FONT-FAMILY: 굴림">때문에</span> <span>1</span><span style="FONT-FAMILY: 굴림">일</span> <span style="FONT-FAMILY: 굴림">단위로</span> <span style="FONT-FAMILY: 굴림">출력하기</span> <span style="FONT-FAMILY: 굴림">위해서는</span> <span style="FONT-FAMILY: 굴림">위의</span> <span style="FONT-FAMILY: 굴림">태그를</span> <span style="FONT-FAMILY: 굴림">명시해야</span> <span style="FONT-FAMILY: 굴림">한다</span><span>.</span></p><p class="KM-1">&nbsp;</p><p class="KM-1"><strong><span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: Arial">log</span></strong> <strong><span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: 돋움">파일</span></strong><strong><span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: 돋움">경로</span></strong><strong><span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: 돋움">변경</span></strong></p><p class="KM-2"><span>1. log home</span> <span style="FONT-FAMILY: 굴림">변경</span></p><p class="KM-1"><span>log home</span><span style="FONT-FAMILY: 굴림">디렉토리</span> <span style="FONT-FAMILY: 굴림">위치</span> <span style="FONT-FAMILY: 굴림">변경은</span> <span>$JEUS_HOME/bin/jeus</span> <span style="FONT-FAMILY: 굴림">에서</span> <span>-Djeus.log.home</span> <span style="FONT-FAMILY: 굴림">을</span> <span style="FONT-FAMILY: 굴림">추가하고</span> <span style="FONT-FAMILY: 굴림">원하는</span> <span>log</span> <span style="FONT-FAMILY: 굴림">위치를</span> <span style="FONT-FAMILY: 굴림">명시한다</span><span>.</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">-Djeus.log.home=/home/main/logs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \</span></p><p class="KM-2">&nbsp;</p><p class="KM-2"><span>2. handler</span><span style="FONT-FAMILY: 굴림">가</span> <span style="FONT-FAMILY: 굴림">사용할</span> <span>file name</span><span style="FONT-FAMILY: 굴림">설정</span></p><p class="KM-1"><span>JEUS 4</span> <span style="FONT-FAMILY: 굴림">버전까지는</span> <span style="FONT-FAMILY: 굴림">전체적인</span> <span>log home</span> <span style="FONT-FAMILY: 굴림">경로</span> <span style="FONT-FAMILY: 굴림">변경만</span> <span style="FONT-FAMILY: 굴림">가능하였지만</span><span>, JEUS 5</span><span style="FONT-FAMILY: 굴림">에서는</span> <span style="FONT-FAMILY: 굴림">사용자가</span> <span style="FONT-FAMILY: 굴림">세부적인</span> <span>log</span><span style="FONT-FAMILY: 굴림">에</span> <span style="FONT-FAMILY: 굴림">대한</span> <span style="FONT-FAMILY: 굴림">위치를</span> <span style="FONT-FAMILY: 굴림">정할</span> <span style="FONT-FAMILY: 굴림">수</span> <span style="FONT-FAMILY: 굴림">있다</span><span>.</span> <span style="FONT-FAMILY: 굴림">다음과</span> <span style="FONT-FAMILY: 굴림">같이</span><span>&lt;file-name&gt;</span><span style="FONT-FAMILY: 굴림">태그를</span> <span style="FONT-FAMILY: 굴림">통하여</span> <span>handler</span><span style="FONT-FAMILY: 굴림">가</span> <span style="FONT-FAMILY: 굴림">사용할</span> <span>file name</span><span style="FONT-FAMILY: 굴림">을</span> <span style="FONT-FAMILY: 굴림">설정할</span> <span style="FONT-FAMILY: 굴림">수</span> <span style="FONT-FAMILY: 굴림">있다</span><span>.</span></p><p class="KM-xml" style="TEXT-ALIGN: center"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;&lt;JEUSMain.xml&gt;&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&lt;jeus-system xmlns="http://www.tmaxsoft.com/xml/ns/jeus"&gt;</span></p><p class="KM-xml" style="TEXT-INDENT: 16pt"><span style="FONT-FAMILY: 'Courier New'">&lt;node&gt;</span></p><p class="KM-xml" style="TEXT-INDENT: 16pt"><span style="FONT-FAMILY: 'Courier New'">...</span></p><p class="KM-xml" style="TEXT-INDENT: 32pt"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">&lt;system-logging&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;level&gt;INFO&lt;/level&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;handler&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;file-handler&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;handler1&lt;/name&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;level&gt;FINEST&lt;/level&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;valid-day&gt;1&lt;/valid-day&gt;</span></p><p class="KM-xml"><span style="COLOR: red; FONT-FAMILY: 'Courier New'">&lt;file-name&gt;7/home/main/Mylog.log&lt;/file-name&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;/file-handler&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;/handler&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;/system-logging&gt;</span></p><p class="KM-1">&nbsp;</p><p class="KM-1"><strong><span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: Arial">log4j API</span></strong><strong><span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: 돋움">를</span></strong><strong><span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: 돋움">이용한</span></strong> <strong><span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: Arial">logging</span></strong></p><p class="KM-1"><span>JEUS</span><span style="FONT-FAMILY: 굴림">에서</span> <span>log4j</span><span style="FONT-FAMILY: 굴림">를</span> <span style="FONT-FAMILY: 굴림">사용할</span> <span style="FONT-FAMILY: 굴림">경우</span> <span>log4j-1.xxx.jar</span> <span style="FONT-FAMILY: 굴림">파일은</span> <span style="FONT-FAMILY: 굴림">위치는</span> <span style="FONT-FAMILY: 굴림">통상적으로</span> <span style="FONT-FAMILY: 굴림">다음</span> <span style="FONT-FAMILY: 굴림">경로에</span> <span style="FONT-FAMILY: 굴림">올</span> <span style="FONT-FAMILY: 굴림">수</span> <span style="FONT-FAMILY: 굴림">있다</span><span>.</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">- $JEUS_HOME/lib/application&nbsp; ...</span> <span style="COLOR: red; FONT-FAMILY: 굴림체">①</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">- context</span> <span style="FONT-FAMILY: 굴림체">아래의</span> <span style="FONT-FAMILY: 'Courier New'">WEB-INF/lib ...</span> <span style="COLOR: red; FONT-FAMILY: 굴림체">②</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">-</span> <span style="FONT-FAMILY: 굴림체">임의의</span><span style="FONT-FAMILY: 굴림체">경로</span> <span style="FONT-FAMILY: 'Courier New'">: /home/main/log4j/log4j-1.xxx.jar</span></p><p class="KM-xml" style="TEXT-INDENT: 8pt"><span style="FONT-FAMILY: 굴림체">임의의</span><span style="FONT-FAMILY: 굴림체">경로에</span><span style="FONT-FAMILY: 굴림체">넣을</span><span style="FONT-FAMILY: 굴림체">경우</span><span style="FONT-FAMILY: 'Courier New'">, JEUSMain.xml</span> <span style="FONT-FAMILY: 굴림체">의</span> <span style="FONT-FAMILY: 'Courier New'">&lt;user-class-path&gt;</span> <span style="FONT-FAMILY: 굴림체">태그에</span><span style="FONT-FAMILY: 굴림체">위</span><span style="FONT-FAMILY: 굴림체">경로를</span><span style="FONT-FAMILY: 굴림체">설정함</span> <span style="FONT-FAMILY: 'Courier New'">...</span> <span style="COLOR: red; FONT-FAMILY: 굴림체">③</span></p><p class="KM-1"><span style="FONT-FAMILY: 굴림">그리고</span> <span>log4j.properties</span><span style="FONT-FAMILY: 굴림">는</span> <span>classpath</span><span style="FONT-FAMILY: 굴림">에</span> <span style="FONT-FAMILY: 굴림">포함되는</span> <span style="FONT-FAMILY: 굴림">디렉토리에</span> <span style="FONT-FAMILY: 굴림">위치시키는데</span> <span style="FONT-FAMILY: 굴림">다음과</span> <span style="FONT-FAMILY: 굴림">같이</span> <span style="FONT-FAMILY: 굴림">올</span> <span style="FONT-FAMILY: 굴림">수</span> <span style="FONT-FAMILY: 굴림">있다</span><span>.</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">- $JEUS_HOME/lib/application&nbsp; ...</span> <span style="COLOR: red; FONT-FAMILY: 굴림체">①</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">- context</span> <span style="FONT-FAMILY: 굴림체">아래의</span> <span style="FONT-FAMILY: 'Courier New'">WEB-INF/classes ...</span> <span style="COLOR: red; FONT-FAMILY: 굴림체">②</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">-</span> <span style="FONT-FAMILY: 굴림체">파일위치</span> <span style="FONT-FAMILY: 'Courier New'">: /home/main/log4j/log4j.properties</span></p><p class="KM-xml" style="TEXT-INDENT: 8pt"><span style="FONT-FAMILY: 굴림체">임의의</span><span style="FONT-FAMILY: 굴림체">경로에</span><span style="FONT-FAMILY: 굴림체">넣을</span><span style="FONT-FAMILY: 굴림체">경우</span><span style="FONT-FAMILY: 'Courier New'">, JEUSMain.xml</span> <span style="FONT-FAMILY: 굴림체">의</span> <span style="FONT-FAMILY: 'Courier New'">&lt;user-class-path&gt;</span> <span style="FONT-FAMILY: 굴림체">태그에</span><span style="FONT-FAMILY: 굴림체">위</span><span style="FONT-FAMILY: 굴림체">경로를</span><span style="FONT-FAMILY: 굴림체">설정함</span> <span style="FONT-FAMILY: 'Courier New'">...</span> <span style="COLOR: red; FONT-FAMILY: 굴림체">③</span></p><p class="KM-1"><span style="FONT-FAMILY: 굴림">예를</span> <span style="FONT-FAMILY: 굴림">들어</span> <span style="FONT-FAMILY: 굴림">①과</span> <span style="FONT-FAMILY: 굴림">②</span> <span style="FONT-FAMILY: 굴림">경로에</span> <span style="FONT-FAMILY: 굴림">모두</span> <span>log4j.properties</span> <span style="FONT-FAMILY: 굴림">가</span> <span style="FONT-FAMILY: 굴림">있는</span> <span style="FONT-FAMILY: 굴림">경우</span> <span style="FONT-FAMILY: 굴림">①의</span> <span style="FONT-FAMILY: 굴림">위치한</span> <span>log4j.properties</span> <span style="FONT-FAMILY: 굴림">가</span> <span style="FONT-FAMILY: 굴림">실행된다</span><span>.</span></p><p class="KM-1"><span>log4j.properties</span> <span style="FONT-FAMILY: 굴림">에서</span> <span style="FONT-FAMILY: 굴림">아래와</span> <span style="FONT-FAMILY: 굴림">같이</span> <span style="FONT-FAMILY: 굴림">로그파일의</span> <span style="FONT-FAMILY: 굴림">경로를</span> <span style="FONT-FAMILY: 굴림">상대경로로</span> <span style="FONT-FAMILY: 굴림">설정할</span> <span style="FONT-FAMILY: 굴림">경우</span><span>, JEUS</span><span style="FONT-FAMILY: 굴림">를</span> <span>restart</span> <span style="FONT-FAMILY: 굴림">할</span> <span style="FONT-FAMILY: 굴림">때마다</span> <span style="FONT-FAMILY: 굴림">파일의</span> <span style="FONT-FAMILY: 굴림">위치는</span> <span style="FONT-FAMILY: 굴림">가변적이다</span><span>.</span> <span style="FONT-FAMILY: 굴림">즉</span><span>, restart</span> <span style="FONT-FAMILY: 굴림">한</span> <span style="FONT-FAMILY: 굴림">시점의</span> <span style="FONT-FAMILY: 굴림">경로에</span> <span style="FONT-FAMILY: 굴림">로그파일이</span> <span style="FONT-FAMILY: 굴림">발생하게</span> <span style="FONT-FAMILY: 굴림">된다</span><span>.</span></p><p class="KM-xml" style="TEXT-ALIGN: center"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;&lt;log4j.properties&gt;&gt;</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">...</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">log4j.appender.dailyfile.Threshold = DEBUG</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">log4j.appender.dailyfile = org.apache.log4j.DailyRollingFileAppender</span></p><p class="KM-xml"><span style="COLOR: windowtext; FONT-FAMILY: 'Courier New'">log4j.appender.dailyfile.File = logfile.log</span></p><p class="KM-xml"><span style="FONT-FAMILY: 'Courier New'">log4j.appender.dailyfile.layout = org.apache.log4j.PatternLayout</span></p>			 ]]> 
		</description>
		<category>JEUS</category>

		<comments>http://webgosu.egloos.com/9822251#comments</comments>
		<pubDate>Thu, 11 Jun 2009 14:36:22 GMT</pubDate>
		<dc:creator>webgosu</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 인코딩 - 8859_1의 비밀(?) ]]> </title>
		<link>http://webgosu.egloos.com/9370039</link>
		<guid>http://webgosu.egloos.com/9370039</guid>
		<description>
			<![CDATA[ 
  Open source로 구해지는 java source code를 들여다 보면&nbsp; <div>하고 많은 문자셋들 중에 유독 '8859_1'을 많이 보게 된다.</div><div><br></div><div>'아니 저런 특정 문자셋을, 그것도 8비트밖에 지원하지 않는 문자셋을 코드에다 박아 버리면&nbsp;</div><div>&nbsp;쓰는 사람들은 어쩌란 거지?'</div><div><br></div><div>이런 생각이 들 때가 있을 것이다.</div><div>한때 나도 그랬었고..</div><div><br></div><div>그러나 정말 잘못 쓴 경우도 있겠지만, 많은 경우 '8859_1'의 사용은 나름 합리성을 띄고 있다.</div><div>이를 이해하려면 '8859_1'이 다른 문자셋들과 어떻게 다른가를 알아야 한다.</div><div><br></div><div>이전 글에서 언급했 듯이, '8859_1'은 1바이트에 해당하는 256개의 코드에 대해, 즉 0x00 ~ 0xff 까지의 모든 코드에 대해 대응되는 문자를 갖고 있다.</div><div><br></div><div>반면 8859_1보다 많은 문자를 거느리고 있는 'EUC-KR',&nbsp;</div><div>이것의 확장형인 'MS949' 나 심지어 모든 글자를 다 포함한다고 여겨도 될 만한 'UTF-8' 조차</div><div>가진 문자는 확실히 많지만 모든 바이트 열에 대해 대응되는 문자를 갖고 있는 것은 아니다.</div><div><br></div><div>이를 확인하기 위해 다음을 실행해 보자.</div><div><br></div><blockquote style="BORDER-BOTTOM: #b2b2b2 1px dashed; BORDER-LEFT: #b2b2b2 1px dashed; PADDING-BOTTOM: 10px; LINE-HEIGHT: 1.2; MARGIN: 14px 15px 20px; PADDING-LEFT: 9px; WIDTH: 100%; PADDING-RIGHT: 10px; COLOR: #b2b2b2; BORDER-TOP: #b2b2b2 1px dashed; BORDER-RIGHT: #b2b2b2 1px dashed; PADDING-TOP: 11px" class="vview_quote07"><div style="LINE-HEIGHT: 1.4; COLOR: #444444"><!--quote_txt--><div><div>&nbsp;&nbsp; &nbsp;public static void main(String[] args) throws Exception {</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (int i = 0; i &lt; 256; i++) {</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (int j = 0; j &lt; 256; j++) {</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;byte[] bytes = new byte[] {(byte) i, (byte)j };</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String str = new String(bytes, "MS949");</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (str.charAt(0) == 0xfffd) {</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;System.out.println("for byte sequence{0x" + hex(i) + ", 0x" + hex(j)</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+ "} no character exists... getBytes()[0]=" + str.getBytes("MS949")[0]);</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else if (str.length() &gt; 1) {</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 첫 바이트를 하나의 글자로 인식. i만 취하고 j 루프는 중지.</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;System.out.println("For character{" + hex(i) + "} char = "</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+ str.charAt(0));</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else {</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;System.out.println("for character{" + hex(i) + ", " + hex(j)</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+ "} char = " + str);</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div><br></div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div>&nbsp;&nbsp; &nbsp;}</div><div>&nbsp;&nbsp; &nbsp;</div><div>&nbsp;&nbsp; &nbsp;/*</div><div>&nbsp;&nbsp; &nbsp; * byte 출력용.</div><div>&nbsp;&nbsp; &nbsp; */</div><div>&nbsp;&nbsp; &nbsp;public static String hex(int i ){</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;String hex = Integer.toHexString(i);&nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return (hex.length() &gt; 2) ? hex.substring(hex.length() - 2) : hex;</div><div>&nbsp;&nbsp; &nbsp;}</div></div><!--/quote_txt--></div></blockquote><div>주루룩 많은 행을 출력하지만 보면 대응되지 않는 글자가 존재함을 알 수 있다.</div><div><br></div><div>대략 그림으로 나타내면 다음과 같다.</div><div><img style="CURSOR: pointer" onclick="popview(this)" src="http://blogfiles10.naver.net/data41/2009/2/27/217/%C0%CE%C4%DA%B5%F9_ms949_anabaral.png" width="547" height="246"><br>인식하는 바이트 값이 0x~0x7f 일 경우에는 8859_x 에서 사용되는 글자를 그대로 쓰며 이 때는 한 바이트가 하나의 글자와 매핑된다. </div><div>바이트 값이&nbsp;0x81 이상일 경우에는 그 다음 바이트가 필요하며, 두 바이트를 가지고 하나의 글자를 구성한다. 그리고 이 때 '없는 글자'가 생긴다. </div><div>당장 {0x81, 0x00} ~ {0x81, 0x40}&nbsp;에 해당하는 값에 대해 대응되는 글자가 없다.</div><div>없는 글자는 java char로 0xfffd (아마도 UTF-16BE로 {0xff 0xfd} 에 매핑되는 글자) 로 저장되었다가, 다시 MS949로 인코드하면 0x63 글자로 매핑된다. 이 글자가 물음표 '?' 이다</div><div>&nbsp;</div><div>모르는 글자를 인코드 할 때&nbsp;0x63 코드를 매핑하는 것은&nbsp;Sun JDK에서의 대응 방식이다. </div><div>모르는 글자에 대한 대응에는 표준이 없는지 다른 vendor -&nbsp;이를테면 IBM - 의 JDK에서는 좀 다르게 구현하는 것 같다.</div><div>(한편 바이트 값이 0x80이나 0xff&nbsp;같을 때 이를 디코드하면 그 한 바이트가 '모르는 글자 0xfffd'로 매핑된다. 일반화할 수 있는&nbsp;규칙은 아닌 것 같다..)</div><div>&nbsp;</div><div>다음과 같이 인코드 - 디코드를 많이 거치게 되면 인코드 할 때도, 디코드 할 때도 매핑이 불가한 경우를 만나게 되어 글자들이 깨진다. 이 때의 깨진 글자들은 복구가 절대 안 된다.</div><div><img style="CURSOR: pointer" onclick="popview(this)" src="http://blogfiles5.naver.net/data44/2009/3/1/276/%C0%CE%C4%DA%B5%F9_%C0%CC%BB%F3%C0%FB%C0%CE%B0%E6%BF%EC_anabaral.png" width="547" height="246"></div><div>그래서 저런 식으로 부주의하게 인코드-디코드를 해 버리면 원래 호환되는 0x00~0x7f 이외의 한글 같은 글자들은 여지없이 깨져 버리고.. 되돌릴 수도 없게 된다.</div><div>&nbsp;</div><div>그러나 8859_x 는 모든 바이트 코드에 대한 글자들을 구비하고 있으므로, 이해가 안 되는 이상한 글자로 매핑할 망정 코드를 보존하면서 디코드가 가능하다.</div><div>그래서 디코드만 하고, 이를 다시 인코드 할 경우에는 글자 깨짐이 발생하지 않는다.</div><div><img style="CURSOR: pointer" onclick="popview(this)" src="http://blogfiles5.naver.net/data42/2009/3/1/180/%C0%CE%C4%DA%B5%F9_8859_anabaral.png" width="547" height="246"></div><div>&nbsp;</div><div>8859_1 뿐만 아니라 8859_2 도 "보관"할 때 가지는 문자가 틀리지만 역시 깨짐 없이 바이트를 보존할 수 있다.</div><div><img style="CURSOR: pointer" onclick="popview(this)" src="http://blogfiles5.naver.net/data41/2009/3/1/4/%C0%CE%C4%DA%B5%F9_8859_2_anabaral.png" width="547" height="246"></div><div>&nbsp;</div><div>물론&nbsp;그렇게 "보관"한 문자나 인코드가 원활히 되지, 아무 문자열이나&nbsp;인코드를 하려 한다면</div><div>'자기 문자셋에 존재하지 않는 문자를 인코드'하는 경우가 발생해&nbsp;글자가 깨질 것이다.</div><div>이를테면 아래와 같은 경우 당연히 <strong>문자셋에 없는 글자를 인코드</strong>하려 하므로 글자가 깨진다.</div><div><img style="CURSOR: pointer" onclick="popview(this)" src="http://blogfiles13.naver.net/data44/2009/2/27/92/encoding_8859_fail_anabaral.png" width="547" height="246"></div><div>이렇게 되면 '원래 문자열이 2글자였다' 정도 외엔 아무 정보도 남지 않게 된다. (JDK vendor에 따라서는 이마저도 알 수 없게 될 것이다)</div><div>&nbsp;</div><div>-----------------------------</div><div>&nbsp;</div><div>실제 네트워크를 오가는 데이터는 바이트열의 형태이지만</div><div>이를 프로그래밍 언어에서 다룰 때는&nbsp;문자열로 간주하고 작업할 때가 많다. </div><div>그게 편하기 때문이기도 하고, </div><div>문자열로서 의미를 가지는 경우가 많기 때문이기도 할 것이다.</div><div>&nbsp;</div><div>가장 많이 쓰이는 경우가&nbsp;웹 어플리케이션에서의 파일 다운로드, 아마도 그 다음이 소켓통신 (헤더를 읽어들이거나 생성할 때)&nbsp;같은 경우일 것이다.</div><div><blockquote style="BORDER-BOTTOM: #b2b2b2 1px dashed; BORDER-LEFT: #b2b2b2 1px dashed; PADDING-BOTTOM: 10px; LINE-HEIGHT: 1.2; MARGIN: 14px 15px 20px; PADDING-LEFT: 9px; WIDTH: 100%; PADDING-RIGHT: 10px; COLOR: #b2b2b2; BORDER-TOP: #b2b2b2 1px dashed; BORDER-RIGHT: #b2b2b2 1px dashed; PADDING-TOP: 11px" class="vview_quote07"><div style="LINE-HEIGHT: 1.4; COLOR: #444444"><!--quote_txt-->&lt;&lt; 다운로드 시 설정&gt;&gt; <p><span style="TEXT-ALIGN: left; WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: 12px/16px 돋움; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(255,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0" class="Apple-style-span"><span style="COLOR: #000000">response.addHeader("Content-disposition", "<span style="TEXT-ALIGN: left; WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: 12px/16px 돋움; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(68,68,68); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0" class="Apple-style-span">attachment;filename=" + <span style="COLOR: #ff0000"><strong>... </strong></span>+ "" </span>);</span></span></p><!--/quote_txt--></div></blockquote></div><div>이 때 인코딩/디코딩 작업이 필요한데, 디코드 시 바이트들을 깨뜨리지 않고 문자열로 얻고 싶다면 '8859_x'을 쓰는 것이 현명한 방책이라 하겠다.</div><div><br>물론&nbsp;그 중에서도 많은 서버들이 위의 filename 을 ISO-Latin1(혹은 Latin1, 8859_1) 로 인코딩 해 보내기 때문에 같은 Latin 계열이라도&nbsp;'8859_1' 즉 'Latin1'을 택하는 것이 좋다. </div><div>이는 표준이라고 하는데 문서 확인은 안 해 봤다. (어디 있는지 찾기 정말 힘들던데..)</div><div class="autosourcing-stub"><p style="PADDING-BOTTOM: 0px; FONT-STYLE: normal; MARGIN: 11px 0px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Dotum; FONT-SIZE: 12px; FONT-WEIGHT: normal; PADDING-TOP: 0px"><strong style="PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 7px; PADDING-TOP: 0px">[출처]</strong> <a href="http://blog.naver.com/anabaral/130043451093" target="_blank">인코딩 - 8859_1의 비밀(?)</a><span style="PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 7px; PADDING-TOP: 0px">|</span><strong style="PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 7px; PADDING-TOP: 0px">작성자</strong> <a href="http://blog.naver.com/anabaral" target="_blank">우가가</a></p></div>			 ]]> 
		</description>

		<comments>http://webgosu.egloos.com/9370039#comments</comments>
		<pubDate>Thu, 26 Mar 2009 07:59:17 GMT</pubDate>
		<dc:creator>webgosu</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 블로그 전문 “이글루스”에 오신 것을 환영합니다. ]]> </title>
		<link>http://webgosu.egloos.com/9144076</link>
		<guid>http://webgosu.egloos.com/9144076</guid>
		<description>
			<![CDATA[ 
  블로그 전문 “이글루스”에 오신 것을 환영합니다.<br>
새로운 보금자리, 이것저것 어색한 것이 많으시죠?<br>
포털블로그와는 다른, 이글루스만의 기능, 이글루스의 특징을 소개해드립니다.<br>
<br>
<b>이글루스는 블로그전문을 지향합니다.</b><br>
2004년, 첫 발을 내디딘 이글루스는 <a href=http://ebc.egloos.com/185>국내 최초 트랙백</a>  을 도입하여 블로그전문 서비스로 입지를 다졌습니다. 관심사를 공유할 수 있는 ‘<a href=http://valley.egloos.com> 밸리</a>’와 ‘<a href=http://valley.egloos.com/my>마이</a>’, 문화체험의 새로운 경험 ‘<a href=http://valley.egloos.com/review>렛츠리뷰</a>’, 국내 최고 메신저 네이트온 연동으로 더욱 새로운 블로깅, 독보적인 블로거가 되세요!<br>
<br>
<b>첫째, 공감하는 글이 있다면, <a href=http://ebc.egloos.com/185>트랙백</a>과 <a href=http://ebc.egloos.com/4918>핑백</a>을 이용하세요!</b><br>
기존 포털 블로그에서 사용하던 스크랩기능 대신 트랙백과 핑백을 사용해보세요~<br>
관심사가 비슷한 블로거를 만날 수 있는 방법입니다! <br>
<br>
<b>둘째, 일촌, 친구, 이웃 등 오프라인 인맥 위주의 ‘친구맺기’ 기능이 필요하시면!</b><br>
이글루스에서 제공하는 <a href=http://help.egloos.com/141>이글루링크</a>를 추천해드립니다. <br>
이글루링크를 하시면, 해당 블로거의 새글 업데이트 소식을 실시간으로 받아볼 수 있습니다.<br>
<br>
<b>셋째, 카테고리별 공개/비공개 설정을 지원하지 않습니다.</b><br>
이글루스는 자신이 작성한 글을 더 많은 블로거들과 나눌 수 있도록 참여와 공유를 지향합니다. <br>
카테고리별 공개/비공개 기능은 현재 마련되어 있지 않으나 추후 필요성을 검토해보도록 하겠습니다.<br>
<br>
<b>넷째, 도움이 필요할 땐, <a href=http://ebc.egloos.com/>EBC 와 <a href=http://help.egloos.com>이글루스도움말</a> 을 찾아주세요.</b><br>
이글루스를 이용하시다 발견되는 버그나 오류, 그리고 요청사항은 운영자 <a href=http://ebc.egloos.com> 공식블로그 EBC</a>  를, 이글루스의 기능과 운영정책을 알고 싶으시다면 <a href=http://help.egloos.com>이글루스 도움말</a>을 방문하세요!<br>
<br>
※ 공지사항을 지우고 싶은 경우, 포스트의 ‘삭제’를 클릭하면 지워집니다.<br>
※ 삭제 버튼은 한 번만 누르세요. 여러 번 클릭 시 다른 글이 삭제될 수도 있습니다.<br>
			 ]]> 
		</description>

		<comments>http://webgosu.egloos.com/9144076#comments</comments>
		<pubDate>Mon, 09 Mar 2009 21:20:02 GMT</pubDate>
		<dc:creator>webgosu</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 오라클 튜닝 ]]> </title>
		<link>http://webgosu.egloos.com/9123231</link>
		<guid>http://webgosu.egloos.com/9123231</guid>
		<description>
			<![CDATA[ 
  <table width="605" border="0">
<tbody>
<tr>
<td width="599"><br />
<b>오라클 튜닝</b><br />
<br />
튜닝(tuning)이란 불필요한 일들을 최소화하는 것이다.<br />
보다 적은 노력으로 많은 결과를 내고자 하는 활동.<br />
<br />
<b>1. 튜닝(Tuning) Overview</b><br />
<img height="52" hspace="3" src="http://zenos.pe.kr/oracle/oracle_tuning_img/o9-1.gif" width="329" vspace="3" border="0" /> 포로젝트를 개발함에 있어 시작부터 끝까지 튜닝에 대한 마인드를 가지고 모든 일을 처리하는 것이다.<br />
<br />
<b>튜닝 절차</b><br />
<img height="269" hspace="3" src="http://zenos.pe.kr/oracle/oracle_tuning_img/o9-2.gif" width="207" vspace="3" border="0" />
<div><b>애플리케이션 형태</b><br />
애플리케이션 형태를 알면 튜닝 포인트를 찾는데 도움이 된다.<br />
<br />
<b>- OLTP(Online Transaction Processing)</b><br />
<img height="124" hspace="3" src="http://zenos.pe.kr/oracle/oracle_tuning_img/o9-3.gif" width="319" vspace="3" border="0" /></div>
<div>대부분의 업무는 Insert/Update 이다.<br />
예) 은행의 온라인 업무, 항공사의 예약 업무, 주문 시스템<br />
데이터의 정확성과 가용성이 중요.<br />
<br />
<u>튜닝 항목</u><br />
롤백 세그먼트, 인덱스, 클러스터, 해싱, 데이터 블록 크기, 테이블 또는 롤백 세그먼트의 동적 할당, 트랜잭션 처리 모니터, 멀티 스레드 서버, SGA Shared Pool, SQL 문장 튜닝, 완전 무결성 제약, 프로시저, 패키지, 함수<br />
<br />
<b>- DSS (Decision Support System)</b><br />
<img height="199" hspace="3" src="http://zenos.pe.kr/oracle/oracle_tuning_img/o9-4.gif" width="384" vspace="3" border="0" /></div>
<div>축적된 대량의 정보를 가공해서 미래의 사실을 유추하는데 목적이 있는 업무이다.<br />
대부분의 작업은 Read와 Join 이다.<br />
<br />
<u>튜닝 항목</u><br />
인덱스, 클러스터, 데이터 블록 크기, 병렬 조회 옵션, 최적화, 쿼리 수행중 오라클 힌트 사용, PL/SQL 함수 사용<br />
<br />
<b>- 복잡한 연산 애플리케이션(Scientific Application)</b><br />
<img height="77" hspace="3" src="http://zenos.pe.kr/oracle/oracle_tuning_img/o9-5.gif" width="353" align="left" vspace="3" border="0" /><br />
<br />
<br />
<br />
<br />
<br />
<br />
예) 기상청과 같은 대규모의 연산을 수행하는 곳.<br />
<br />
<u>튜닝 항목</u><br />
PL/SQL, 병렬 쿼리 연산, 최적화, 쿼리 사용 중 오라클 힌트 사용.<br />
<br />
<b>- 클라이언트/서버 애플리케이션</b><br />
<img height="134" hspace="3" src="http://zenos.pe.kr/oracle/oracle_tuning_img/o9-6.gif" width="371" align="left" vspace="3" border="0" /><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<u>튜닝 항목</u><br />
저장 프로시저, 데이터베이스 트리거, 완전 무결성 제약, 배열 프로세싱, 시퀀스.<br />
<br />
<b>2. SQL 튜닝 최적화 (Optimization)</b><br />
<br />
데이터를 조작할 수 있는 인터페이스 중에서 대표적인 것이 SQL이다.<br />
Optimization : 어떻게 하면 효율적으로 최소의 자원을 사용하여 원하는 결과를 얻을 것인가.<br />
<br />
SQL<br />
<br />
SQL이 어떻게 수행되는지를 잘 이해하고 있으면 SQL연산시 무슨 자원이 필요하고 어떻게 튜닝해야 하는지 쉽게 알 수 있다.<br />
<br />
[그림. RDBM의 내부 프로시저 상관 관계]<br />
<br />
<img height="531" hspace="3" src="http://zenos.pe.kr/oracle/oracle_tuning_img/o9-7.gif" width="409" align="left" vspace="3" border="0" /><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
SQL은 기능상 DML과 DDL로 나눌 수 있다.<br />
<br />
<b>DML</b><br />
<br />
<u>1단계 : 커서의 생성</u><br />
커서는 SQL 문장을 수행하기 위해서 오라클이 사용하는 자원이다.<br />
시스템 자원이 충분하면 초기파라미터의 OPEN_CURSORS를 크게 하는 것이 유리하다.<br />
<br />
<u>2단계 : 문장의 파스, 질의 프로세싱</u><br />
Shared Pool에 이전에 사용한 SQL 문장이 있는지 확인하고 없으면 다시 컴파일, 권한검사, 문법오류 등을 검사하여 공유 영역에 올린다. (문장의 파스, 질의 프로세싱)<br />
초기 파라미터의 SHARED_POOL_SIZE를 변경.<br />
<u>3단계 : 설명 결과</u><br />
<u>4단계 : 정의의 출력</u><br />
<u>5단계 : 변수의 바인드</u><br />
<u>6단계 : 문장의 실행</u><br />
SQL 연산시 임시로 필요한 스페이스가 발생하는 경우가 있다.<br />
사용자가 Default Space와 Temporary Space를 두지 않을 경우 오라클 System Space는 사용자들을 위한 Default Space가 되어 전체 성능을 저해하는 요소가 될 수 있다.<br />
Sort나 Join 등의 연산시는 Space 부족으로 중단되는 경우가 발생한다. 그러므로 Temporary Space를 충분히 확보해 두어야 한다.<br />
<br />
Insert, Update, Delete 연산 수행시는 Lock 자원을 사용하므로 주의를 기울여야 한다.<br />
<br />
<u>7단계 : 문장의 병렬화</u><br />
<u>8단계 : 질의 결과 레코드의 FETCH</u><br />
<br />
<b>DDL</b><br />
데이터를 조작하지는 않지만 Table을 생성, 삭제, 변경 시키는 SQL 문장이다.<br />
DML과 달리 Data Dictionary의 값을 변경시킨다.<br />
DDL 연산을 통하여 데이터의 위치나 스페이스를 변경할 수 있으므로 물리적 I/O 튜닝을 위해서 많이 사용한다.<br />
<br />
Shared SQL, PL/SQL<br />
오라클 Library Cache에는 Shared Pool과 PL/SQL 영역이 있다.<br />
성능 위해 자주 사용되는 SQL과 PL/SQL 문장들을 얼마나 많이 장기간 확보하느냐가 중요하다.<br />
<br />
<b>LRU(Least Recently Used)</b><br />
공유 영역은 LRU 알고리즘으로 관리된다.<br />
최근에 사용되지 않은 SQL과 PL/SQL을 위해 자리를 내주어야 한다. 그러므로 같은 결과를 얻기 위해 사용되는 문장은 반드시 같은 폼으로 사용되어야 한다.<br />
<br />
<b>V$LIBRARYCACHE</b><br />
사용자가 얼마나 Library Cache를 잘 사용하는가를 알 수 있는 통계 자료가 있다.<br />
<br />
<b>SELECT SUM(pins) "Executions"</b><br />
<b>SUN(reloads) "Cache Misses while Executing"</b><br />
<b>FROM v$librarycache;</b><br />
<b>Executions Cache Misses while Executing</b><br />
<b>--------- -------------------------</b><br />
<b>320871 549</b><br />
<br />
<b>RELOADS Ratio = (reloads(549)/pins(320871)) * 100 = 0.17%</b><br />
<br />
PINS : Library Cache 내의 항목이 실행된 수<br />
RELOADS : 실행 단계에서의 Library Cache Miss의 수<br />
<br />
RELOADS 값이 상대적으로 PINS 보다 매우 작으면 Cache Hit Ratio가 높다는 것을 의미한다.<br />
Cache Hit Ratio가 낮다는 의미는 공유영역이 부족하거나 애플리케이션에서 같은 SQL, PL/SQL 문장들을 사용하지 않거나 Trigger, Package 기능들을 사용하지 않아서 새로운 아이템들이 Library Cache에 계속 Reload 되기 때문이다.<br />
<br />
<b>Library Cache를 위한 메모리 할당</b><br />
Reload값을 0에 근접하게 만들려면 파라미터값 중에서 SHARED_POOL_SIZE 값을 증가시켜야 한다.<br />
또, 충분한 공유 영역의 이점을 살리기 위해 OPEN_CURSORS 값도 같이 증가시켜야 한다.<br />
<br />
Optimization Overview<br />
Optimizer의 목표는 최소한의 프로세싱 시간과 최단 시간의 I/O를 사용하는 것이다.<br />
이를 위해 Optimizer는 실행계획을 세우고 문장을 실행하기 전에 가장 효과적인 계획을 선택한다.<br />
<br />
<b>실행 계획 (Execution Plan)</b><br />
DML문장을 실행하기 위해 Oracle은 많은 내부적 단계를 수행해야 한다.<br />
어떠한 문장을 실행하기 위해 오라클이 사용하는 단계들의 조합을 실행 계획이라 한다.<br />
<br />
예)<br />
<b>SELECT ename, job, sal, dname</b><br />
<b>FROM emp, dept</b><br />
<b>WHERE emp.deptno = dept.deptno</b><br />
<b>AND NOT EXISTS</b><br />
<b>(SELECT * FROM salgrade</b><br />
<b>WHERE emp.sal BETWEEN losal AND hisal);</b><br />
<br />
ID OPERATION OPTIONS OBJECT_NAME<br />
---------------------------------------------------------<br />
0 SELECT STATEMENT<br />
1 FILTER<br />
2 NESTED LOOPS<br />
3 TABLE ACCESS FULL EMP<br />
4 TABLE ACCESS BY ROWID DEPT<br />
5 INDEX UNIQUE SCAN PK_DEPTNO<br />
6 TABLE ACCESS FULL SALGRADE <img height="369" hspace="3" src="http://zenos.pe.kr/oracle/oracle_tuning_img/o9-8.gif" width="227" align="left" vspace="3" border="0" /><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
실행 계획의 각 단계는 다음 단계나 마지막 단계에서 사용될 행들이나, 사용자나 어플리케이션이 SQL문장을 발행한 것에 대한 답으로서 행들의 집합을 돌려준다. 각 단계에서 반환된 행들의 집합은 행자원(row source)이라고 불린다. 그림은 한 단계에서 다음 단계로 행들의 흐름을 보여주는 계층적 다이어그램이다. 단계의 번호 매김은 우리가 실행 계획을 볼 때 보여지는 순서를 반영하는데, 이것은 일반적으로 각 단계가 실행되는 순서가 아니다.<br />
<br />
하나 이상의 행 자원으로부터 행들을 받아들인다.<br />
<br />
- 검정 박스로 표현된 각 단계들은 물리적으로 데이터베이스내의 객체로부터 데이터를 검색한다. 그런 단계를 접근 경로(access paths)라고 한다.<br />
<br />
1. 단계 3과 6은 각각 EMP와 SALGRADE 테이블의 모든 행들을 읽는다.<br />
2. 단계 5는 PK_DEPTNO 인덱스로 3단계에서 반환된 각각의 DEPTNO값을 찾아본다. DEPT 테이블에서의 관련 행의 ROWIDS를 찾는다.<br />
3. 단계 4는 DEPT테이블에서 5단계에서 반환된 ROWIDS값을 갖는 행들을 검색한다.<br />
<br />
- 하얀 박스들로 표현된 각 단계들은 행자원에 대해 작동한다.<br />
1. 단계 2는 3단계와 4단계로부터 행자원을 받아들이고, 단계 3의 자원으로부터 각 행들을 단계 4의 해당 행에<br />
조인하고, 1단계로 결과 행들을 반환하는 중첩 루프(loop) 오퍼레이션을 수행한다.<br />
2. 단계 1은 필터 연산을 수행한다. 그것은 행자원을 2단계와 6단계로부터 받아들인다. 6단계에서 해당 행을 가지고 와서 2단계로부터 행을 추출하여, 2단계로부터 남은 행들을 문장을 발행한 사용자와 어플리케이션에 반환한다.<br />
<br />
따라서 실행순서는 3-5-4-2-6-1 이다.<br />
<br />
<b>Optimization Mode</b><br />
Cost-Based, Rule-Based가 있다.<br />
<br />
초기 파라미터 파일을 수정<br />
<b>OPTIMIZATION_MODE = COST</b><br />
<b>OPTIMIZATION_MODE = RULE</b><br />
<br />
ALTER SESSION 명령어 사용<br />
<b>ALTER SESSION SET OPTIMIZER GOAL = COST</b><br />
<table height="221" cellpadding="2" width="444" border="1">
<tbody>
<tr>
<td valign="center" width="23%">
<div align="center">옵 션</div>
</td>
<td valign="center" width="76%">
<div align="center">설 명</div>
</td>
</tr>
<tr>
<td valign="center" width="23%"><br />
CHOOSE</td>
<td valign="center" width="76%"><br />
Table, Cluster, Index 등이 Optimization을 위한<br />
통계 데이터를 가지고 있으며 Cost-Based 방식으로 Optimization을 하고 통계 데이터가 없으면<br />
Rule-Based 방식으로 한다.</td>
</tr>
<tr>
<td valign="center" width="23%"><br />
RULE</td>
<td valign="center" width="76%"><br />
Rule-Based</td>
</tr>
<tr>
<td valign="center" width="23%"><br />
ALL_ROWS</td>
<td valign="center" width="76%"><br />
통계 데이터의 유무에 상관없이 Cost-Based 방식의 최적화를 한다. Best Throughput(처리량)이 목적.</td>
</tr>
<tr>
<td valign="center" width="23%"><br />
FIRST_ROWS</td>
<td valign="center" width="76%"><br />
Cost-Based Optimization,<br />
Best Response Time 목적</td>
</tr>
<tr>
<td></td>
</tr>
</tbody>
</table>
<br />
<b>최적화 방법</b><br />
대부분 Cost-Based 방식이 Rule-Based 방식보다 좋은 결과를 내나 사용자가직접 SQL 연산을 튜닝할 때는 Rule-Based 방식이 더 좋은 결과를 낸다.<br />
<br />
<u>Rule-Based 방식</u><br />
<br />
Rule-Based 방식은 Cost-Based 방식에 비해 간단하다.<br />
여러 개의 가능한 PATH를 찾아 이미 정해져 있는 Rank를 기준으로 서로의 Cost를 비교하고, 이를 토대로 가장 효율적인 것을 선택한다.<br />
<br />
<br />
<table height="481" cellpadding="2" width="432" border="1">
<tbody>
<tr>
<td valign="center" width="12%">
<div align="center">옵 션</div>
</td>
<td valign="center" width="87%">
<div align="center">Access Path</div>
</td>
</tr>
<tr>
<td valign="center" width="12%">
<div align="center">1</div>
</td>
<td valign="center" width="87%"><br />
ROWID에 의한 단일 행 접근</td>
</tr>
<tr>
<td valign="center" width="12%">
<div align="center">2</div>
</td>
<td valign="center" width="87%"><br />
클러스터 조인에 의한 단일 행 접근</td>
</tr>
<tr>
<td valign="center" width="12%">
<div align="center">3</div>
</td>
<td valign="center" width="87%"><br />
Unique Key 또는 Primary Key를 사용하는 Hash Cluster Key에 의한 단일 행 접근</td>
</tr>
<tr>
<td valign="center" width="12%">
<div align="center">4</div>
</td>
<td valign="center" width="87%"><br />
Unique Key 또는 Primary Key에 의한 단일 행 접근</td>
</tr>
<tr>
<td valign="center" width="12%">
<div align="center">5</div>
</td>
<td valign="center" width="87%"><br />
클러스터 조인</td>
</tr>
<tr>
<td valign="center" width="12%">
<div align="center">6</div>
</td>
<td valign="center" width="87%"><br />
해시 클러스터 키</td>
</tr>
<tr>
<td valign="center" width="12%">
<div align="center">7</div>
</td>
<td valign="center" width="87%"><br />
인덱스 클러스터 키</td>
</tr>
<tr>
<td valign="center" width="12%">
<div align="center">8</div>
</td>
<td valign="center" width="87%"><br />
복합 키</td>
</tr>
<tr>
<td valign="center" width="12%">
<div align="center">9</div>
</td>
<td valign="center" width="87%"><br />
단일 컬럼 인덱스</td>
</tr>
<tr>
<td valign="center" width="12%">
<div align="center">10</div>
</td>
<td valign="center" width="87%"><br />
인덱스 컬럼에서의 바운드 범위 조회</td>
</tr>
<tr>
<td valign="center" width="12%">
<div align="center">11</div>
</td>
<td valign="center" width="87%"><br />
인덱스 컬럼에서의 언바운드 범위 조회</td>
</tr>
<tr>
<td valign="center" width="12%">
<div align="center">12</div>
</td>
<td valign="center" width="87%"><br />
소트 병합 조인</td>
</tr>
<tr>
<td valign="center" width="12%">
<div align="center">13</div>
</td>
<td valign="center" width="87%"><br />
인덱스 컬럼의 최대 또는 최소값</td>
</tr>
<tr>
<td valign="center" width="12%">
<div align="center">14</div>
</td>
<td valign="center" width="87%"><br />
인덱스 컬럼에서의 ORDER BY 사용</td>
</tr>
<tr>
<td valign="center" width="12%">
<div align="center">15</div>
</td>
<td valign="center" width="87%"><br />
테이블의 전체 검색</td>
</tr>
<tr>
<td></td>
</tr>
</tbody>
</table>
<br />
<b>1. ROWID에 의한 단일 행 접근</b><br />
문장의 WHERE절에 ROWID나 오라클 Precompiler에서 지원하고 있는 확장된 SQL 구문 구조의 CURRENT OF CURSOR에 의해 지정된 Row들이 식별될 수 있을 경우에만 사용이 가능. 문장을 실행하기 위해 ROWID에 의해 테이블을 검색한다.<br />
<br />
<b>2, 클러스터 조인에 의한 단일 행 접근</b><br />
- 문장의 WHERE절에 한 테이블의 클러스터 키의 각 칼럼과 그에 대응하는 다른 테이블의 컬럼을 같게하는 조건절을 가지고 있어야 한다.<br />
- 문장의 WHERE절에 조인이 단지 하나의 행을 리턴하는 것을 보증하는 조건절을 가지고 있어야 한다.<br />
이런 조건은 Unique 하거나 Primary Key인 컬럼의 '=' 조건절과 유사하다.<br />
<br />
위 두 조건이 만족할 경우에 사용.<br />
반드시 AND 연산자를 통하여 합쳐져야 한다.<br />
<br />
<b>3, Unique Key 또는 Primary Key를 사용하는</b><br />
<b>Hash Cluster Key에 의한 단일 행 접근</b><br />
- 문장의 WHERE절이 '='조건절에 해시 클러스터 키의 모든 컬럼을 사용하여야 한다. 합성된 클러스터 키인 경우는 '=' 조건절이 반드시 AND 연산자에 의해 연결되어야 한다.<br />
- 문장은 컬럼이 해시 클러스터 키를 만들 듯이 유일성이나 기본키를 만들어내기 때문에 단지 하나의 데이터 행만을 리턴한다.<br />
<br />
<b>4, 유일키 또는 기본키에 의한 단일 행 접근</b><br />
문장의 WHERE 절이 '=' 조건절에서 컬럼들의 유일성이나 기본키를 사용할 경우 사용될 수 있다. 복합된 키들에 대해 '=' 조건절은 AND 연산자를 통해 연결되어야 한다.<br />
이런 문장을 실행시키기 위해 오라클은 단일 ROWID를 구하기 위해 유일성이나 기본키의 인덱스를 이용해 유일 검색을 한다. 그리고 나서 이 ROWID를 이용해 테이블을 액세스한다.<br />
<br />
<b>5, 클러스터 조인</b><br />
두 Join 테이블이 같은 Cluster에 저장되고, 문장의 WHERE절에 한 테이블의 각 칼럼에 대해, 대응하는 테이블의 칼럼을 같게 하는 조건절을 포함하는 경우 사용될 수 있다. 복합 key에 대해 '=' 조건절은 반드시 AND 연산자에 의해 연결되어야 한다.<br />
<br />
<b>6, 해시 클러스터 키</b><br />
문장의 WHERE절에 Hash Cluster Key인 칼럼의 '=' 조건절이 있을 경우 사용되어질 수 있다. 복합 Cluster Key에 대해 '=' 조건절은 반드시 AND 연산자로 연결되어야 한다. 이런 문장을 실행하기 위해 Oracle은 문장에 기술된 Hash Cluster Key 값을 Cluster의 Hash Function에 적용해서 Hash 값을 구한다. 그리고 나서 Oracle은 이 Hash 값을 이용해 테이블에 대한 Hash Scan을 수행한다.<br />
<br />
<b>7, 인덱스 클러스터 키</b><br />
문장의 WHERE절에 Indexed Cluster Key인 칼럼의 '=' 조건절이 있는 경우 사용될 수 있다. 복합 Key에 대해서는 '=' 조건절은 반드시 AND 연산자로 연결되어 있어야 한다. 이런 문장을 실행하기 위해 Oracle은 Cluster Key에 의해 서술된 Row의 ROWID를 구하기 위해 Cluster Index에 대한 Unique Scan을 수행한다. 그리고 나서 Oracle은 이 ROWID과 Cluster Scan을 이용해 테이블을 액세스한다. 같은 Cluster Key 값을 가지는 모든 Row들이 같은 곳에 저장되기 때문에 Cluster Scan은 그 Row들을 찾기 위해 단지 하나의 ROWID만이 필요하다.<br />
<br />
<b>8, 복합 인덱스</b><br />
WHERE 절에 복합 index 칼럼들의 '=' 조건절이 AND 연산자에 의해 연결 되어있는 경우에 사용될 수 있다. 이런 문장을 실행하기 위해 Oracle은 Index 대한 Range Scan을 수행하여 선택된 Row들의 ROWID를 구하고 이것을 이용해 테이블을 액세스한다.<br />
<br />
<b>9, 단일 컬럼 인덱스</b><br />
문장의 WHERE 절에 하나나 그 이상의 단일 칼럼 Index의 '=' 조건절이 있는 경우에 사용되어질 수 있다. 여러 개의 단일 칼럼 Index에 대해 조건절은 반드시 AND 연산자에 의해 연결되어야 한다.<br />
<br />
만약 WHERE 절에 단지 하나의 Index 칼럼을 있을 경우 Oracle은 선택된 Row들의 ROWID를 구하기 위해 Range Scan을 수행함으로써 그 문장을 실행한다. 그리고 나서 구해진 ROWID를 이용해 테이블을 액세스한다.<br />
<br />
<b>10, 인덱스 컬럼에서의 바운드 범위 조회</b><br />
문장의 WHERE 절에 단일 칼럼 Index나 하나나 그이상의, 복합 Key의 한 중요한 부분이 되는 칼럼이 포함된 경우 사용될 수 있다.<br />
<br />
<b>11, 인덱스 컬럼에서 언바운드 범위 조회</b><br />
문장의 WHERE절에 단일 칼럼 Index의 칼럼이나 하나나 그이상의 , 복합 Index의 한 중요한 부분이 되는 칼럼 중 하나의 조건절을 가지고 있을 때 사용 가능하다.<br />
<br />
<b>12, 소트 병합 조인</b><br />
Join 테이블이 같은 Cluster에 저장되지 않고, 문장의 WHERE절에 있는 조건절이 Equailty 조건절이라면, 이 접근 경로가 사용될 수 있다. 이러한 문장을 실행하기 위해 Oracle은 Sort-Merge 연산을 사용한다.<br />
<br />
<b>13, 인덱스 컬럼의 최대 또는 최소값</b><br />
다음의 조건을 만족하는 SELECT 문장에 사용될 수 있다.<br />
<br />
- Query에 Single-Column Index나 Composite Index가 있는 칼럼의 최대값이나 최소값을 구하기 위해 MAX나 MIN 함수가 사용되는 경우. 여기서 Cluster Index는 제외.<br />
MAX와 MIN함수의 argument는 칼럼, 상수, + 연산자, || 연산자나 CONCAT 함수 등을 포함하는 어떠한 수식도 올 수 있다.<br />
- Select 절에 다른 수식이 오지 않아야 한다.<br />
- 문장은 WHERE절이나 GROUP BY 절이 없어야 한다.<br />
이런 Query를 실행하기 위해서 Oracle은 Index의 Range Scan을 이용해 최대값이나 최소값을 찾아낸다. 최대값이나 최소값을 찾게된다면 Oracle은 더 이상의 Scan은 하지 않는다.<br />
<br />
<b>14, 인덱스 컬럼에서의 ORDER BY 사용</b><br />
다음의 조건들을 만족하는 select 문에 사용될 수 있다.<br />
<br />
- Query에 ORDER BY절이 있어야하고, 그 ORDER BY절에 사용되는 칼럼은 Single-Column Index가 있거나, Composite Index의 Leading Portion이어야 한다.<br />
Cluster Index는 제외.<br />
- 그리고 PRIMARY KEY나 NOT NULL Integrity가 그 Index된 칼럼에 있어야 한다. ORDER BY절에 사용된 칼럼에 NULL이 있어서는 안 된다는 말이다.<br />
- NLS_SORT 매개변수가 BINARY로 설정되어야 한다.<br />
<br />
이런 Query를 실행하기 위해 Oracle은 Index의 Range Scan을 사용하여 정렬된 순서에서 해당 Row들의 ROWID들을 구한다. 그리고 나서 Oracle은 이 ROWID들을 이용해 해당 Row를 액세스한다.<br />
<br />
<b>15, 테이블의 전체 검색</b><br />
문장의 WHERE 절과 상관없이 모든 SQL문장에 사용될 수 있다.<br />
<br />
<u>Rule-Based 방식의 실행계획</u><br />
- 수행 가능한 실행계획을 구한다.<br />
- Rank Table에 따라서 순위를 결정한다.<br />
- 가장 낮은 순위를 선택하여 수행한다.<br />
<br />
<u>Cost-Based 방식의 실행계획</u><br />
- Rule-Based 방식이 실행계획을 구하는 것과 같은 방식으로 실행계획을 구한다.<br />
- 각 실행 계획에 대한 Cost를 구한다.<br />
Cost는 실행계획에 사용할 CPU Time, I/O 그리고 메모리를 기준으로 계산한다.<br />
- Cost를 비교해서 가장 낮은 실행계획을 선택하여 수행한다.<br />
<br />
<b>ANALYZE 명령어</b><br />
Cost-Based 방식에 사용할 통계데이터를 모아 준다.<br />
<br />
ANALYZE 명령어는 수행될 때마다 다음의 정보를 수정<br />
<br />
<u>TABLE</u><br />
- 테이블의 행수, 사용된 블록 수, 한번도 사용되지 않은 블록 수, 사용 가능한 Space의 평균, Chained Row 수,<br />
컬럼당 Distinct Value의 수, 컬럼당 두 번째로 가장 작은 값, 컬럼당 두 번째로 가장 큰 값.<br />
<br />
<u>INDEX</u><br />
- Index Level, Level 블록 수, Distinct Key 수,<br />
키당 Leaf 블록 수의 평균, 키당 Data 블록 수의 평균, Clustering Factor, 최소 키 값, 최대 키 값.<br />
<br />
<b>Hints 사용</b><br />
Optimizer는 데이터베이스 객체에 대한 얼마나 많고, 정확한 데이터를 가지고 있는가에 대한 의존도가 높아<br />
Optimizer가 더욱 효과적으로 SQL 연산을 수행하도록 사용자가 사용한다.<br />
<br />
Hint를 통하여 Optimizer에게 알려 줄 수 있는 사항<br />
- SQL 연산을 위한 Cost-Based 접근 방식의 목표,<br />
접근방식 지정, Index 보다 더 효과적인 Scan 방법, Join 순서, 병렬연산 등급, Join 연산.<br />
<br />
<u>Syntax</u><br />
/* + comment */<br />
comment를 Optimizer에게 알려 준다.<br />
Hint 기능 사용시 Syntax나 기타 오류가 발생하면 Optimizer는 오류 메시지를 사용자에게 전달하지 않고 이를 무시하고, 연산을 수행한다.<br />
<br />
<b>SQL TRACE</b><br />
SQL을 튜닝하기 위해 현재의 SQL 문장의 수행 상태를 정확히 파악해야 하고 튜닝 작업이 의도한 대로되었는지, 효과는 어느 정도인지 알아 볼 필요가 있을 때 SQL Trace를 사용한다.<br />
<br />
SQL Trace를 이용해 얻을 수 있는 정보(<b>V$SESSION</b>)<br />
- CPU TIME, 총 수행 시간, 물리적 또는 논리적 I/O, Library Cache, Parse Count, Execute Count, Fetch Count, 수행 Recode 수.<br />
<br />
<u>SQL Trace의 초기화</u><br />
초기 파라미터<br />
<b>TIMED_STATISTICS, MAX_DUMP_FILE_SIZE</b><br />
<b>USER_DUMP_DEST</b><br />
세션 초기화<br />
<b>ALTER SESSION SET SQL TRACE = TRUE</b><br />
<br />
사용중인 애플리케이션의 SQL 튜닝<br />
<br />
<b>분석 및 오류 찾기</b><br />
<br />
<u>Index</u><br />
Index 는 Select 연산의 성능을 높이는 요소이나 Update와 Insert 시에는 부하로 작용한다.<br />
현재의 Table에서 Index 들이 정확하게 생성되어 제기능을 다하고 있는지 확인해야 한다.<br />
또한 EXPLAIN PLAN 기능을 사용하여 Index 들이 올바르게 사용되고 있는지 확인해야 한다.<br />
<br />
<u>동시 사용자</u><br />
개발 단계에서 동시 사용자를 생각하지 않을 수 도 있고 Test 해볼 환경이 안될 경우도 있다.<br />
많은 동시 사용자가 하나 혹은 두 개의 Table에 집중되어 있을 경우 개발단계에서는 발견되지 않았던 자원의 경쟁이 일어난다.<br />
이 경우 Disk I/O 집중화 현상이 일어나는 데 우선 여러 Disk에 걸쳐서 데이터 파일을 구성하여 I/O를 분산시키고 크기가 작은 Table은 Table 생성을 다시 하여 블록 당 레코드 수를 줄이는 방법을 사용한다.<br />
<br />
<b>병목 현상 찾기</b><br />
병목 현상을 일으키는 SQL 연산을 찾는 것은 힘든 일이다.<br />
EXPLAIN PLAN 기능을 사용하여 CPU Time, 총 수행 시간, SQL 최적화 상태를 파악하고 액세스 경로를 변경하거나 조회되는 레코드 수를 줄이는 방법 등을 찾는다.<br />
<br />
애플리케이션 개발과정의 SQL 튜닝<br />
<br />
<b>INDEX</b><br />
- Index 사용을 고려해야 하는 Table의 특성<br />
Select 연산 결과가 전체 Record 수의 5% 이내인 큰 Table, 중복된 데이터가 적은 Table, Insert, Update, Delete 연산이 적은 Table, Query 수행시 조건이 간략한 Table.<br />
<br />
- Index 사용을 피해야 하는 Table의 특성<br />
Select 연산시 결과가 전체 Record 수의 5% 이상인 Table, 중복된 Data가 많은 Table, Select 연산이 주로 일어나는 Table, Query 수행시 조건절이 매우 복잡한 Table.<br />
<br />
<b>CLUSTER</b><br />
장점은 하나의 I/O 연산으로 여러 Table의 정보를 액세스 할 수 있다는 것이다 그러나 Index와 같이 성능을 저하시킬 수 있다.<br />
<br />
- Cluster를 사용하지 않아야 할 경우<br />
Insert 연산이 많은 경우, Cluster 구성 Table 중 하나의 Table에 Full Scan이 자주 일어나는 경우, Cluster 구성 Table들이 동시에 액세스되지 않는 경우가 많을 때.<br />
<br />
<b>HASH CLUSTER</b><br />
데이터 블록을 액세스하기 위해 여러 번의 내부 절차를 거쳐야 하는데 해시 클러스터는 한번에 그 일을 다하기 때문에 속도가 가장 빠르다.<br />
<br />
그러나 해시 키값이 변하지 않아야 하고 Table이 정적이어야 한다는 단점 때문에 많이 사용하지 않는다.<br />
<br />
<b>JOIN</b><br />
오라클 시스템 자원을 많이 소비하는 연산이다.<br />
<br />
- EQUIJOIN<br />
조건절 Equality Condition(=)에 의해 조인이 이루어진다.<br />
<br />
Equijoin의 성능을 높이기 위해서는 Index 기능을 사용해야 한다.<br />
자주 사용되는 연산의 경우는 Cluster 기능사용을 고려하는 것도 좋다.<br />
<br />
- SELFJOIN<br />
EQUIJOIN과 같으나 하나의 Table에서 조인이 일어나는 것이 다르다.<br />
조건절에 있는 컬럼에 Index를 생성하여 성능을 높여야 한다.<br />
<br />
- Outer Join<br />
Equijoin과 비슷하나 결과는 만족하는 레코드뿐 아니라 만족하지 않는 레코드도 출력한다.<br />
<br />
<u>Best Throughput</u><br />
조인 연산시 튜닝의 목표이며, 오라클 Optimizer에게 USE_MERGE Hint를 주어야 한다.<br />
<br />
<u>Best Response Time</u><br />
조인 연산시 튜닝의 목표이며, Optimizer에게 USE_NL Hint를 주어야 한다.<br />
<br />
병렬 조회<br />
Single Server Process가 수행하는 하나의 SQL 연산을 동시에 Multiple Server Process가 나누어 수행하는 것이다.<br />
<img height="155" hspace="3" src="http://zenos.pe.kr/oracle/oracle_tuning_img/o9-9.gif" width="392" align="left" vspace="3" border="0" /><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<b>PQP (Parallel Quer Processing) 튜닝</b><br />
<br />
<u>System</u><br />
I/O 대역폭 용량이 큰 System, CPU 성능이 우수한 System, Sort를 위한 메모리가 충분한 System에는 PQP가 좋은 결과를 가져온다.<br />
<br />
<u>I/O</u><br />
PQP는 데이터 파일이 많은 디스크에 걸쳐서 분산되어 있는 환경에 적합하다.<br />
<br />
디스크 분산을 하는 방법 중에는 랜덤 액세스가 많은 애플리케이션 환경에서는 OS 기능을 사용하고 일정량의 특정 부분 데이터를 자주 액세스하는 환경에서는 사용자가 직접하는 방법이 유리하다.<br />
분산되는 최소의 단위는 DB_FILE_MULTIBLOCK_READ_COUNT의 2-3배가 되도록 해야 한다.<br />
<br />
Sort를 위한 임시 스페이스는 여러 개의 디스크를 합쳐서 만들어야 PQP 도중 Sort, Merge에 걸리는 시간을 단축할 수 있다.<br />
<br />
<u>Parallel Degree</u><br />
Parallel Degree는 성능에 미치는 영향이 매우 크다.<br />
그러므로 많은 반복적인 시험을 통하여 결정해야 한다.<br />
<br />
<b>3. 오라클 인스턴스 튜닝</b><br />
<br />
메모리 튜닝<br />
<br />
<b>운영체제 튜닝</b><br />
운영체제에서 저장장치는 "Real Memory", "Virtual Memory", "Expended Storage", "Disk" 등이 있다.<br />
O/S에 따라 Paging 또는 Swapping이 발생하면 많은 I/O를 동반하기 때문에 이 들이 일어나지 않게 하는 것이 주목적이다.<br />
이를 위해서는 제한적인 메모리로 사용자들에게도 적당한 양을 할당하고 SGA에도 적절하게 할당해야 한다.<br />
<br />
UNIX 환경에서는 "sar" 명령어나 모니터링 툴을 이용하여 상태를 확인한다.<br />
<br />
<b>SGA 튜닝</b><br />
Data Dictionary Cache나 Library Cache에서 Miss가 발생하지 않도록 Shared Pool에 충분한 영역을 할당할 수 있도록 한다.<br />
<br />
<b>Private SQL, PL/SQL Area 튜닝</b><br />
튜닝의 목적은 Parse 발생 횟수를 줄이는 것이다.<br />
SQL Trace 기능을 이용해서 Parse 단계에서의 Count 수와 Execute 단계에서의 Count 수가 거의 같은 수로 판단되면 이를 줄여야 한다.<br />
<br />
Private SQL, PL/SQL Area의 크기를 증가시키려면 초기 파라미터 파일의 OPEN_CURSORS 값을 증가시킨다.<br />
<br />
<b>Shared Pool 튜닝</b><br />
튜닝의 목적은 Parse Call 수, Execute Call 수 등을 줄이고, Data Dictionary Cache에 대한 Miss를 최소화해서 오라클 성능을 최대한으로 극대화하는데 있다.<br />
<br />
<u>Library Cache 튜닝</u><br />
Library Cache Miss는 Parse 단계와 Execute 단계에서 일어난다.<br />
Cache Hit Rate 가 떨어지면 영역을 키우는 것이 튜닝 방법이다.<br />
<br />
+ V$LIBRARYCACHE Table<br />
DBA 권한을 가진 사용자만이 조회가능<br />
<b>SELECT SUM(pins) "Executions"</b><br />
<b>SUN(reloads) "Cache Misses while Executing"</b><br />
<b>FROM v$librarycache;</b><br />
<b>Executions Cache Misses while Executing</b><br />
<b>--------- -------------------------</b><br />
<b>320871 549</b><br />
<br />
<b>RELOADS Ratio = (reloads(549)/pins(320871)) * 100 = 0.17%</b><br />
PINS : Library Cache 내의 항목이 실행된 수<br />
RELOADS : 실행 단계에서의 Library Cache Miss의 수<br />
<br />
RELOADS는 0에 가까워야 하고 PINS에서 RELOADS의 비율이 1% 이상이면 Library Cache Miss를 줄인다.<br />
<br />
+ Library Cache Miss 줄이는 방법<br />
더 많은 메모리를 할당하고 SQL을 사용할 때 다음 사항을 주의해야 한다.<br />
1, 다음은 다른 것으로 간주하여 Shared SQL Area를 공유할 수 없다.<br />
<b>SELECT * FROM emp;</b><br />
<b>SELECT * FROM Emp;</b><br />
2, 다른 사용자가 같은 이름의 Table을 가지고 있을 경우. 이 경우는 소유자를 표시해서 사용한다.<br />
<b>SELECT * FROM BOB.emp;</b><br />
3, SQL 문장 내에서 바인드 변수는 이름과 데이터 타입이 틀려서는 안 된다.<br />
<b>SELECT * FROM emp WHERE deptno =:department_no;</b><br />
<b>SELECT * FROM emp WHERE deptno =:d_no;</b><br />
4, 상수 대신 같은 이름과 데이터 타입을 가진 바인드 변수를 사용한다.<br />
<br />
<u>Data Dictionary Cache 튜닝</u><br />
인스턴스가 Startup 되는 시점에 Data Dictionary Cache에 데이터들이 없기 때문에 Miss가 발생.<br />
사용할 수 있는 메모리를 증가시키기 위해 SHARED_POOL_SIZE를 증가시킨다.<br />
<br />
<b>Buffer Cache 튜닝</b><br />
Cache Hit Ratio를 높이는 것이 튜닝의 목적이다.<br />
<br />
<u>V$SYSSTAT</u><br />
DBA 사용자만 조회가 가능하고 Cache Hit Ratio를 구할 수 있다.<br />
DB BLOCK GETS, CONSISTENT GETS : 합은 데이터를 요구하는 총 횟수.<br />
PHYSICAL READS : 디스크상의 데이터 파일을 액세스한 Request의 총 횟수.<br />
<br />
<b>SELECT name, value</b><br />
<b>FROM v$sysstat</b><br />
<b>WHERE name IN ('db block gets', 'consistent gets',</b><br />
<b>'physical reads');</b><br />
<br />
<b>Cache Hit Ratio = 1- (physical reads / (db block gets + consistent reads))</b><br />
<br />
Hit Ratio가 60-70% 보다 작다면 성능 향상을 위해 Cache에서 Buffer 수를 증가시켜야 하는데<br />
DB_BLOCK_BUFFERS 값을 크게 하면 된다.<br />
<br />
<u>X$KCBRBH</u><br />
Buffer 수가 증가함에 따라 Cache Hit Ratio의 변화를 알 수 있는 Table이다.<br />
Buffer 수를 조정한 후에 그 효과를 알아보기는 좋으나 이를 수행함에 따라 부하가 발생한다는 것을 명심해야 한다.<br />
<br />
X$KCBCBH<br />
Buffer를 줄임으로서 나타나는 ACM(Additional Cache Miss) 값을 알아보는 Table.<br />
<br />
<b>DB_BLOCK_LRU_STATISTIC = TRUE</b><br />
<br />
예) 현재 Buffer가 100이라면 90으로 줄였을 때 ACM?<br />
<b>SELECT SUM(count) acm</b><br />
<b>FROM sys.x$kcbcbh</b><br />
<b>WHERE indx &gt;= 90;</b><br />
<br />
<b>INDX : Cache 내의 가능한 Buffer 수</b><br />
<b>COUNT : INDX에 기인한 ACM</b><br />
<br />
I/O 튜닝<br />
<br />
애플리케이션이 시스템의 어떤 자원을 사용하느냐에 따라 I/O Bound 업무와 CPU Bound로 구분할 수 있다.<br />
실제 애플리케이션이 물리적 Read/Write 연산에 많은 시간을 소비하고 있기 때문에 I/O에 대한 튜닝이 중요하다.<br />
<br />
<b>디스크 마찰(Disk Contention)</b><br />
동시에 많은 사용자가 같은 디스크 블록을 Access 하고자 할 때 발생하는 현상.<br />
<br />
<u>V$FILESTAT</u><br />
<b>SELECT name, phyrds, phywrts</b><br />
<b>FROM V$datafile df, V$filestat fs</b><br />
<b>WHERE df.file# = fs.file#</b><br />
<br />
+ phyrds : 각 데이터 파일을 읽는 횟수<br />
+ phywrts : 각 데이터 파일에 저장한 횟수<br />
<br />
<u>I/O 분산</u><br />
디스크나 디스크 컨트롤러에 초과되는 Request 처리를 요구받은 디스크들을 찾아내어 이들을 분산시키는 것이다.<br />
<br />
- 데이터 파일, 리두 로그 파일 분리<br />
리두 로그 파일은 트랜잭션이 완료되면 그에 대한 로그를 기록하는 파일이다. 또 한 Request를 순차적으로 받아 처리한다.<br />
그러므로 Random 액세스가 주로 일어나는 데이터 파일과 분리하면 그 효과가 크다.<br />
장애에 대비하여 미러링 하는 것이 좋다.<br />
<br />
- Striping<br />
하나의 데이터를 세그먼트로 분할하여 여러 개의 디스크 장치로 분산시키는 것.<br />
<br />
- Table과 Index 분리<br />
Table에 저장되어 있는 데이터를 access하기 위해서는 Index를 참조하는데 이 들이 한 디스크에 있을 경우는<br />
특정 디스크에 과부하가 발생한다.<br />
<br />
- 오라클 사용 디스크 분리<br />
다른 애플리케이션 요소나, OS에서 사용하는 디스크들을 서로 분리하는 것이 오라클에 대한 외부의 영향을 최소화할 수 있다.<br />
<br />
<b>데이터 블록</b><br />
데이터들은 Table 안에 데이터 블록이라는 단위 영역별로 저장된다.<br />
한 데이터 블록에 많은 데이터가 있어야 성능에 도움이 되는 경우가 있고, 적어야 도움이 되는 경우도 있다.<br />
사용중에 데이터 블록이 더 필요해서 계속 할당받으면 성능이 저하될 수 있기 때문에 이를 방지하기 위한 노력이 필요하다.<br />
<br />
<u>Update/Insert 연산과 데이터 블록</u><br />
- Migration : Update가 자주 발생하여 데이터 블록에 더 이상 데이터를 저장할 공간이 없는 경우 오라클은 충분히 큰 데이터 블록을 찾아서 원래 데이터 블록에 있는 내용들을 새로운 곳으로 이동시킨다.<br />
- Chaining Row : 충분히 큰 데이터 블록이 없는 경우 원래 데이터 블록의 데이터를 나누어서 다른 데이터 블록에 분산 저장한다.<br />
<br />
Migration과 Chaining을 방지하는 근본적인 방법은 충분히 큰 데이터 블록을 할당해 주는 것이다.<br />
Table 생성시 PCTUSED, PCTFREE 기능을 사용하여 Update, Insert 연산시 필요한 영역을 데이터 블록에 마련하는 방법도 있다.<br />
<br />
<b>이미 발생한 Migration과 Chaining의 처리 방법</b><br />
<br />
+ ANALYZE 명령을 이용해 정보를 구한다.<br />
<b>ANALYZE TABLE order_hist LIST CHAINED ROWS;</b><br />
<br />
+ 출력 데이터를 본다.<br />
<b>SELECT OWNER_NAME, TABLE_NAME,</b><br />
<b>HEAD_ROWID, TIME</b><br />
<b>FROM chained_rows</b><br />
<b>WHERE table_name = 'ORDER_HIST';</b><br />
<br />
+ Migrated되거나 Chain된 데이터 행을 가지고 있다면 다음 단계를 거쳐 이러한 행들을 제거한다.<br />
- Migrate되거나 Chain된 데이터 행을 가지고 있는,<br />
실제 Table과 같은 컬럼을 가지고 있는 임시 테이블을 생성한다.<br />
- 실제 Table에서 Migrate되고, Chain된 데이터 행들을 지운다.<br />
- 임시 Table의 데이터 행들을 실제 테이블에 Insert한다.<br />
- 임시 Table을 제거한다.<br />
<br />
+ 출력 Table에서 모아진 정보를 지운다.<br />
<b>DELETE FROM chained_row</b><br />
<b>WHERE table_name = 'ORDER_HIST';</b><br />
<br />
+ 다시 ANALYZE 명령을 이용해 정보를 모으고, 그 정보를 본다.<br />
+ 출력 파일에 Row가 나타나면 데이터 블록의 크기를 증가시켜 이전 Chain된 행을 없앤다.<br />
<br />
모든 상황에서 이런 Chaining을 피할 수는 없다.<br />
만약 LONG 컬럼이나 긴 CHAR, VARCHAR2 컬럼을 가지고 있다면 이런 Chaining을 피할 수 없다.<br />
<br />
<b>Dynamic Space Management 최소화</b><br />
DB 객체들의 생성 초기에 할당받은 영역이 사용 중에 부족하면 이들을 증가시켜야 한다.<br />
이런 현상은 과다한 I/O Request를 동시에 발생시키므로 성능에 저해요소가 된다.<br />
그러므로 객체를 생성할 때 예상되는 스페이스를 미리 할당하는 것이 바람직하다.<br />
<br />
<u>동적 확장 검사</u><br />
Recursive Call : 사용자가 수행하는 SQL 연산과 함께 오라클 사용자들이 요구한 SQL 문장을 수행하기 위해 새로운 SQL 문장들을 만들어 수행.<br />
<br />
+ Recursive Call이 발생하는 경우<br />
- Data Dictionary Cache에 Miss가 발생했을 경우<br />
- 데이터베이스 트리거 수행<br />
- DDL 문장의 실행<br />
- Stored Procedure, Function, Package 그리고 Anonymous PL/SQL 블록 등이 가지고 있는 SQL 문장의 수행<br />
- Referential Integrity Constraint의 실행<br />
<br />
<b>SELECT name, value</b><br />
<b>FROM v$sysstat</b><br />
<b>WHERE name = 'recursive calls';</b><br />
<br />
<u>Extent의 확장</u><br />
큰 Extent 안에 여러 개의 데이터 블록을 한 번에 액세스하는 것이 성능 향상에 좋다.<br />
그러므로 Table 중 성능이 빠른 것은 여러 개의 작은 Extent를 자주 할당받게 하는 것보다 큰 Extent가 한번에 할당되도록 하는 것이 좋다.<br />
<br />
Contention 튜닝<br />
<br />
<b>Rollback Segment Contention</b><br />
롤백세그먼트 블록을 포함하는 버퍼를 기다리는 수를 보고 판단할 수 있는데 V$WAITSTAT를 이용해서 rollback segment에 대한 contention이 성능을 감소시키고 있는지 어떤지를 결정할 수 있다.<br />
<br />
Default로서 이 테이블은 SYS 유저와 SYSTEM와 같은 SELECT ANY TABLE 시스템 권한을 가진 다른 유저들만이 사용할 수 있다.<br />
<b>SELECT class, count</b><br />
<b>FROM v$waitstat</b><br />
<b>WHERE class IN ('system undo header',</b><br />
<b>'system undo block',</b><br />
<b>'undo header', 'undo block');</b><br />
<pre>
<b>       CLASS                    COUNT</b> <br />
<b>-------------------      -------------</b> <br />
<b>system undo header                2089</b> <br />
<b>system undo block                 633</b> <br />
<b>undo header                       1235</b> <br />
<b>undo block                        942</b> 
</pre>
<br />
<br />
·system undo header : SYSTEM rollback segment의 header block을 포함하는 buffer를 기다리는 수이다.<br />
·system undo block : SYSTEM rollback segment의 header block 이외의 다른 block들을 포함하는 buffer를 기다리는 수이다.<br />
·undo header : SYSTEM rollback segment의 header block 이외의 다른 rollback segment의 header block을 포함하는 buffer들을 기다리는 수이다.<br />
·undo block : SYSTEM rollback segment이외의 다른 rollback segments 의 header block과는 다른 blocks을 포함하는 buffer들을 기다리는 수이다.<br />
<br />
위에 나타난 class 별로 기다리는 Buffer 수와 같은 시간 동안 총 Request 수를 비교하면 Contention 정도를 알<br />
수 있다.<br />
<br />
<b>SELECT SUM(value)</b><br />
<b>FROM v$sysstat</b><br />
<b>WHERE name IN ('db block gets', 'consistent gets');</b><br />
<br />
<b>SUM(VALUE)</b><br />
<b>------------</b><br />
<b>929530</b><br />
이 결과값과 각 Class별 Count값들을 비교해서 1%가 넘으면 롤백 세그먼트의 수를 늘려야 한다.<br />
<br />
<b>Redo Log Buffer Contention</b><br />
리두 로그 파일에 Log Entry를 기록하기 위해서는 리두 로그 버퍼를 거쳐서 내려가야 하는데 Request 가 많을 경우 사용자 프로세스는 대기하는 시간이 길어지게 된다. 이를 단축시키기 위해 리두 로그 버퍼를 늘려 주어야 한다.<br />
<b>SELECT name, value</b><br />
<b>FROM v$sysstat</b><br />
<b>WHERE name = 'redo log space requests';</b><br />
<br />
결과 값이 0에 가까울 때까지 5%씩 리두 로그 버퍼 수를 늘려야 하는데 이는 오라클 초기 파라미터의 LOG_BUFFER의 값을 키우면 된다.<br />
<br />
<b>Redo Log Buffer Latch</b><br />
리두 로그 버퍼 액세스는 Latch에 의해서 조정된다.<br />
<br />
- Redo Allocation Latch<br />
리두 로그 버퍼에서 Redo Entry를 위한 공간을 할당하는 것을 제어한다.<br />
Buffer에 공간을 할당할 때는 오라클 사용자 프로세스가 반드시 Redo Allocation Latch를 가지고 있어야 한다.<br />
만약 하나의 Redo Allocation Latch가 있다면 한 번에 단 하나의 사용자 프로세스만 버퍼에 공간을 할당하는 것이 가능하다.<br />
초기 파라미터의 LOG_SMALL_ENTRY_MAX_SIZE값에 따라 정해진다.<br />
<br />
Contention을 최소화 하려면<br />
LOG_SMALL_ENTRY_MAX_SIZE값을 감소시킨다.<br />
<br />
- Redo Copy Latch<br />
Redo Entry가 너무 커서 Redo Allocation Latch에 복사할 수 없다면, 사용자 프로세스는 버퍼에 Entry를 복사하기 전에 Redo Copy Latch를 갖고 있어야만 한다.<br />
Redo Copy Latch를 잡고 있는 동안 사용자 프로세스는 버퍼에 할당된 공간 안에 Redo Entry를 복사한 후 Redo Copy Latch를 해제하게 된다.<br />
Redo Copy Latch의 수는 초기 파라미터 LOG_SIMULTANEOUS_COPIES에 의해 결정된다.<br />
<br />
Contention을 최소화하려면<br />
LOG_SIMULTANEOUS_COPIES의 기본값은 현재 CPU의 수로 되어 있는데 이를 두 배정도 늘리면 성능에 도움이 된다.<br />
<br />
Sort 튜닝<br />
대부분 애플리케이션에는 기본 Sort 영역으로도 성능상 무리는 없으나, 필요에 따라서 Sort 영역이 부족하다고 판단되면 이를 늘려야 한다. (오라클 초기 파라미터 SORT_AREA_SIZE 값을 증가)<br />
<b>SELECT name, value</b><br />
<b>FROM v$sysstat</b><br />
<b>WHERE name IN('sorts(memory)', '(sorts(disk)');</b><br />
<br />
<u>sorts(memory)</u> : 디스크상의 Temporary Segment와 I/O 없이 Sort 영역에서만 이루어지는 Sort 수.<br />
<u>sorts(disk)</u> : Sort 영역에서만 처리하기에는 데이터가 너무 커서 Temporary Segment와 I/O가 필요한 Sort 수.<br />
<br />
Sort 영역을 크게 하면 Sort 관련 작업들은 속도가 향상되나, Private SQL과 PL/SQL을 위한 메모리 등 다른 요소에 영향을 줄 수 있으므로 주의해야 한다.<br />
<br />
- NOSORT<br />
Index 생성시 Sort가 발생한다. 반드시 Sort할 필요가 없는 Index는 NOSORT 기능을 사용하여 부하를 줄이는 것이 좋다.<br />
<b>CREATE INDEX emp_index</b><br />
<b>ON emp(ename)</b><br />
<b>NOSORT;</b><br />
<br />
Free List Contention 튜닝<br />
동시에 한 Table에 Insert 연산이 많이 발생하는 경우에는 Free List가 부족한 현상이 발생하고 이는 성능 저해 요인이 된다.<br />
<b>SELECT class, count</b><br />
<b>FROM v$waitstat</b><br />
<b>WHERE class = 'free list';</b><br />
Free List 대기 횟수의 비율이 1% 이상이면 충돌감소를 위해 Free List의 추가 배정을 고려한다.<br />
<br />
FREELISTS Storage Parameter값을 증가하여 Table을 다시 생성하면 된다.<br />
<br />
Checkpoint 튜닝<br />
Checkpoint가 자주 발생하면 만약의 경우에 발생할 인스턴스 Failure와 같은 상황에서 Recovery 시간을 줄여 주지만, 오라클 성능 저하 요인이 되기도 한다.<br />
수행속도가 중요한 환경에서는 Checkpoint 빈도수를 줄이고, 안정성이 중요한 환경에서는 Checkpoint 빈도수를 늘린다.<br />
<br />
- Checkpoint 빈도수를 최소화하려면<br />
LOG_CHECKPOINT_INTERVAL값을 가장 큰 Redo Log 파일보다 크게 세팅.<br />
LOG_CHECKPOINT_TIMEOUT값을 0으로 세팅.<br />
- Checkoint 빈도수를 늘리려면<br />
LOG_CHECKPOINT_INTERVAL값을 작게 세팅.<br />
LOG_CHECKPOINT_TIMEOUT값을 작게 세팅.<br />
<br />
초기 파라미터에서 CHECKPOINT_PROCESS = TRUE<br />
<br />
<b>4. 서버 튜닝</b><br />
<br />
프로세스(Process)<br />
전체 사용자 프로세스 수와 오라클 인스턴스 관련 프로세스 수 그리고 OS 관련 프로세스 수들의 합이 전체 프로세스의 수가된다.<br />
<br />
전체 프로세스 수의 10-30% 이상의 프로세스들이 지장 없이 수행될 수 있는 환경을 제공해야 한다.<br />
오라클 인스턴스 프로세스와 오라클 사용자 프로세스는 우선 순위를 같게 해야 한다.<br />
<br />
메모리<br />
SGA가 작은 경우 CPU idle 상태가 많이 발생한다.<br />
이는 SGA가 작아서 오라클 인스턴스는 I/O Wait에 많은 시간을 소비하기 때문이다.<br />
<br />
NetWare, NT 환경<br />
- 다른 프로세스와 같은 메모리를 사용.<br />
UNIX 환경<br />
- Shared 메모리라는 특수한 종류의 메모리를 사용.<br />
- Page Size Entension(PSE)라는 기능(OS 부팅시 오라클을 위해 미리 많은 양의 메모리를 예약)을 사용하면 성능에 많은 도움이 되나, 이 메모리를 오라클이 다 사용하지 않아도 다른 프로세스는 사용할 수 없다.<br />
<br />
I/O<br />
중요한 튜닝 요소는 I/O 대역폭, I/O 메소드, 블록 크기.<br />
<br />
<u>블록 크기</u>는 I/O 부하와 많은 관계가 있다.<br />
OLTP, 랜덤 액세스가 많은 환경 - 2k 또는 4k<br />
DSS, 시퀀셜 액세스가 많은 환경 - 4k 또는 8k<br />
<br />
OS 블록 크기와 DB 블록 크기를 같게 하거나 OS 블록크기가 DB 블록 크기에 두 배가 되도록 하는 것이 성능을 좋게 하는 요인이 된다.<br />
<br />
<u>I/O 메소드</u> 중에는 OS 파일 시스템 버퍼를 사용하는 일방적인 방식이 있고, OS 파일 시스템 버퍼를 사용하지 않는 Raw Device 방식이 있다.<br />
+ Sun Solaris : Filesystem, Raw Device에서 Async I/O 사용가능<br />
+ SCO : Raw Device에서 Async I/O 사용가능<br />
+ Pyramid : Raw Device에서 Async I/O 사용가능<br />
+ Sequent : Raw Device에서 Async I/O 사용가능<br />
<br />
Raw Device 방식은 OS의 부하를 줄일 수 있고, I/O 성능을 높일 수 있다.<br />
<br />
Asynchronous I/O 방식은 오라클 I/O 성능을 크게 높일 수 있는 방법이다.<br />
O/S 는 Request들을 모아서 디스크 컨트롤러를 요구하고 다른 작업을 할 수 있다.<br />
나중에 디스크 컨트롤러에서 응답이 오면 인터럽트를 받는다.<br />
Asynchronous I/O 방식은 다른 방식과 비교하여 10-30%의 성능을 향상시킬 수 있다.<br />
<br />
예) SCO UNIX<br />
<b>$chown oracle /dev/async</b><br />
<b>$chgrp dba /dev/async</b><br />
<b>ASYNC_WRITE = TRUE</b><br />
<br />
UnixWare<br />
<b>$chown oracle /dev/async</b><br />
<b>$chgrp dba /dev/async</b><br />
<b>USE_ASYNC_TO = TRUE</b><br />
<b>LGWR_USE_ASYNC_IO = TRUE</b><br />
<br />
Post-Wait Semaphore<br />
오라클이 사용자에게 Sleeping Signal을 줄 수 있게하고, 다시 일을 할 수 있게 해주는 새로운 형태의 Semaphore이다.<br />
CPU의 Idle Cycle을 크게 줄여 성능을 향상시킨다.<br />
<br />
Post-Wait Semaphore의 기능을 사용하려면.<br />
- 오라클 초기 파라미터 수정.<br />
<b>USER_POST_WAIT_DRIVER = TRUE</b><br />
<b>POST_WAIT_DEVICE = /dev/pw</b><br />
Device 이름은 시스템마다 다를 수 있다.<br />
- Device의 사용 권한을 수정.<br />
<b>%chown oracle /dev/pw</b><br />
<b>%chgrp dba /dev/pw</b><br />
- Post-Wait Device가 사용되는지 확인.<br />
<b>%ipcs</b><br />
<br />
<b>5. Performance Parameter</b><br />
<br />
오라클 초기 파라미터 변수들은 오라클 성능에 많은 영향을 준다.<br />
이 변수들을 이해하고 필요에 따라서 적절하게 수정하고 사용하면 성능 향상에 많은 도움이 된다.<br />
<br />
[참고. 교제 491-497]<br />
<br />
<br />
<br />
<br />
<center><a href="http://cybers.yonsei.ac.kr/ljh/db/orcle/oracle_adv/text/o_content.htm" target="_blank"></a></center>
<br />
<br /></div>
</td>
</tr>
</tbody>
</table>
			 ]]> 
		</description>
		<category>튜닝</category>

		<comments>http://webgosu.egloos.com/9123231#comments</comments>
		<pubDate>Fri, 23 Jan 2009 04:47:46 GMT</pubDate>
		<dc:creator>webgosu</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 제우스 원터치 실행과 끄기 jboot.bat / jdown.bat 만들기 ]]> </title>
		<link>http://webgosu.egloos.com/9123232</link>
		<guid>http://webgosu.egloos.com/9123232</guid>
		<description>
			<![CDATA[ 
  <div id="contents">jboot.bat / jdown.bat 만들기<br />
환경변수에 path = "C:\Jeus5.0\bin" 추가</div>
<div>jboot.bat<br />
jeus -xml -Uadministrator -Pjeusadmin<br />
유저 패스워드<br />
jdown.bat<br />
jeusadmin kimsi -Uadministrator -Pjeusadmin jeusexit<br />
호스트네임 유저 패스워드<br />
<br />
위 두개 파일을 C:\Jeus5.0\bin에 복사</div>
<div>jboot.bat 클릭시 자동으로 제우스 실행과 동시에 제우스 어드민 까지 실행됨</div>
<div>jdown.bat 클릭시 제우스 어드민까지 모두 종료</div>
<div>
<div>한번에 사용하기 좋은 유용한 팁 입니다.
<div class="autosourcing-stub">
<div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: 12px; PADDING-BOTTOM: 0px; MARGIN: 11px 0px 7px; PADDING-TOP: 0px; FONT-STYLE: normal; FONT-FAMILY: Dotum"><strong style="PADDING-RIGHT: 7px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">[출처]</strong> <a href="http://blog.naver.com/funcyboy/80031061752" target="_blank"><font color="#0000FF">제우스 원터치 실행과 끄기 jboot.bat / jdown.bat 만들기</font></a><span style="PADDING-RIGHT: 7px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">|</span><strong style="PADDING-RIGHT: 7px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">작성자</strong> <a href="http://blog.naver.com/funcyboy" target="_blank"><font color="#0000FF">웃음바다</font></a></div>
</div>
</div>
</div>
			 ]]> 
		</description>
		<category>JEUS</category>

		<comments>http://webgosu.egloos.com/9123232#comments</comments>
		<pubDate>Tue, 20 Jan 2009 00:50:52 GMT</pubDate>
		<dc:creator>webgosu</dc:creator>
	</item>
</channel>
</rss>
