Links Getting Started Administrators Application Developers Catalina Developers Jasper Developers | JNDI Resources HOW-TO| ¼Ò°³ Introduction |
Tomcat 4¿¡¼´Â ¿î¿µÇÏ´Â À¥ ¾îÇø®ÄÉÀ̼ǿ¡ ´ëÇØ JNDI InitialContext
±¸Çö ÀνºÅϽº¸¦ Á¦°øÇÕ´Ï´Ù. Áö¿ø ¹æ½ÄÀº Java2 Enterprise
Edition ¿¡¼ Á¦°øµÇ´Â °Í°ú ȣȯµË´Ï´Ù. ÀÌ InitialContext ¿¡ ÀÖ´Â
¿£Æ®¸®µéÀº $CATALINA_HOME/conf/server.xml ¿¡¼ ¼³Á¤µÇ°í, À¥ ¾îÇø®ÄÉÀ̼ǿ¡
ÀÖ´Â À¥ ¾îÇø®ÄÉÀÌ¼Ç ¹èÄ¡ Áö½ÃÀÚ(/WEB-INF/web.xml)¿¡ ÀÖ´Â ´ÙÀ½ÀÇ ¿ä¼Ò
µé¿¡ ÀÇÇØ ÂüÁ¶µÉ °ÍÀÔ´Ï´Ù:
<env-entry> - ȯ°æ ¿£Æ®¸® Environment entry,
¾îÇø®ÄÉÀ̼ÇÀÌ ¾î¶»°Ô µ¿ÀÛÇÒ Áö ¼³Á¤ÇÏ´Â µ¥ »ç¿ëµÇ´Â ´ÜÀÏ-°ª ÆÄ¶ó¸ÞÅÍ.
<resource-ref> - ÀÚ¿ø ·¹ÆÛ·±½º Resource reference,
ÀüÇüÀûÀ¸·Î Tomcat 4 ¿¡ ¼³Á¤µÈ JDBC DataSource, JavaMail Session,
¶Ç´Â »ç¿ëÀÚ °´Ã¼ ÆÑÅ丮µé °°Àº ÀÚ¿øÀÇ °´Ã¼ ÆÑÅ丮¿¡ ´ëÇÑ °ÍÀÔ´Ï´Ù.
<resource-env-ref> - ÀÚ¿ø ȯ°æ Âü°í Resource
environment reference, ¼ºí¸´ 2.3 ¿¡ Ãß°¡µÈ resource-refÀÇ »õ·Î¿î
º¯È¯ÇüÅÂÀ̸ç ÀÎÁõÁ¤º¸°¡ ÇÊ¿äÇÏÁö ¾ÊÀº ÀÚ¿ø¿¡ ´ëÇÑ º¸´Ù ¼³Á¤ÀÌ °£´ÜÇÏ´Ù.
InitialContext ´Â À¥ ¾îÇø®ÄÉÀ̼ÇÀÌ Ã³À½À¸·Î ¹èÄ¡µÉ ¶§, ¼³Á¤µÇ°í,
(ÀбâÀü¿ë ¸ðµå·Î Á¢±Ù°¡´ÉÇÑ) À¥ ¾îÇø®ÄÉÀÌ¼Ç ÄÄÆ÷³ÍÆ®¿¡ ´ëÇØ À¯È¿ÇÏ°Ô µË´Ï´Ù.
¸ðµç ¼³Á¤µÈ ¿£Æ®¸®¿Í ÀÚ¿øÀº JNDI namespace ÀÇ java:comp/env ºÎºÐ
¿¡ ³õÀÌ°Ô µÇ°í, ÀÚ¿ø¿¡ ´ëÇÑ ÀüÇüÀûÀÎ Á¢±ÙÀº - ÀÌ °æ¿ì, JDBC DataSource
¿¡ ´ëÇØ¼- ´ÙÀ½°ú °°ÀÌ Æ¯Á¤ÇÑ °ÍÀ» ã½À´Ï´Ù:
 |  |  |  |
// ÇöÀç ȯ°æÀÇ naming Context ȹµæÇϱâ
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
// data source ã±â
DataSource ds = (DataSource)
envCtx.lookup("jdbc/EmployeeDB");
// Ç®·ÎºÎÅÍ connection ÇÒ´çÇÏ°í »ç¿ëÇϱâ
Connection conn = ds.getConnection();
... db¿¡ Á¢±ÙÇϱâ À§Çؼ ÀÌ connection »ç¿ëÇϱâ ...
conn.close();
|  |  |  |  |
JNDI¸¦ »ç¿ëÇÏ´Â ÇÁ·Î±×·¡¹Ö API¿¡ °üÇØ¼, ¶Ç´Â TomcatÀÌ ¿¡¹Ä·¹ÀÌÆ®ÇÏ´Â
Java2 Enterprise Edition (J2EE)¼¹ö¿¡¼ Áö¿øµÇ´Â Ư¡µé¿¡ ´ëÇØ ´õ ÀÚ¼¼ÇÑ Á¤º¸¸¦
¾ò±â À§Çؼ´Â ´ÙÀ½ÀÇ »ç¾ç¼¸¦ Âü°íÇϱ⠹ٶø´Ï´Ù:
|
| JNDI ÀÚ¿ø ¼³Á¤Çϱâ Configuring JNDI Resources |
°¢°¢ÀÇ À¯È¿ÇÑ JNDI ÀÚ¿øÀº $CATALINA_HOME/conf/server.xml
ÆÄÀÏ¿¡ ´ÙÀ½ ¿ä¼Ò¸¦ Æ÷ÇÔÇÏ´Â °Í¿¡ ±Ù°ÅÇÏ¿© ¼³Á¤µË´Ï´Ù:
- <Environment> -
JNDI
InitialContext¸¦ ÅëÇØ À¥¾îÇø®ÄÉÀ̼ǿ¡ ³ëÃâµÇ´Â
½ºÄ®¶ó ȯ°æ ¿£Æ®¸®¿¡ ´ëÇÑ À̸§µé°ú °ªµéÀ» ¼³Á¤ÇÕ´Ï´Ù.
(À¥¾îÇø®ÄÉÀÌ¼Ç ¹èÄ¡ Áö½ÃÀÚ¿¡ ÀÖ´Â <env-entry> ¿ä¼Ò¸¦
Æ÷ÇÔÇÑ °Í°ú °°À¾´Ï´Ù).
- <Resource> -
À̸§°ú ¾îÇø®ÄÉÀ̼ǿ¡¼ À¯È¿ÇÑ ÀÚ¿øÀÇ µ¥ÀÌÅÍ ÇüÀ» ÁöÁ¤ÇÕ´Ï´Ù.
(À¥¾îÇø®ÄÉÀÌ¼Ç ¹èÄ¡ Áö½ÃÀÚ¿¡¼
<resource-ref> ¿ä¼Ò¸¦
Æ÷ÇÔÇÑ °Í°ú °°À¾´Ï´Ù).
- <ResourceParams> -
»ç¿ëÇÒ ÀÚ¿ø factory implementation ÀÇ Àڹ٠Ŭ·¡½º¸í°ú ÀÚ¿ø factory ¸¦ ¼³Á¤ÇÏ´Â
µ¥ »ç¿ëµÇ´Â JavaBeans ÇÁ·ÎÆÛƼ¸¦ ¼³Á¤ÇÕ´Ï´Ù.
<Context> ¿ä¼Ò(ƯÁ¤ÇÑ À¥ ¾îÇø®ÄÉÀ̼ǰú
¿¬°üµÈ) ¶Ç´Â <DefaultContext> ¿ä¼Ò(
ÀÚµ¿À¸·Î ¹èÄ¡µÈ ¾îÇø®ÄÉÀ̼ÇÀ» À§ÇÑ default ¼³Á¤ Ư¼ºµéÀ» ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëµÇ´Â) ¾È¿¡
ÀÌµé ¿ä¼ÒµéÀÌ ¸î °³¶óµµ ÁßøµÉ ¼ö ÀÖ½À´Ï´Ù.
´õ¿ì±â, À¥ ¾îÇø®ÄÉÀÌ¼Ç ¹èÄ¡ Áö½ÃÀÚ(/WEB-INF/web.xml)¿¡ Æ÷ÇÔµÈ
¸ðµç <env-entry>ÀÇ À̸§µé°ú °ªµéÀº Ãʱâ ÄÁÅØ½ºÆ®¿¡ ¼³Á¤µÇ°í,
¸¸ÀÏ ´ëÀÀµÇ´Â <Environment> ¿ä¼Ò¿¡¼ (
override ¼Ó¼ºÀÌ "true" ·Î ÁöÁ¤ÇÔÀ¸·Î) Çã°¡µÇ¾ú´Ù¸é conf/server.xml
·ÎºÎÅÍ ´ëÀÀµÇ´Â °ªµéÀÌ ¿À¹ö¶óÀ̵ùµË´Ï´Ù.
|
| Tomcat Ç¥ÁØ ÀÚ¿ø ÆÑÅ丮 Tomcat Standard Resource Factories |
Tomcat 4´Â À¥ ¾îÇø®ÄÉÀ̼ǿ¡ ¼ºñ½º¸¦ Á¦°øÇϴ ǥÁØ ÀÚ¿ø ÆÑÅ丮
½Ã¸®Á Æ÷ÇÔÇÕ´Ï´Ù. À¯¿¬¼ºÀ» °®±â À§Çؼ À¥ ¾îÇø®ÄÉÀ̼ÇÀ̳ª
¼³Ä¡Áö½ÃÀÚ¸¦ ¼öÁ¤ÇÏÁö ¾Ê°í ($CATALINA_HOME/conf/server.xml ¿¡¼)
ȯ°æ¼³Á¤À» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡ÀÇ °¢ ¼ºê¼½¼ÇÀº ȯ°æ¼³Á¤°ú Ç¥ÁØ ÀÚ¿ø
ÆÑÅ丮ÀÇ »ç¿ë¿¡ ´ëÇØ¼ ÀÚ¼¼È÷ ¼³¸íÇÕ´Ï´Ù.
»ç¿ëÀÚ ÀÚ¿ø
ÆÑÅ丮 Ãß°¡Çϱâ Adding Custom Resource Factories ¸¦ º¸¸é,
¾î¶»°Ô ¸¸µé°í, ¼³Ä¡Çϰí, ¼³Á¤Çϰí, »ç¿ëÀÚÀÇ ÀÚ¿øÆÑÅ丮 Ŭ·¡½º¸¦
Tomcat 4¿¡¼ »ç¿ëÇÏ´Â ¹ýÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù.
NOTE - Ç¥ÁØ ÀÚ¿ø ÆÑÅ丮 Áß¿¡¼, "JDBC Data Source" ¿Í
"User Transaction" ÆÑÅ丮´Â ´Ù¸¥ Ç÷§Æû¿¡¼ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï µÇ¾î
ÀÖ½À´Ï´Ù¸¸ ±× Ç÷§ÆûÀÌ Java2 Enterprise Edition (J2EE) ½ºÆå¿¡ µû¸¦
°æ¿ì¸¸ ÇØ´çµË´Ï´Ù. Á÷Á¢ Á¦ÀÛÇÑ »ç¿ëÀÚ ÀÚ¿ø ÆÑÅ丮¸¦ Æ÷ÇÔÇØ¼ ´Ù¸¥
¸ðµç Ç¥ÁØ ÀÚ¿ø ÆÑÅ丮µéÀº Tomcat ¿¡¼¸¸ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç ´Ù¸¥ ÄÁ
Å×À̳ʿ¡¼ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï µÇ¾îÀÖÁö´Â ¾Ê½À´Ï´Ù.
| JavaMail Sessions |
0. ¼Ò°³ Introduction
¸¹Àº À¥ ¾îÇø®ÄÉÀ̼ǿ¡¼, email ¸Þ½ÃÁö º¸³»±â´Â ½Ã½ºÅÛ ±â´É¿¡¼
¿äûµÇ´Â ºÎºÐÀÔ´Ï´Ù. Java Mail API
´Â »ó´ëÀûÀ¸·Î ½±°Ô ó¸®ÇÒ ¼ö ÀÖ°Ô Çß½À´Ï´Ù¸¸, ¸¹Àº Ŭ¶óÀÌ¾ðÆ® ¾îÇÃ
¸®ÄÉÀ̼ÇÀÌ ¾Ë°í ÀÖ¾î¾ß ÇÒ ¸¹Àº ȯ°æ¼³Á¤À» ÇÊ¿ä·Î ÇÕ´Ï´Ù. (¿¹¸¦ µé¸é
¸Þ½ÃÁö¸¦ º¸³»´Â µ¥ »ç¿ëµÇ´Â SMTP È£½ºÆ® ¸í °°Àº °ÍÀÔ´Ï´Ù.)
Tomcat 4 ´Â javax.mail.Session ¼¼¼Ç ÀνºÅϽº¸¦ ¸¸µå´Â
Ç¥ÁØ ÀÚ¿ø ÆÑÅ丮¸¦ Æ÷ÇÔÇÕ´Ï´Ù, server.xml ¿¡ SMTP ¼¹ö°¡
¼³Á¤/¿¬°áµÇ¾î ÀÖ´Ù¸é ¸»ÀÌÁÒ. À̰°Àº ¹æ¹ýÀ¸·Î ¾îÇø®ÄÉÀ̼ÇÀº email ¼¹ö
¼³Á¤ ȯ°æ¿¡¼ ¿ÏÀüÈ÷ °Ý¸®µË´Ï´Ù - ÇÊ¿äÇÒ ¶§¸¶´Ù ´Ü¼øÈ÷ ¹Ì¸® ¼³Á¤µÈ
¼¼¼ÇÀ» ¿äûÇϰí, ¹Þ¾Æ¿À¸é µË´Ï´Ù.
À̰Ϳ¡ ´ëÇÑ °úÁ¤µéÀº ¾Æ·¡ ¼³¸íÇϰڽÀ´Ï´Ù.
1. ÀÚ¿ø ¿ä°Ç ¼±¾ðÇϱâ Declare Your Resource Requirements
óÀ½¿¡ À¥ ¾îÇø®ÄÉÀÌ¼Ç ¼³Ä¡ Áö½ÃÀÚ(/WEB-INF/web.xml) ¸¦
¼öÁ¤Çؼ ¹Ì¸® ¼³Ä¡µÈ ¼¼¼ÇÀ» ã´Â JNDI ¸íÀ» ¼±¾ðÇÕ´Ï´Ù. ±Ô¾à¿¡ ÀÇÇϸé, ¸ðµç
À̸§Àº mail ¼ºêÄÁÅØ½ºÆ®·Î °á¸»Áö¾îÁ®¾ß ÇÕ´Ï´Ù.(Á¦°øµÈ ¸ðµç
ÀÚ¿ø ÆÑÅ丮ÀÇ ·çÆ®°¡ µÇ´Â Ç¥ÁØ java:comp/env ³×ÀÌ¹Ö ÄÁÅØ½ºÆ®¿¡
»ó´ëÀûÀÔ´Ï´Ù.) ÀüÇüÀûÀÎ web.xml ¿£Æ®¸®´Â ´ÙÀ½°ú °°½À´Ï´Ù:
 |  |  |  |
<resource-ref>
<description>
javax.mail.Session ÀνºÅϽºÀÇ ÆÑÅ丮¿¡ ´ëÇÑ ÀÚ¿ø ÂüÁ¶ÀÔ´Ï´Ù.
Àû´çÇÑ SMTP ¼¹ö¿¡ ¿¬°áµÇ¾î ÀÖ´Ù¸é email À» º¸³¾ ¶§ »ç¿ë
µË´Ï´Ù.
Resource reference to a factory for javax.mail.Session
instances that may be used for sending electronic mail
messages, preconfigured to connect to the appropriate
SMTP server.
</description>
<res-ref-name>
mail/Session
</res-ref-name>
<res-type>
javax.mail.Session
</res-type>
<res-auth>
Container
</res-auth>
</resource-ref>
|  |  |  |  |
°æ°í WARNING - À¥ ¾îÇø®ÄÉÀÌ¼Ç ¼³Ä¡ Áö½ÃÀÚÀÇ DTD¿¡
¿ä±¸µÇ´Â ¿ä¼ÒÀÇ ¼ø¼°¡ Á¦´ë·Î µÇ¾îÀÖ´ÂÁö È®½ÇÈ÷ ÇØ¾ß ÇÕ´Ï´Ù!
ÀÚ¼¼ÇÑ ³»¿ëÀº
Servlet
Specification ¸¦ º¸½Ê½Ã¿À.
2. ÀÌ ÀÚ¿øÀ» »ç¿ëÇÏ´Â ¾îÇø®ÄÉÀÌ¼Ç ÄÚµùÇϱâ Code Your Application's Use Of This Resource
ÀÌ ÀÚ¿ø ÂüÁ¶(resource reference)ÀÇ »ç¿ë¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù:
 |  |  |  |
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
Session session = (Session) envCtx.lookup("mail/Session");
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(request.getParameter("from"));
InternetAddress to[] = new InternetAddress[1];
to[0] = new InternetAddress(request.getParameter("to"));
message.setRecipients(Message.RecipientType.TO, to);
message.setSubject(request.getParameter("subject"));
message.setContent(request.getParameter("content"), "text/plain");
Transport.send(message);
|  |  |  |  |
¾Ë¾ÆµÑ Á¡Àº ¾îÇø®ÄÉÀ̼ÇÀÌ À¥ ¾îÇø®ÄÉÀÌ¼Ç ¼³Ä¡ Áö½ÃÀÚ¿¡¼ ¼±¾ðµÈ
°°Àº ÀÚ¿øÂüÁ¶ À̸§À» »ç¿ëÇÑ´Ù´Â °ÍÀÔ´Ï´Ù.
À̰ÍÀº $CATALINA_HOME/conf/server.xml
¿¡¼ ¼³Á¤µÈ ÀÚ¿ø ÆÑÅ丮¿Í ¾Æ·¡Ã³·³ ´ëÄ¡µÉ ¼ö ÀÖ½À´Ï´Ù.
3. Tomcat ÀÇ ÀÚ¿ø ÆÑÅ丮 ¼³Á¤Çϱâ
TomcatÀÇ ÀÚ¿ø ÆÑÅ丮 ȯ°æ¼³Á¤¸¦ Çϱâ À§Çؼ´Â, $CATALINA_HOME/conf/server.xml
ÆÄÀÏ¿¡¼ ÀÌ À¥ ¾îÇø®ÄÉÀ̼ÇÀÇ Context ¿ä¼Ò(or nested inside
a DefaultContext element for the surrounding
<Host> or <Engine> element.)
¾È¿¡ ´ÙÀ½ÀÇ ¿ä¼Ò¸¦ Ãß°¡ÇÕ´Ï´Ù.
 |  |  |  |
<Context ...>
...
<Resource name="mail/Session" auth="Container"
type="javax.mail.Session"/>
<ResourceParams name="mail/Session">
<parameter>
<name>mail.smtp.host</name>
<value>localhost</value>
</parameter>
</ResourceParams>
...
</Context>
|  |  |  |  |
ÁÖÀÇÇÒ Á¡Àº ÀÚ¿ø À̸§(¿©±â¼, mail/Session)Àº ¹Ýµå½Ã
À¥ ¾îÇø®ÄÉÀÌ¼Ç ¼³Ä¡ Áö½ÃÀÚ¿¡ ÁöÁ¤µÈ °ª°ú ÀÏÄ¡ÇØ¾ß ÇÕ´Ï´Ù.
ÇöÀç »ç¿ëÇÏ´Â ³×Æ®¿÷ÀÇ SMTP ¼ºñ½º¸¦ Á¦°øÇÏ´Â ¼¹öÀÇ ÁÖ¼Ò¸¦
mail.smtp.host ÆÄ¶ó¸ÞÅÍÀÇ °ª¿¡ º¯°æÇØ ÁֽʽÿÀ.
Example ¾îÇø®ÄÉÀ̼Ç
Tomcat¿¡ Æ÷ÇԵǾî ÀÖ´Â /examples ¾îÇø®ÄÉÀ̼ÇÀº
ÀÌ ÀÚ¿ø ÆÑÅ丮¸¦ »ç¿ëÇÏ´Â ¿¹Á¦¸¦ °®°í ÀÖ½À´Ï´Ù. "JSP Examples" ¸µÅ©
¸¦ ÅëÇØ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. ½ÇÁ¦·Î ¸ÞÀÏ ¸Þ½ÃÁö¸¦ º¸³»´Â ¼ºí¸´ÀÇ
¼Ò½º ÄÚµå´Â /WEB-INF/classes/SendMailServlet.java ¿¡
ÀÖ½À´Ï´Ù.
°æ°í WARNING - ±âº» ¼³Á¤È¯°æÀº SMTP ¼¹ö°¡
localhost ÀÇ 25¹ø Æ÷Æ®¸¦ »ç¿ëÇϰí ÀÖ´Ù°í °¡Á¤ÇÕ´Ï´Ù.
±×·¸Áö ¾Ê´Ù¸é, $CATALINA_HOME/conf/server.xml ÆÄÀÏÀ»
¿¾î¼, mail.smtp.host ÆÄ¶ó¸ÞÅÍ¿¡ ¸Â´Â °ª¿¡ ÇöÀç
»ç¿ëÇÏ´Â ³×Æ®¿öÅ©¿¡¼ »ç¿ë°¡´ÉÇÑ SMTP ¼¹öÀÇ À̸§À¸·Î ¼öÁ¤ÇØÁֽʽÿÀ.
|
|
| Ä¿½ºÅÒ ÀÚ¿ø ÆÑÅ丮 Ãß°¡Çϱâ Adding Custom Resource Factories |
Ç¥ÁØ ÀÚ¿ø ÆÑÅ丮ÀÇ ¾î´À°Íµµ ÇÊ¿äÇÏÁö ¾Ê´Â´Ù¸é, Á÷Á¢ ÆÑÅ丮¸¦ ¸¸µé¾î¼
Tomcat 4 ¿¡ ÅëÇÕÇÒ ¼ö ÀÖ°í, ÀÌ ÆÑÅ丮¸¦ »ç¿ëÇϱâ À§ÇØ conf/server.xml
ȯ°æÆÄÀÏ¿¡ ¼³Á¤ÇØ ³ÖÀ» ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡ ¿¹Á¦¿¡¼ ÆÑÅ丮¸¦ Çϳª
¸¸µé¾î º¸°Ú½À´Ï´Ù. À§¿¡ ÀÖ´Â
ÀϹÝÀûÀÎ JavaBean ÀÚ¿ø À¸·ÎºÎÅÍ com.mycompany.MyBean ºóÀ»
¾î¶»°Ô »ý¼ºÇÏ´ÂÁö ¾Æ´Â ÆÑÅ丮ÀÔ´Ï´Ù.
1. ÀÚ¿ø ÆÑÅ丮 Ŭ·¡½º ¸¸µé±â Write A Resource Factory Class
JNDI ¼ºñ½º Á¦°øÀÚ javax.naming.spi.ObjectFactory ÀÎÅÍÆäÀ̽º
¸¦ ±¸ÇöÇϴ Ŭ·¡½º¸¦ ¸¸µé¾î¾ß ÇÕ´Ï´Ù. À¥ ¾îÇø®ÄÉÀ̼ÇÀÌ ÀÌ ÆÑÅ丮¿¡ ¿¬°áµÈ
ÄÁÅØ½ºÆ® ¿£Æ®¸®¿¡ lookup() À» È£ÃâÇÒ ¶§¸¶´Ù, getObjectInstance()
¸Þ¼Òµå°¡ ´ÙÀ½ argumentµé°ú ÇÔ²² È£ÃâµË´Ï´Ù:
- Object obj - °´Ã¼¸¦ »ý¼ºÇÏ´Â µ¥ »ç¿ëµÇ´Â À§Ä¡³ª
·¹ÆÛ·±½º Á¤º¸¸¦ Æ÷ÇÔÇÏ´Â (nullÀÏ ¼öµµ ÀÖ´Â) object. Tomcat ¿¡¼´Â,
À̰ÍÀº Ç×»ó
javax.naming.Reference ŸÀÔÀÇ °´Ã¼°¡ µË´Ï´Ù.
ÀÌ ÆÑÅ丮 Ŭ·¡½ºÀÇ Å¬·¡½º¸í°ú ¹ÝȯµÉ °´Ã¼¸¦ ¸¸µå´Âµ¥ »ç¿ëÇÒ È¯°æ
ÇÁ·ÎÆÛƼ(conf/server.xml¿¡ ÀÖ´Â)¸¦ °®°í ÀÖ´Â °ÍÀÔ´Ï´Ù.
- Name name - ÁöÁ¤µÈ À̸§ÀÌ ¾ø´Ù¸é ÀÌ ÆÑÅ丮°¡
nameCtx, ¶Ç´Â null¿¡ »ó´ëÀûÀ¸·Î ¿¬°áµÉ À̸§.
- Context nameCtx -
name ÆÄ¶ó¸ÞÅÍ·Î ÁöÁ¤µÈ
°ÍÀ̳ª, nameÀÌ ±âº» Ãʱâ ÄÁÅØ½ºÆ®¿¡ »ó´ëÀûÀ̶ó¸é
null ¿¡ »ó´ëÀûÀÎ ÄÁÅØ½ºÆ®.
- Hashtable environment - (nullÀÏ ¼öµµ ÀÖ´Â) ÀÌ °´Ã¼¸¦
»ý¼ºÇϴµ¥ »ç¿ëµÇ´Â ȯ°æ. À̰ÍÀº ÀϹÝÀûÀ¸·Î Tomcat °´Ã¼ ÆÑÅ丮¿¡¼
¹«½ÃµË´Ï´Ù.
MyBean ÀνºÅϽº¸¦ ¸¸µé¼ö ÀÖ´Â ÀÚ¿øÆÑÅ丮¸¦ »ý¼ºÇÏ·Á¸é
Ŭ·¡½º¸¦ ÀÌó·³ ¸¸µé¾î¾ß ÇÕ´Ï´Ù:
 |  |  |  |
package com.mycompany;
import java.util.Enumeration;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.Name;
import javax.naming.NamingException;
import javax.naming.RefAddr;
import javax.naming.Reference;
import javax.naming.spi.ObjectFactory;
public class MyBeanFactory implements ObjectFactory {
public Object getObjectInstance(Object obj,
Name name, Context nameCtx, Hashtable environment)
throws NamingException {
// Acquire an instance of our specified bean class
MyBean bean = new MyBean();
// Customize the bean properties from our attributes
Reference ref = (Reference) obj;
Enumeration addrs = ref.getAll();
while (addrs.hasMoreElements()) {
RefAddr addr = (RefAddr) addrs.nextElement();
String name = addr.getType();
String value = (String) addr.getContent();
if (name.equals("foo")) {
bean.setFoo(value);
} else if (name.equals("bar")) {
try {
bean.setBar(Integer.parseInt(value));
} catch (NumberFormatException e) {
throw new NamingException("Invalid 'bar' value " + value);
}
}
}
// Return the customized instance
return (bean);
}
}
|  |  |  |  |
ÀÌ ¿¹Á¦¿¡¼, ¹«Á¶°ÇÀûÀ¸·Î »õ·Î¿î com.mycompany.MyBean Ŭ·¡½º
ÀÇ ÀνºÅϽº¸¦ ¸¸µé¾ú°í, (¾Æ·¡ Âü°í) ÀÌ ÆÑÅ丮¸¦ ±¸¼ºÇÏ´Â
<ResourceParams> ¿ä¼Ò¿¡ Æ÷ÇÔµÈ ÆÄ¶ó¸ÞÅ͵鿡 ±Ù°ÅÇÏ¿©
ÇÁ·ÎÆÛƼµéÀ» populating Çß½À´Ï´Ù.
¾Ë¾ÆµÑ °ÍÀº factory·Î ¸í¸íµÈ ¾î¶² ÆÄ¶ó¸ÞÅ͵µ ±×³É ³Ñ¾î°¡¾ß ÇÕ´Ï´Ù.
- ±× ÆÄ¶ó¸ÞÅÍ´Â ÆÑÅ丮 Ŭ·¡½º ÀÚ½ÅÀÇ À̸§À» ÁöĪÇϴµ¥ »ç¿ëµË´Ï´Ù. (ÀÌ ¿¹Á¦¿¡¼±,
com.mycompany.MyBeanFactory) ¼³Á¤µÈ beanÀÇ ÇÁ·ÎÆÛƼ¿¡ »ç¿ëµÇÁö´Â
¾Ê½À´Ï´Ù.
ObjectFactory ¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â
JNDI 1.2 Service
Provider Interface (SPI) SpecificationÀ» º¸½Ê½Ã¿À.
ÀÌ Å¬·¡½º¸¦ ÄÄÆÄÀÏ ÇÒ ¶§ $CATALINA_HOME/common/lib ¿Í
$CATALINA_HOME/server/lib µð·ºÅ丮¿¡ ÀÖ´Â ¸ðµç JAR ÆÄÀÏÀ»
Æ÷ÇÔÇÑ class path °¡ ÇÊ¿äÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ·² °æ¿ì, ÆÑÅ丮 Ŭ·¡½º(
±×¸®°í »ó°üµÈ bean Ŭ·¡½º)¸¦ $CATALINA_HOME/common/classes
¶Ç´Â JAR ÆÄÀÏÀ» $CATALINA_HOME/common/lib ¿¡ À§Ä¡½ÃŰ½Ê½Ã¿À.
ÀÌ·± ¹æ½ÄÀ¸·Î, ÇÊ¿äÇÑ Å¬·¡½º ÆÄÀϵéÀº Catalina ³»ºÎ ÀÚ¿øµé°ú À¥ ¾îÇø®ÄÉÀ̼Ç
¸ðµÎ ¹Ý¿µµÉ ¼ö ÀÖ½À´Ï´Ù.
2. ÀÚ¿ø ¿ä°Ç ¼±¾ðÇϱâ Declare Your Resource Requirements
´ÙÀ½À¸·Î, À¥ ¾îÇø®ÄÉÀÌ¼Ç ¼³Ä¡ Áö½ÃÀÚ (/WEB-INF/web.xml)
¸¦ ¼öÁ¤Çؼ ÀÌ ºóÀÇ »õ·Î¿î ÀνºÅϽº¸¦ ¿äûÇÒ ¶§ ¾µ JNDI ¸íÀ» ¼±¾ðÇÕ´Ï´Ù.
°¡Àå °£´ÜÇÑ Á¢±ÙÀº ´ÙÀ½°ú °°ÀÌ <resource-env-ref> ¿ä¼Ò
¸¦ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù:
 |  |  |  |
<resource-env-ref>
<description>
Object factory for MyBean instances.
</description>
<resource-env-ref-name>
bean/MyBeanFactory
</resource-env-ref-name>
<resource-env-ref-type>
com.mycompany.MyBean
</resource-env-ref-type>
<resource-env-ref>
|  |  |  |  |
ÁÖÀÇ WARNING - À¥ ¾îÇø®ÄÉÀÌ¼Ç ¼³Ä¡ Áö½ÃÀÚÀÇ DTD
¿¡ ¿ä±¸µÇ´Â ¿ä¼ÒÀÇ ¼ø¼°¡ Á¦´ë·ÎÀÎÁö È®ÀÎÇϽʽÿÀ. ÀÚ¼¼ÇÑ ³»¿ëÀº
Servlet
Specification ¸¦ È®ÀÎÇϽʽÿÀ.
3. ÀÌ ÀÚ¿øÀ» »ç¿ëÇÏ´Â ¾îÇø®ÄÉÀÌ¼Ç ÄÚµùÇϱâ Code Your Application's Use Of This Resource
ÀÌ ÀÚ¿ø ȯ°æ ÂüÁ¶(resource environment reference)ÀÇ »ç¿ëÀº
´ÙÀ½°ú °°½À´Ï´Ù:
 |  |  |  |
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
MyBean bean = (MyBean) envCtx.lookup("bean/MyBeanFactory");
writer.println("foo = " + bean.getFoo() + ", bar = " +
bean.getBar());
|  |  |  |  |
4. TomcatÀÇ ÀÚ¿ø ÆÑÅ丮 ȯ°æ¼³Á¤ Configure Tomcat's Resource Factory
TomcatÀÇ ÀÚ¿ø ÆÑÅ丮 ȯ°æ¼³Á¤¸¦ Çϱâ À§Çؼ´Â, $CATALINA_HOME/conf/server.xml
ÆÄÀÏ¿¡¼ ÀÌ À¥ ¾îÇø®ÄÉÀ̼ÇÀÇ Context ¿ä¼Ò(or nested inside
a DefaultContext element for the surrounding
<Host> or <Engine> element.)
¾È¿¡ ´ÙÀ½ÀÇ ¿ä¼Ò¸¦ Ãß°¡ÇÕ´Ï´Ù.
 |  |  |  |
<Context ...>
...
<Resource name="bean/MyBeanFactory" auth="Container"
type="com.mycompany.MyBean"/>
<ResourceParams name="bean/MyBeanFactory">
<parameter>
<name>factory</name>
<value>com.mycompany.MyBeanFactory</value>
</parameter>
<parameter>
<name>bar</name>
<value>23</value>
</parameter>
</ResourceParams>
...
</Context>
|  |  |  |  |
ÁÖÀÇÇÒ Á¡Àº ÀÚ¿ø À̸§(¿©±â¼, bean/MyBeanFactory)Àº ¹Ýµå½Ã
À¥ ¾îÇø®ÄÉÀÌ¼Ç ¼³Ä¡ Áö½ÃÀÚ¿¡ ÁöÁ¤µÈ °ª°ú ÀÏÄ¡ÇØ¾ß ÇÕ´Ï´Ù. ¶ÇÇÑ bar
ÇÁ·ÎÆÛƼÀÇ °ªÀ» ÃʱâÈÇÕ´Ï´Ù, À̰ÍÀº »õ·Î¿î ºóÀÌ ¹ÝȯµÇ±â Àü¿¡
setBar(23) °¡ È£ÃâµÇ°Ô ÇÕ´Ï´Ù. foo ÇÁ·ÎÆÛƼ¸¦
ÃʱâÈ ÇÏÁö ¾Ê¾Ò±â ¶§¹®¿¡, ºóÀº ±âº»°ªÀÌ ¹«¾ùÀÌµç ±×°ÍÀÇ »ý¼ºÀÚ¿¡ ÀÇÇØ
¸¸µé¾îÁø °ªÀ» °®°Ô µÉ °ÍÀÔ´Ï´Ù.
¾îÇø®ÄÉÀÌ¼Ç °³¹ßÀÚÀÇ °üÁ¡°ú ÀÚ¿øÈ¯°æÂüÁ¶ÀÇ ¼±¾ðÇÒ ¶§, »õ·Î¿î ÀνºÅϽº¸¦
¿äûÇÏ´Â µ¥ »ç¿ëµÉ ÇÁ·Î±×·¡¹ÖÇÒ ¶§ ¾Ë¾ÆµÎ¾î¾ß ÇÒ °ÍÀº Generic JavaBean
Resources ¿¹Á¦¿¡ »ç¿ëµÈ Á¢±Ù¹æ½Ä°ú µ¿ÀÏÇÕ´Ï´Ù. À̰ÍÀÌ ¸»ÇÏ´Â ¹Ù´Â
JNDI ÀÚ¿ø »ç¿ëÀÇ ÀåÁ¡ÁßÀÇ Çϳª´Â ±â´ÉÀÇ Ä¸½¶È(encapsulate funtionality) ÀÔ´Ï´Ù.
- ÀÚ¿øÀ» »ç¿ëÇÏ´Â ¾îÇø®ÄÉÀ̼ÇÀÇ ¼Ò½º¸¦ ¼öÁ¤ÇÒ ÇÊ¿ä¾øÀÌ ±â¹Ý ±¸ÇöÀ» ¹Ù²Ü ¼ö
ÀÖ½À´Ï´Ù. ´Ü, ȣȯµÇ´Â API¸¦ À¯ÁöÇØ¾ß ÇÕ´Ï´Ù.
¿øº»:http://jakarta.apache.org/tomcat/tomcat-4.0-doc/jndi-resources-howto.html
|
|