.
.
.
2003³â 11¿ù 28ÀÏ    

Enterprise Java Technologies Tech Tips¿¡ ¿À½Å ¿©·¯ºÐÀ» ȯ¿µÇÕ´Ï´Ù. Java 2 Platform, Enterprise Edition (J2EE)¿¡ ±â¹ÝÇÑ enterprise Java technologies ¿Í APIsÀÇ »ç¿ë¿¡ °üÇÑ ÃֽŠÁ¤º¸¸¦ ¾ò¾î °¡½Ã±â ¹Ù¶ø´Ï´Ù. ÀÌ ±Û¿¡¼­´Â Java 2 SDK, Standard Edition, v 1.4¿Í Java 2 SDK, Enterprise Edition, v 1.3.1 (Reference Implementation)¸¦ »ç¿ëÇÕ´Ï´Ù.

À̹ø È£¿¡¼­´Â,

.JNDIÀÇ ¼Ò°³
.Entity Resolver ÀÛ¼ºÇϱâ

ÀúÀÚ Mark Johnson

¿¹Á¦ÀÇ »ùÇà ¾ÆÄ«À̺긦 ´Ù¿î·Îµå ¹ÞÀ¸¼¼¿ä. ÄÁÅØ½ºÆ® ·çÆ®´Â ttaug2003ÀÌ°í »ùÇÃÄÚµåÀÇ »ç¿ë¹ýÀº index.html welcome file ¿¡¼­ º¸½Ç ¼ö ÀÖ½À´Ï´Ù. ÀÌ ÄÚµåÀÇ »ç¿ë¿¡ °üÇÑ ±ÇÇÑÀ̳ª Á¤º¸´Â license terms¸¦ Âü°íÇϽñ⠹ٶø´Ï´Ù.

.

JNDIÀÇ ¼Ò°³

¸¹Àº J2EE°³¹ßÀÚµéÀÌ È¯°æ º¯¼ö(environment entries), DataSource °´Ã¼, JMS ¸Þ½ÃÁö ¼ö½ÅÁö(JMS message destinations) ±×¸®°í ¿£ÅÍÇÁ¶óÀÌÁî ºó Ȩ ÀÎÅÍÆäÀ̽º(enterprise bean home interfaces)¸¦ ã°íÀÚ Java Naming and Directory Interface (JNDI)¸¦ ÀÌ¿ëÇÑ´Ù. ÇÏÁö¸¸ ¸¹Àº »ç¶÷µéÀº JNDI¿¡ ´ëÇÑ ÁøÁ¤ÇÑ ÀÌÇØ ¾øÀÌ ÀÌ·¯ÇÑ ±â´ÉÀ» ÇÏ´Â Äڵ带 ´Ü¼øÈ÷ º¹»çÇØ¼­ ºÙÀÌ°í °íÄ¥ »ÓÀÌ´Ù. ÀÌ ÆÁÀº »ç¿ëÀÚÀÇ ¿£ÅÍÇÁ¶óÀÌÁî ½Ã½ºÅÛ¿¡ ¹èÆ÷µÈ ¸®¼Ò½º¸¦ ¾×¼¼½ºÇϱâ À§ÇØ JNDI¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀ» ¼Ò°³ÇÑ´Ù.

¿£ÅÍÇÁ¶óÀÌÁî ¾ÖÇø®ÄÉÀ̼ǵéÀº ±×°ÍµéÀÇ Æ¯¼º»ó, ºñÁî´Ï½º ¿ÀÆÛ·¹À̼ÇÀ» Áö¿øÇϱâ À§ÇØ ¿©·¯°÷¿¡ ¹èÆ÷µÈ ¸®¼Ò½ºµéÀ» Çѵ¥ ¸ð¾Æ¾ß ÇÑ´Ù. »õ·Î¿î ½Ã½ºÅÛÀÌ »ý¼ºµÇ¾ú´Ù°Å³ª, ±âÁ¸ÀÇ ½Ã½ºÅÛÀÌ ¾÷±×·¹ÀÌµå µÇ¾ú´Ù°Å³ª, ¿À·¡µÈ ½Ã½ºÅÛÀÌ ´õ ÀÌ»ó ÀÛµ¿ÇÏÁö ¾ÊÀ» ¶§ ¼­ºñ½ºµéÀÌ ¿À°¡°Ô µÈ´Ù. ¾ÖÇø®ÄÉÀÌ¼Ç ¼­ºñ½º¸¦ ¼­·Î ºÐ¸®ÇÏ´Â °ÍÀº ½Ã½ºÅÛÀ» ½±°Ô À¯Áö/È®ÀåÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. ÇÏÁö¸¸ ¼­ºñ½º°¡ ºÐ¸®µÇ¾úÀ» ¶§, °¢ÀÚÀÇ ¿ªÇÒÀ» Á¦´ë·Î ¼öÇàÇϱâ À§Çؼ­´Â ¼­·Î¸¦ ã¾Æ³¾ ¼ö ÀÖ¾î¾ß¸¸ ÇÑ´Ù. ÀÌ ¶§°¡ ¹Ù·Î ¸í¸í ¼­ºñ½º(naming services)¿Í µð·ºÅ丮°¡ À¯¿ëÇÑ ½ÃÁ¡ÀÌ´Ù.

¸í¸í ¼­ºñ½º´Â À̸§À» ÀÌ¿ëÇØ¼­ °´Ã¼³ª °´Ã¼¿¡ ´ëÇÑ ·¹ÆÛ·±½º¸¦ °Ë»öÇÏ´Â ¹æ¹ýÀ» Á¦°øÇÑ´Ù. ±×·¯ÇÑ °´Ã¼·ÎÀÇ ¿¹´Â ¸Þ½ÃÁö Å¥(message queues), µ¥ÀÌÅͺ£À̽º Ä¿³Ø¼Ç ÆÑÅ丮(database connection factories), ȯ°æ ÆÄ¶ó¹ÌÅÍ(environment parameters), ±×¸®°í ¿£ÅÍÇÁ¶óÀÌÁî ºó°ú °°Àº ºÐ»ê ÄÄÆ÷³ÍÆ®(distributed components)µîÀÌ ÀÖ´Ù. ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ßÀÚµéÀº ¸í¸í ¼­ºñ½º³»ÀÇ À̸§¿¡ °´Ã¼µéÀ» ¹ÙÀεùÇØ¼­ °´Ã¼¿¡ À̸§À» ºÙÀδÙ. ¾ÖÇø®ÄÉÀÌ¼Ç ÄÚµå´Â ÀÌ·¸°Ô ¹ÙÀεùµÈ À̸§À¸·Î °´Ã¼µéÀ» °Ë»öÇϱâ À§ÇØ ¸í¸í ¼­ºñ½º¸¦ »ç¿ëÇÒ ¼ö°¡ ÀÖ´Ù. ÀÌ·¯ÇÑ ºÐ¸®(decoupling)´Â ³×Æ®¿öÅ© °´Ã¼µéÀ» »ç¿ëÇÏ´Â ½Ã½ºÅÛ ÄÄÆ÷³ÍÆ®¿¡ ´ëÇÑ ¾î¶°ÇÑ º¯°æ¾øÀÌ À¯Áö º¸¼ö¸¦ À§ÇØ ¿Ã¸®°Å³ª ³»¸± ¼ö ÀÖ°í, ¿äûµéÀ» ¸®´ÙÀÌ·ºÆ®(redirect)½Ãų ¼ö ÀÖÀ¸¸ç, ¼­ºñ½º°¡ ´ÙÀ̳ª¹ÍÇÏ°Ô ÀçÁ¶Á¤µÉ ¼ö ÀÖÀ½À» ÀǹÌÇÑ´Ù.

ÀÌ¹Ì ±âÁ¸ÀÇ ¸í¸í ¼­ºñ½º¿¡ ´ëÇØ Àß ÀÌÇØÇϰí ÀÖÀ¸¸®¶ó°í »ý°¢µÈ´Ù.

  • DNS (Domain Name Service)´Â java.sun.com°ú °°Àº È£½ºÆ®³×ÀÓÀ» %nslookup java.sun.com%°ú °°Àº IPÁÖ·Î¼Ò ¸ÅÇÎÇÑ´Ù.
  • CORBA (Common Object Request Broker Architecture)¸¦ À§ÇØ ¾²ÀÌ´Â COS (Common Object Services) ¸í¸í ¼­ºñ½º ´Â CORBA ÀÎÅÍÆäÀ̽º À̸§(interface names)À» °´Ã¼ ÀÎÅÍÆäÀ̽º·Î ¸ÅÇÎÇÑ´Ù.

»ç¿ëÀÚ´Â ÄÄÇ»ÅÍÀÇ ÆÄÀϽýºÅÛÀ» ÆÄÀÏÀÇ °æ·Î(pathname)¿¡ ÆÄÀÏÀÇ ÄÁÅÙÃ÷¸¦ ¸ÅÇÎÇÏ´Â ÀÏÁ¾ÀÇ ¸í¸í ¼­ºñ½º·Î »ý°¢ÇÒ ¼ö ÀÖ´Ù.

¹ØÀÇ ±×¸²Àº ¸í¸í ¼­ºñ½º°¡ ¼­ºñ½º ³×ÀÓÀ» µ¥ÀÌÅͳª ¼­ºñ½º ÀÎÅÍÆäÀ̽º·Î ¸ÅÇÎÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÖ°í ÀÖ´Ù.

figure 1

À̸§(name)À» °´Ã¼·Î ¸ÅÇÎÇÏ´Â °ÍÀ» ¹ÙÀεùÀ̶ó ºÎ¸¥´Ù. ¹ÙÀεùÀº ¸í¸í ¼­ºñ½º¸¦ Çü¼ºÇÏ´Â »ç¶÷¿¡ ÀÇÇØ »ý¼ºµÈ´Ù. ´ëºÎºÐÀÇ ¸í¸í ¼­ºñ½º´Â ÇÁ·Î±×·¥ÀÌ ·±Å¸Àӽÿ¡ À̸§À» °´Ã¼·Î ¹ÙÀεùÇϰųª ÇØÁ¦ÇÏ´Â ¹æ¹ýµµ Á¦°øÇÑ´Ù.

ÄÁÅØ½ºÆ®´Â À̸§À» °´Ã¼·Î ¹ÙÀεùÇÑ ÁýÇÕÀÌ´Ù. ¿¹¸¦ µé¸é, ÆÄÀϽýºÅÛ¿¡¼­ °æ·Î /home ´Â ÈçÈ÷ ½Ã½ºÅÛÀÇ À¯Àú µð·ºÅ丮¸¦ Æ÷ÇÔÇÏ´Â ÄÁÅØ½ºÆ®ÀÌ´Ù. ÄÁÅØ½ºÆ®´Â ´Ù¸¥ ÄÁÅØ½ºÆ®¸¦ Æ÷ÇÔÇÒ ¼öµµ ÀÖ´Ù. /home ÄÁÅØ½ºÆ®ÀÇ À¯Àú µð·ºÅ丮´Â ±× ÀÚü°¡ À¯Àú ÆÄÀÏÀ» Æ÷ÇÔÇÏ´Â ÄÁÅØ½ºÆ®ÀÌ´Ù.

ÄÁÅØ½ºÆ®´Â ÃÖ¼ÒÇÑ ¸í¸í ±ÔÄ¢(naming convention)°ú °Ë»ö±â´É(lookup function)À» °®´Â´Ù. ¿¹¸¦ µé¸é, DNS´Â °¡Àå ±¸Ã¼ÀûÀÎ ½ºÆ®¸µÀº ¿ÞÂÊ, µµ¸ÞÀÎÀº ¿À¸¥ÂÊ¿¡ ³ªÅ¸³»¸é¼­ ½ºÆ®¸µÀ» Á¡À¸·Î ºÐ¸®ÇÏ´Â ¸í¸í ±ÔÄ¢À» °®´Â´Ù. DNSÀÇ °Ë»ö±â´ÉÀº nslookup ÇÁ·Î±×·¥À» ÀÌ¿ëÇØ¼­ Ä¿¸Çµå¶óÀÎÀ¸·ÎºÎÅÍ ¾×¼¼½º°¡ °¡´ÉÇÏ´Ù.(¹°·Ð, DNS ¸í¸í ¼­ºñ½º¿¡ ´ëÇÑ APIµµ Á¸ÀçÇÑ´Ù.) ÄÁÅØ½ºÆ®´Â ´ë°Ô °´Ã¼µéÀ» ¹ÙÀεùÇϰí ÇØÁ¦ÇÏ´Â ¹æ¹ý°ú ±×°ÍµéÀ» ¿­°ÅÇÏ´Â ¹æ¹ýÀ» Á¦°øÇÑ´Ù.

¶§¶§·Î ¸í¸í ¼­ºñ½º ÀÇ °´Ã¼µéÀº ´Ù¸¥ ÇÁ·Î±×·¥ÀÌ ÇÊ¿ä·Î ÇÏ´Â µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÑ´Ù. °¡·É, J2EE¾ÖÇø®ÄÉÀ̼ǿ¡¼­ ȯ°æ º¯¼ö¸¦ ³ªÅ¸³»´Â °´Ã¼µéÀº ´ë°Ô ¸í¸í ¼­ºñ½º ¿¡ ÀúÀåµÈ´Ù. ÇÏÁö¸¸ À̿ܿ¡ ¸í¸í ¼­ºñ½ºÀÇ °´Ã¼´Â °´Ã¼¿¡ ´ëÇÑ ·¹ÆÛ·±½º¸¦ ³ªÅ¸³½´Ù. ¿¹¸¦ µé¸é, ¼­¹ö¿¡ ·¹ÆÛ·±½º¸¦ Á¦°øÇÏ´Â °´Ã¼´Â Åë»óÀûÀ¸·Î ¿ÀÇ ¼­¹ö Ä¿³Ø¼ÇÀÌ ¾Æ´Ñ ¼­¹ö¿¡ ´ëÇÑ ·¹ÆÛ·±½º·Î¼­ ¸í¸í ¼­ºñ½º ¿¡ ÀÇÇØ ÀúÀåµÈ´Ù.¸í¸í ¼­ºñ½º ¿¡ ÀÇÇØ ¸®ÅÏµÈ ·¹ÆÛ·±½º °´Ã¼´Â ÇÊ¿ä½Ã¿¡ ¼­¹ö Ä¿³Ø¼ÇÀ» »ý¼ºÇϱâ À§ÇØ »ç¿ëµÉ ¼ö ÀÖ´Ù.

´ÙÀ½ ±×¸²Àº ÄÁÅØ½ºÆ®ÀÇ °³³äµµÀÌ´Ù. top ÄÁÅØ½ºÆ®´Â /top·Î ºÒ¸®¸ç °´Ã¼, ·¹ÆÛ·±½º, ±×¸®°í ´Ù¸¥ ÄÁÅØ½ºÆ®µéÀ» Æ÷ÇÔÇÑ´Ù. ÄÁÅØ½ºÆ® /topÀº subcontexts b ¿Í g¸¦ °®´Â´Ù. ÄÁÅØ½ºÆ® /top/g ´Â subcontext "b"¸¦ °®´Â´Ù. A¶ó°í ºÒ¸®´Â °´Ã¼°¡ Çϳª ÀÌ»ó ÀÏÁö¶óµµ, ƯÁ¤ °³Ã¼ /top/g/b/a´Â ±× À§Ä¡°¡ ÄÁÅØ½ºÆ® /top/g/b ÀÓÀÌ ºÐ¸íÇϱ⠶§¹®¿¡ ãÀ» ¼ö°¡ ÀÖ´Ù.

figure 2

¹ÙÀεùµÈ °´Ã¼µé¿¡ ´ëÇÑ µ¥ÀÌÅ͸¦ Á¦°øÇÏ´Â ¸í¸í ¼­ºñ½º¸¦ µð·ºÅ丮¶ó°í ºÎ¸¥´Ù. °¡·É, ÆÄÀϽýºÅÛ µð·ºÅ丮´Â ÀϹÝÀûÀ¸·Î Å©±â, ŸÀÔ, Á¢±Ù Çã¿ë ±×¸®°í ÆÄÀÏÀ» »ý¼ºÇÏ°í ¼öÁ¤ÇÑ ³¯Â¥¿¡ °üÇÑ Á¤º¸¸¦ Á¦°øÇÑ´Ù. ¸î¸î µð·ºÅ丮´Â À̸§À¸·Î °Ë»ö, ¾ÖÆ®¸®ºäÆ®ÀÇ Á¶ÇÕÀ¸·Î °Ë»ö ¸ðµÎ¸¦ Çã¿ëÇÑ´Ù.

°¢°¢ÀÇ ¸í¸í ¼­ºñ½ºµéÀº °¢ÀÚÀÇ Å½ºÅ©(task)¿¡ Àß ¸Âµµ·Ï µÇ¾îÀÖÁö¸¸, ±×µéÀÌ ÀÛµ¿ÇÏ´Â ¹æ½ÄÀº ¼­·Î ´Ù¸£´Ù. °¢ ¸í¸í ¼­ºñ½º´Â °íÀ¯ÀÇ ¸í¸í±ÔÄ¢, °Ë»ö±â´É, ¹ÙÀεù°ú µð·ºÅ丮 ÇÁ·ÎÅäÄÝ(directory protocols)°ú °´Ã¼ ¼­ºñ½º ÀÎÅÍÆäÀ̽º(object service interfaces)¸¦ °®´Â´Ù. JNDI ´Â ³×Æ®¿öÅ© ¼­ºñ½º¸¦ À̸§Áþ°í ã±â À§ÇØ ÀϰüµÈ ¹æ¹ýÀ» Á¦°øÇÑ´Ù.

Java Naming and Directory Interface

JDBC µ¥ÀÌÅͺ£À̽º Ä¿³Ø¼Ç(database connections), JMS Å¥(JMS queues) ȤÀº ¿£ÅÍÇÁ¶óÀÌÁî ºó Ȩ ÀÎÅÍÆäÀ̽º(enterprise bean home interfaces)¿Í °°Àº ³×Æ®¿öÅ© °´Ã¼¿¡ ¾×¼¼½ºÇϱâ À§ÇØ JNDI ¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀ» ÀÌ¹Ì ¾Ë°í ÀÖÀ» °ÍÀÌ´Ù. »ç½Ç JNDI ´Â À̸§µéÀ» °´Ã¼·Î ¸ÅÇÎÇÏÁö¸¸, JNDI ´Â ¸í¸í ¼­ºñ½º°¡ ¾Æ´Ï´Ù. ±×º¸´Ùµµ JNDI´Â ¸í¸í ¼­ºñ½º¸¦ Ç¥ÁØÀûÀÎ ¹æ¹ýÀ¸·Î ¾×¼¼½º°¡´ÉÇÏ°Ô Çϸ鼭 ±âÁ¸ÀÇ ¸í¸í ¼­ºñ½º¸¦ °¨Ãß´Â(wrap) ÀÎÅÍÆäÀ̽ºµéÀÇ ÁýÇÕÀÌ´Ù.

´ÙÀ½ ±×¸²¿¡¼­ º¸´Â °Í°ú °°ÀÌ, ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼ÇÀº JNDIÀÎÅÍÆäÀ̽º¸¦ ÀÌ¿ëÇØ¼­ °¨ÃçÁø(underlying) ¸í¸í ¼­ºñ½º¿¡ ¾×¼¼½ºÇÑ´Ù.

figure 3

¾ÖÇø®ÄÉÀ̼dz»ÀÇ ÄÚµå´Â JNDI ÀÎÅÍÆäÀ̽º ¸Þ¼Òµå¸¦ È£ÃâÇÑ´Ù. ÀÌ·¯ÇÑ ¸Þ¼Òµå¸¦ ±¸ÇöÇÏ´Â °´Ã¼µéÀº JNDI ÀÎÅÍÆäÀ̽º È£ÃâÀ» °¨ÃçÁø ¸í¸í ¼­ºñ½º¿¡ ´ëÇÑ È£Ãâ·Î ¸ÅÇÎÇÑ´Ù. ¶ÇÇÑ JNDI´Â ÅëÇÕµÈ ¸í¸í ±ÔÄ¢µµ Á¤ÀÇÇÑ´Ù. JNDI À̸§µéÀº JNDIÀÇ ¸í¸í °ü¸®ÀÚ(naming manager)¿¡ ÀÇÇØ °¨ÃçÁø ¸í¸í ¼­ºñ½ºÀÇ ¸í¸í ±ÔÄ¢À» µû¸£´Â À̸§À¸·Î ¸ÅÇεȴÙ.

javax.naming ÆÐŰÁö´Â ´ÙÀ½°ú °°Àº ¸í¸í°ú µð·ºÅ丮¿¡ °ü·ÃµÈ ÀÎÅÍÆäÀ̽ºµéÀ» Æ÷ÇÔÇÑ´Ù.

  • javax.naming.Context´Â ÄÁÅØ½ºÆ®¸¦ ³ªÅ¸³»´Âµ¥, À̰ÍÀº ¹ÙÀεù°ú ¼­ºêÄÁÅØ½ºÆ®¸¦ ã°í °ü¸®ÇÏ´Â µ¥¿¡ ¾²ÀδÙ.
  • javax.naming.Name´Â ¸í¸í ¼­ºñ½ºÀÇ À̸§À» Ãß»óÀûÀ¸·Î Ç¥Çö(abstract representation)ÇÏ°Ô ÇØÁØ´Ù.
  • javax.naming.BindingÀº ¸í¸í ¼­ºñ½º À̸§°ú ±× À̸§¿¡ ¹ÙÀεùµÈ °´Ã¼ÀÇ Ç¥ÇöÀÌ´Ù.
  • javax.naming.Reference´Â °´Ã¼ÀÇ º¹»çº»À» ¾ò¾î³¾ ¼ö ÀÖ°Ô ÇØÁØ´Ù.

ÄÁÅØ½ºÆ® ã±â

ÀÌ ÆÁ¿¡ Æ÷ÇÔµÈ »ùÇÃÄÚµå´Â JNDIÄÁÅØ½ºÆ®ÀÇ ÄÁÅÙÃ÷¸¦ ¿­°ÅÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁØ´Ù. »ùÇà ¼­ºí¸´ Oct2003Servlet´Â »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ À̸§¿¡ ÇØ´çÇÏ´Â JNDI namespace³»ÀÇ ÄÁÅÙÃ÷¸¦ ã°í µð½ºÇ÷¹ÀÌÇÑ´Ù.

ÄÁÅØ½ºÆ®¸¦ ¾ò´Â °¡Àå ½¬¿î ¹æ¹ýÀº javax.naming.InitialContext Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ »ý¼ºÇÏ´Â °ÍÀÌ´Ù. »ùÇà ¼­ºí¸´ ¸Þ¼Òµå jndiList ´Â ÃÖÃÊÀÇ ÄÁÅØ½ºÆ®¸¦ »ý¼ºÇÏ°í ¸í¸íµÈ °´Ã¼¸¦ ãÀ» ¶§ ±×°ÍÀ» »ç¿ëÇÑ´Ù.

   InitialContext ic = new InitialContext();
   Object objFound = ic.lookup(name);

¿©±â¿¡¼­ nameÀº »ç¿ëÀÚ°¡ HTMLÆäÀÌÁö¿¡¼­ ÀÔ·ÂÇÑ HTTP GET ȤÀº POST º¯¼ö¸í(vriable name)ÀÌ´Ù. ¸¸¾à ¸®ÅÏµÈ °´Ã¼°¡ Context ¶ó¸é jndiList ´Â listContext ¸Þ¼Òµå¸¦ È£ÃâÇϰí, ListContext¸Þ¼Òµå´Â ÁÖ¾îÁø À̸§¿¡ ÇØ´çÇÏ´Â ÄÁÅØ½ºÆ®ÀÇ ÄÁÅÙÃ÷¸¦ ¿­°ÅÇÑ´Ù. °´Ã¼°¡ DataSourceÀ̸é, jndiList ´Â ¸í¸íµÈ µ¥ÀÌÅÍ ¼Ò½º¿¡ °üÇÑ Á¤º¸¸¦ Ãâ·ÂÇÑ´Ù.

listContext ¸Þ¼Òµå´Â ÁÖ¾îÁø JNDI ÄÁÅØ½ºÆ®ÀÇ ÄÁÅÙÃ÷¸¦ ÇϳªÀÇ Å×À̺í·Î Ãâ·ÂÇÑ´Ù. À̸¦ À§Çؼ­´Â Context ¸Þ¼Òµå listBindings ¸¦ ÀÌ¿ëÇϴµ¥, ÀÌ´Â NamingEnumeration ¸¦ ¸®ÅÏÇÑ´Ù.

      NamingEnumeration ne = context.listBindings("");

NamingEnumeration ´Â java.util.Enumeration¸¦ ±¸ÇöÇÑ °ÍÀÌ´Ù. NamingEnumeration.next ¸Þ¼Òµå´Â javax.naming.Binding ŸÀÔÀÇ °´Ã¼¸¦ ¸®ÅÏÇϰí, ÀÌ´Â °´Ã¼ÀÇ À̸§°ú °´Ã¼ÀÇ Å¬·¡½º À̸§ ±×¸®°í ÀúÀåµÈ °´Ã¼ ÀÚü¸¦ Æ÷ÇÔÇÑ´Ù.

      
      while (ne.hasMore()) {
         Binding ncp = (Binding)ne.next();
         String objName = ncp.getName();
         String objClass = ncp.getClassName();
         Object objObj = ncp.getObject();

         ...
     }

´Ü¼øÈ÷ Context³»ÀÇ À̸§µé°ú Ŭ·¡½ºÀ̸§À» º¸°íÀÚ ÇÑ´Ù¸é Context.list ¸Þ¼Òµå¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. Context.listµµ NamingEnumeration¸¦ ¸®ÅÏÇÏÁö¸¸, ±×°ÍÀÌ ´ã°íÀÖ´Â Ä÷¢¼ÇÀº BindingÀÌ ¾Æ´Ñ NameClassPair ŸÀÔÀÌ´Ù. NameClassPair´Â À̸§°ú °´Ã¼ Ŭ·¡½º À̸§¸¸À» Æ÷ÇÔÇÑ´Ù.

»ùÇþÖÇø®ÄÉÀ̼ÇÀ» ¹èÆ÷ÇÏ°í ½ÇÇàÇÏ´Â ¹æ¹ýÀº »ùÇÃÄÚµå ½ÇÇàÇϱ⠸¦ Âü°íÇÑ´Ù.

¾ÖÇø®ÄÉÀ̼ÇÀ» ½ÇÇàÇϸé, ´ÙÀ½°ú °°Àº ½ÃÀÛÆäÀÌÁö¸¦ º¸°Ô µÈ´Ù.

jndichoice

ÄÁÅØ½ºÆ®¸¦ ÀÔ·ÂÇϰųª, ÅØ½ºÆ® Çʵ带 ºó »óÅ·Π³öµÎ°í ¸í¸íµÈ ÄÁÅØ½ºÆ®ÀÇ ÄÁÅÙÃ÷¸¦ º¸±â À§ÇØ List¹öưÀ» Ŭ¸¯ÇÑ´Ù. ¿¹¸¦ µé¸é jdbc ÀÇ ¿£Æ®¸®´Â ´ÙÀ½°ú °°Àº È­¸éÀ» µð½ºÇ÷¹ÀÌÇÑ´Ù.

jndilist

JNDI ¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â JNDI Æ©Å丮¾ó¸¦ Âü°íÇÑ´Ù.

.
.

ENTITY RESOLVER ÀÛ¼ºÇϱâ

XMLÀ» ÀÛ¼ºÇØ º» ÀûÀÌ ÀÖ´Ù¸é, ampersand (&)°ú less-than (<)°°Àº ij¸¯Å͸¦ Ç¥ÇöÇϱâ À§ÇØ XMLÀÌ »ç¿ëÇÏ´Â ½Éº¼À» ºÃÀ» °ÍÀÌ´Ù. ÀÌ ½Éº¼À» ¿£ÅÍÆ¼¶ó°í ºÎ¸¥´Ù. XML¿¡¼­, ¿£ÅÍÆ¼´Â Ç×»ó &·Î ½ÃÀÛÇØ¼­ ¼¼¹ÌÄÝ·Ð(;)À¸·Î ³¡³­´Ù. ¿£ÅÍÆ¼´Â XML´ÙÅ¥¸ÕÆ®¸¦ ÆÄ¶ó¹ÌÅÍ·Î ³ªÅ¸³»±â À§ÇØ »ç¿ëµÈ´Ù. ÀÌ ÆÁÀº ´ÙÅ¥¸ÕÆ®ÀÇ DTD¿¡ ¿£ÅÍÆ¼¸¦ Á¤ÀÇÇÔÀ¸·Î½á XML´ÙÅ¥¸ÕÆ®¸¦ ÆÄ¶ó¹ÌÅÍ·Î ³ªÅ¸³»´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. XML´ÙÅ¥¸ÕÆ®¿¡¼­ ¾î¶² ÅØ½ºÆ®°¡ ¿£ÅÍÆ¼ ·¹ÆÛ·±½º¸¦ ´ëüÇÒ °ÍÀÎÁö¸¦ Á¶Á¤ÇÏ´Â entity resolver¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ýµµ ¼³¸íÇÑ´Ù.

¿£ÅÍÆ¼ÀÇ Á¤ÀÇ

XML´ÙÅ¥¸ÕÆ®ÀÇ ¿©·¯ °÷¿¡¼­ ¹Ýº¹»ç¿ëµÇ´Â ÅØ½ºÆ®´Â ¿£ÅÍÆ¼·Î Ç¥ÇöÇÏ´Â °ÍÀÌ ´õ ³´´Ù. ¿£ÅÍÆ¼´Â ´ÙÅ¥¸ÕÆ®ÀÇ DTD¿¡ ½±°Ô Á¤ÀǵȴÙ. ¿£ÅÍÆ¼¸¦ Á¤ÀÇÇÏ´Â ¿¹Á¦´Â »ùÇÃÄÚµå ÆÄÀÏ misc/data.xml¿¡¼­ º¼ ¼ö ÀÖ´Ù.

   <!ENTITY helloWorld "Hello, world!">

& °ú <¸¦ »ç¿ëÇÏ´Â °Íó·³, ¿£ÅÍÆ¼´Â XMLÀÚü¿¡ »ç¿ëµÉ ¼öµµ ÀÖ´Ù. data.xmlÆÄÀÏ¿¡¼­ Á¦°øÇÏ´Â ¿¹°¡ ÀÖ´Ù.

   <This>
     <That>&helloWorld;</That>
     <That>&helloWorld;</That>
     ...
   </This>

XML ÆÄ¼­°¡ ÀÌ ÅØ½ºÆ®¸¦ ÀÐÀ¸¸é, &¿Í ;»çÀÌÀÇ ¸ðµç °ÍÀ» ¿£ÅÍÆ¼ÀÇ ÄÁÅÙÃ÷·Î ´ëüÇÑ´Ù.

   <This>
     <That>Hello, world!</That>
     <That>Hello, world!</That>
     ...
   </This>

°ªÀÌ DTD¿¡ Á÷Á¢ÀûÀ¸·Î Á¤ÀÇµÈ ¿£ÅÍÆ¼´Â ³»ºÎ(internal)¿£ÅÍÆ¼¶ó°í ºÒ¸°´Ù. À̰ÍÀº CÇÁ·Î±×·¥ÀÇ #define°ú ¸Å¿ì Èí»çÇÏ´Ù. ³»ºÎ ¿£ÅÍÆ¼´Â ÇÁ·ÎÁ§Æ®ÀÇ ´ÜÀÏ Àå¼Ò¿¡ ¹Ýº¹ÀûÀ¸·Î »ç¿ëµÇ´Â ÀúÀÛ±Ç °ø°í¿Í °°Àº ÅØ½ºÆ®¸¦ »ðÀÔÇϴµ¥ À¯¿ëÇÏ´Ù. ³»ºÎ ¿£ÅÍÆ¼ÀÇ Á¤ÀǸ¦ ¾÷µ¥ÀÌÆ®ÇÏ¸é ´ëüµÈ ÅØ½ºÆ®¸¦ ¸ðµÎ ¹Ù²Ù°Ô µÈ´Ù.

File Contents Æ÷ÇÔÇϱâ

¶Ç ´Ù¸¥ ¿£ÅÍÆ¼´Â ¿ÜºÎ(External)¿£ÅÍÆ¼·Î¼­ ½ºÆ®¸µ ´ë½Å¿¡ ÆÄÀÏÀ¸·ÎºÎÅÍ ±×°ÍÀÇ ´ëü ¹®ÀÚ¿­À» ¹Þ´Â´Ù. ¿ÜºÎ¿£ÅÍÆ¼´Â CÀÇ #include¿Í ºñ½ÁÇÏ´Ù. ¿ÜºÎ ¿£ÅÍÆ¼¸¦ À§ÇÑ ´ëü ¹®ÀÚ¿­(replacement text)Àº ÆÄÀÏÀÇ Àüü ÄÁÅÙÃ÷ÀÌ´Ù.

¿ÜºÎ ¿£ÅÍÆ¼ Áß ÇÑ Á¾·ù´Â ¿£ÅÍÆ¼ÀÇ À̸§À» Áþ±â À§ÇØ PUBLIC ½Äº°ÀÚ¸¦ »ç¿ëÇÑ´Ù. ±×¸®°í ´ëü ÅØ½ºÆ®¸¦ ãÀ» À§Ä¡¸¦ XMLÇÁ·Î¼¼½Ì ÇÁ·Î±×·¥¿¡ ¸í·ÉÇϱâ À§ÇØ ½Ã½ºÅÛ ½Äº°ÀÚ¸¦ »ç¿ëÇÑ´Ù. »ùÇÃÄڵ忡¼­ ÀÌ·¯ÇÑ ¹æ¹ýÀ¸·Î 4°³ÀÇ ¿ÜºÎ ¿£ÅÍÆ¼¸¦ Á¤ÀÇÇÏ´Â XML ÆÄÀÏ, data.xml¸¦ º¼ ¼ö ÀÖ´Ù.

   <!ENTITY firstLine 
      PUBLIC "-//elucify//ejtt//oct2003//firstLine" 
         "english.props">
   <!ENTITY secondLine
      PUBLIC "-//elucify//ejtt//oct2003//secondLine" 
         "english.props">
   <!ENTITY thirdLine
      PUBLIC "-//elucify//ejtt//oct2003//thirdLine" 
         "english.props">
   <!ENTITY lastLine
      PUBLIC "-//elucify//ejtt//oct2003//lastLine" 
         "english.props">

°¢°¢ÀÇ ¿£ÅÍÆ¼´Â ±×°ÍÀÇ public idÀÎ °íÀ¯ÀÇ À̸§À» °®´Â´Ù. PUBLIC Ű¿öµå µÚ¿¡ ³ª¿À´Â ù¹øÂ° ½ºÆ®¸µÀÌ ¹Ù·Î ±×°ÍÀÌ´Ù. µÎ¹øÂ° ½ºÆ®¸µÀº ½Ã½ºÅÛ id·Î¼­ ´ëü ÅØ½ºÆ®¸¦ ãÀ» À§Ä¡¸¦ ƯÁ¤ ½Ã½ºÅÛ ½Äº°ÀÚ¿¡ Á¦°øÇÑ´Ù.

&firstLine)°ú °°Àº ¿£ÅÍÆ¼ ·¹ÆÛ·±½º°¡ XML´ÙÅ¥¸ÕÆ®¿¡ »ç¿ëµÉ ¶§¿¡´Â, XML ÇÁ·Î¼¼¼­°¡ ´ëü ÅØ½ºÆ®¸¦ ãÀ» ¹æ¹ýÀ» ¹Ýµå½Ã ÀÎÁöÇϰí ÀÖ¾î¾ß ÇÑ´Ù. À̸¦ ¿£ÅÍÆ¼ ·¹ÆÛ·±½º¸¦ ÇØ¼®(resolve)ÇÑ´Ù°í ÇÑ´Ù.

µðÆúÆ®·Î, ´ëºÎºÐÀÇ XML ÇÁ·Î¼¼¼­´Â ¿£ÅÍÆ¼ÀÇ ´ëü ÅØ½ºÆ®¸¦ °Ë»öÇϱâ À§ÇØ URLÀ̳ª ÆÄÀϽýºÅÛ °æ·ÎÀ» ½Ã½ºÅÛ ID·Î »ç¿ëÇÑ´Ù. ÇÏÁö¸¸ °£È¤ XMLÇÁ·Î¼¼¼­°¡ ·¹ÆÛ·±½º¸¦ ¸®Á¹ºêÇÏ´Â ¹æ¹ýÀ» Á¦¾îÇØ¾ßÇÒ Çʿ䰡 ÀÖ´Ù. °¡·É, ½Ã½ºÅÛ id°¡ URLÀε¥ ÀÎÅͳݿ¡ ¿¬°áµÇ¾î ÀÖÁö ¾Ê´Ù¸é ¾î¶»°Ô ÇÒ °ÍÀΰ¡? SAX ¿Í DOM ÆÄ¼­s °¡ ±â¹ÝÇϰí ÀÖ´Â SAX ÀÎÅÍÆäÀ̽º´Â entity resolver Ŭ·¡½º(entity resolver class)¸¦ Á¤ÀÇÇÔÀ¸·Î½á ¿ÜºÎ ¿£ÅÍÆ¼¸¦ À§ÇÑ ´ëü ÅØ½ºÆ®¸¦ Á¦¾îÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù.

¿£ÅÍÆ¼ ·¹ÆÛ·±½º¸¦ ResolveÇϱâ

org.sax.xml.EntityResolverÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â entity resolver´Â signature°¡ ´ÙÀ½°ú °°Àº ´ÜÀÏ ¸Þ¼Òµå resolveEntity¸¦ °®´Â´Ù.

   public InputSource resolveEntity(String publicID,
                                    String systemID) 
     throws SAXException;

ÀÌ ¸Þ¼Òµå´Â Àμö·Î ¿£ÅÍÆ¼ÀÇ public id ³ª system id¸¦ ¹Þ´Â´Ù. À̰͵éÀº <!ENTITY>¼±¾ð »ó´ÜºÎÀÇ Å°¿öµå PUBLIC µÚ¿¡ ¿À´Â ù¹øÂ°, µÎ¹øÂ° ÀμöµéÀÌ´Ù. ÀÌ´Â org.sax.xml.InputSource ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â °´Ã¼¸¦ ¸®ÅÏÇÑ´Ù. entity resolver´Â ¿£ÅÍÆ¼¸¦ À§ÇÑ ´ëü ÅØ½ºÆ®ÀÇ À§Ä¡¸¦ Á¤Çϱâ À§ÇØ public °ú system id¸¦ »ç¿ëÇÑ´Ù. ±×¸®°í ÆÄ¼­°¡ ´ëü ÅØ½ºÆ®¸¦ ¾ò±â À§ÇØ ¾×¼¼½ºÇÏ´Â InputSource °´Ã¼¸¦ ¸®ÅÏÇÑ´Ù.

ÀÌ ±ÛÀÇ »ùÇà ÄÚµå´Â PropertiesŬ·¡½º¸¦ ÀÌ¿ëÇØ¼­ Java ¼Ó¼º(property) ÆÄÀÏÀ» Àд entity resolver PropertyEntityResolver ¶ÇÇÑ Æ÷ÇÔÇϰí ÀÖ´Ù. ÆÄÀÏÀ» ·ÎµåÇÏ°í ´ëü ÅØ½ºÆ®¸¦ °Ë»öÇÏ´Â ÄÚµå´Â ´ÙÀ½°ú °°´Ù.

   // Load properties from a URL.
   protected void loadProps(String urlString)
      throws MalformedURLException, IOException {
      URL url = new URL(urlString);
      URLConnection con = url.openConnection();
      _props = new Properties();
      _props.load(con.getInputStream());
   }

   // Given the name of a property, 
   // return the property's value
   public InputSource resolveEntity(
                      String publicID, String systemID) 
      throws SAXException {

      // Load properties from URL referenced 
      // by system id.
      // Assume system id is the same for all symbols.
      if (_props == null) {
         try {
            loadProps(systemID);
         } catch (Exception e) {
            throw new SAXException(e);
         }
      }

      // Extract property name from public ID
      int index = publicID.lastIndexOf("//");
      String value = "???PropertyNotFound???";
      if (index >= 0) {
         value = _props.getProperty(
                        publicID.substring(index + 2));
      }
      StringReader sr = new StringReader(value);
      return new InputSource(sr);
   }

»ùÇà Ŭ·¡½º EntityResolverDemo°¡ DOM ÆÄ¼­(parser)¸¦ »ý¼ºÇϸé, ´ÙÀ½°ú °°ÀÌ Å¬·¡½º¸¦ À§ÇÑ entity resolver¸¦ PropertyEntityResolverÀÇ ÀνºÅϽº·Î ¼³Á¤ÇÑ´Ù.

        // Create the parser, and set the error handler
        // and entity resolver
        DocumentBuilder db = dbf.newDocumentBuilder();
         
        db.setErrorHandler(this);

        PropertyEntityResolver propertyEntityResolver =
           new PropertyEntityResolver();
        db.setEntityResolver(propertyEntityResolver);

ÆÄ¼­°¡ ¿ÜºÎ ¿£ÅÍÆ¼ ·¹ÆÛ·±½º¸¦ ¸¸³ª°Ô µÇ¸é ÆÄ¼­´Â PropertyEntityResolver.resolveEntity¸¦ È£ÃâÇϰí, ±×°Í¿¡ ´ëÇÑ ÀÀ´äÀ¸·Î ´ëü ÅØ½ºÆ®¸¦ Æ÷ÇÔÇϰí ÀÖ´Â InputSource¸¦ ¹Þ´Â´Ù. ±×¸®°í ³ª¼­ ´ëü ÅØ½ºÆ®¸¦ ÀÐ°í ±×°ÍÀ» ¿£ÅÍÆ¼ ·¹ÆÛ·±½º°¡ ¹ß»ýÇÑ result XML¾ÈÀÇ ±× ·¹ÆÛ·±½º¿Í ġȯÇÑ´Ù.

»ùÇà ¾ÖÇø®ÄÉÀ̼ÇÀ» ¹èÆ÷ÇÏ°í ½ÇÇàÇÏ´Â ¹æ¹ýÀº »ùÇÃÄÚµå ½ÇÇàÇϱ⸦ Âü°íÇÑ´Ù. ERDemo ÇÁ·Î±×·¥À» ½ÇÇàÇϴµ¥ ÇÊ¿äÇÑ »çÇ×Àº À妽ºÆäÀÌÁö¸¦ Âü°íÇÑ´Ù. english.propsÆÄÀÏÀ» ÁöÁ¤Çϰí ÀÖ´Â data.xmlÀ» ÀÌ¿ëÇØ¼­ »ùÇà ÇÁ·Î±×·¥À» ½ÇÇàÇØ º¸ÀÚ.

  1. entity resolver jar ÆÄÀϷκÎÅÍ µ¥ÀÌÅÍ ÆÄÀÏÀ» ÃßÃâÇÏÀÚ, ERDemo.jar: jar xvf ERDemo.jar misc
  2. CLASSPATH¿¡ ERDemo.jar¸¦ Ãß°¡ÇÑ´Ù.Put ERDemo.jar in your CLASSPATH.
  3. ¿¹Á¦¸¦ ½ÇÇàÇÑ´Ù. java ERDemo misc/data.xml

ERDemo ÇÁ·Î±×·¥À» ½ÇÇàÇϸé, ´ÙÀ½°ú °°Àº ¿µ¹® ´ëü ÅØ½ºÆ®¸¦ Æ÷ÇÔÇÑ XML´ÙÅ¥¸ÕÆ®¸¦ »ý¼ºÇÏ°Ô µÈ´Ù.

   <?xml version="1.0" encoding="UTF-8"?>
   <This>
     <That>Hello, world!</That>
     <That>Hello, world!</That>
     <That>Line 1: This line is written in English.
     </That>
     <That>Line 2: How are you?</That>
     <That>Line 3: What would you like to eat?</That>
     <TheOther>Last line: I must say goodbye.
     </TheOther>
   </This>

±× ´ÙÀ½¿£ data.xml¸¦ ÆíÁýÇÏ°í ¸ðµç <!ENTITYÁ¤ÀÇ¿¡ ´ÙÀ½°ú °°ÀÌ "english.props"¸¦ "spanish.props" ·Î ´ëÃ¼ÇØ º¸ÀÚ.

   <!ENTITY firstLine 
      PUBLIC "-//elucify//ejtt1003//firstLine" 
         "spanish.props">
   <!ENTITY secondLine
      PUBLIC "-//elucify//ejtt1003//secondLine" 
         "spanish.props">
   <!ENTITY thirdLine
      PUBLIC "-//elucify//ejtt1003//thirdLine" 
         "spanish.props">
   <!ENTITY lastLine
      PUBLIC "-//elucify//ejtt1003//lastLine" 
         "spanish.props">

ÅØ½ºÆ®´Â ´ÙÀ½°ú °°ÀÌ ¹Ù²ð °ÍÀÌ´Ù.

   <?xml version="1.0" encoding="UTF-8"?>
   <This>
     <That>Hello, world!</That>
     <That>Hello, world!</That>
     <That>Line 1: Esta linea esta escrito en Espagnol.
     </That>
     <That>Line 2: Como estas?</That>
     <That>Line 3: Que quieres cenar?</That>
     <TheOther>Last line: Hay que decir adios!
     </TheOther>
  </This>

»ùÇà ÄÚµå´Â ºÒ¾î¿Í µ¶¾î·Î µÈ ¼Ó¼º ÆÄÀϵµ Æ÷ÇÔÇϰí ÀÖÀ¸´Ï, ÀÌ·¯ÇÑ ÆÄÀϵéÀ» ÀÌ¿ëÇØ¼­ »ùÇà Äڵ带 ½ÇÇàÇØº¸´Â °Íµµ ÁÁÀº »ý°¢ÀÌ´Ù.

JNDI¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â JNDI Æ©Å丮¾óÀ» Âü°íÇÑ´Ù.

»ùÇÃÄÚµå ½ÇÇàÇϱâ

ÀÌ ÆÁÀÇ »ùÇà ¾ÆÄ«À̺긦 ´Ù¿î·Îµå¹ÞÀÚ. ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÄÁÅØ½ºÆ® ·çÆ®´Â ttoct2003 À̰í, ´Ù¿î·ÎµåµÈ EARÆÄÀÏÀº ¿Ï¼ºµÈ »ùÇÿ¹Á¦Äڵ带 Æ÷ÇÔÇÑ´Ù.

»ùÇÃÇÁ·Î±×·¥À» ½ÇÇàÇϱâ À§Çؼ­´Â ´ÙÀ½ °úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù

  1. j2ee¼­¹ö¿Í µ¥ÀÌÅͺ£À̽º ¼­¹ö ¸ðµÎ ½ÇÇà ÁßÀÎÁö È®ÀÎÇÏÀÚ. J2EE Reference ImplementationÀ» À§Çؼ­´Â ´ÙÀ½ 2°¡Áö¸¦ ¸ðµÎ ½ÇÇàÇØ¾ß ÇÑ´Ù.

         j2ee -verbose

    and

         cloudscape -start

  2. ¾Õ¼­ ¼³¸íÇÑ °Íó·³ earÆÄÀÏÀ» ´Ù¿î·Îµå ¹ÞÀÚ.
  3. ¼­¹ö¿¡ earÆÄÀÏÀ» ¹èÆ÷ÇÏÀÚ. »ç¿ëÀÚ´Â deploytool ÇÁ·Î±×·¥À» ÀÌ¿ëÇØ¼­ J2EE Reference Implementation¿¡ ¾ÖÇø®ÄÉÀÌ¼Ç ¾ÆÄ«À̺ê(ttoct2003.ear)¸¦ ¹èÆ÷ÇÒ ¼ö ÀÖ´Ù.
        $J2EE_HOME/deploytool -deploy ttoct2003.ear localhost
    
    ·ÎÄà ȣ½ºÆ®(localhost)¸¦ ¼­¹ö°¡ ¼³Ä¡µÇ´Â È£½ºÆ®ÀÇ À̸§À¸·Î ´ëüÇÏÀÚ. ´ÜÀÏ ¸Ó½Å¿¡ ÀνºÅçÇÒ ¶§, È£½ºÆ®À̸§Àº ÀϹÝÀûÀ¸·Î(±ÛÀÚ ¶æ´ë·Î) localhost°¡ µÈ´Ù.
  4. ¾ÖÇø®ÄÉÀ̼ÇÀ» http://localhost:8000/ttoct2003¿¡ ¾×¼¼½ºÇÏÀÚ.

Reference Implementationº¸´Ù´Â J2EEÀÇ specificationÀ» µû¸£´Â ±â´É ±¸ÇöÀÇ Ãø¸é¿¡¼­ »ç¿ëÇϰíÀÚ ÇÑ´Ù¸é »ç¿ëÀÚÀÇ Ç÷§Æû¿¡ ¾ÖÇø®ÄÉÀ̼ÇÀ» ¹èÆ÷Çϱâ À§ÇØ J2EE ÇÁ·Î´öÆ®ÀÇ ¹èÆ÷ Åø(deployment tool)À» »ç¿ëÇÑ´Ù.

¾ÖÇø®ÄÉÀ̼ÇÀÇ ½ÇÇà¿¡ ´ëÇÑ Áö½Ã»çÇ×Àº index.html welcome fileÀ» Âü°íÇÑ´Ù.

.
.
.

Reader Feedback

  ¸Å¿ì ÁÁ´Ù    ÁÁ´Ù    ±×Àú ±×·¸´Ù 

 

ÀÚ¹Ù ÇÁ·Î±×·¡¹ÖÀÌ ±Ã±ÝÇϼ¼¿ä? Java Online SupportÀ» Âü°íÇϼ¼¿ä.

.
.

Sun Microsystems, Inc.
.
.