|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
ÀÌÀü Ŭ·¡½º ´ÙÀ½ Ŭ·¡½º | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
°³¿ä: NESTED | Çʵå | »ý¼ºÀÚ | ¸Þ¼µå | »ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå |
java.lang.Objectjava.rmi.server.RMIClassLoader
public class RMIClassLoader
RMIClassLoader
´Â
RMI¸¦ »ç¿ëÇØ µ¿ÀûÀ¸·Î Ŭ·¡½º¸¦ ·ÎµåÇϱâ À§ÇÑ static ¸Þ¼µå·ÎºÎÅÍ ±¸¼ºµË´Ï´Ù. ÀÌ Å¬·¡½º ·Î´õ¿¡°Ô´Â ³×Æ®¿öÅ©ÀÇ Àå¼Ò (1°³
ÀÌ»óÀÇ URL)¿¡¼ Ŭ·¡½º¸¦ ·ÎµåÇÏ´Â ¸Þ¼µå³ª, ±âÁ¸ÀÇ Å¬·¡½º°¡ Æ÷ÇԵǰí ÀÖ´Â Àå¼Ò¸¦ ¾ò´Â ¸Þ¼µå°¡ »ðÀԵǾî
ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ¸Þ¼µå´Â ¸®¸ðÆ® ¸Þ¼µå È£ÃâÀÇ Àμö³ª ¹Ýȯ°ª¿¡ Æ÷ÇԵǴ Ŭ·¡½º¸¦ Á¤·ÄÈ ¹× ºñÁ¤·ÄÈÇÒ ¶§, RMI ·±Å¸ÀÓ¿¡ ÀÇÇØ »ç¿ëµË´Ï´Ù. ¶Ç, ÀÌ·¯ÇÑ ¸Þ¼µå¸¦ ¾îÇø®ÄÉÀ̼ÇÀ¸·ÎºÎÅÍ Á÷Á¢ È£ÃâÇØ, Ŭ·¡½º¸¦ µ¿ÀûÀ¸·Î ·ÎµåÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
´ÙÀ½ÀÇ static ¸Þ¼µåÀÇ ±¸ÇöÀº ¼ºñ½º ÇÁ·Î¹ÙÀÌ´õ ÀÎÅÍÆäÀ̽º RMIClassLoaderSpi
ÀνºÅϽº¿¡ ÀÇÇØ Á¦°øµË´Ï´Ù.
loadClass(URL, String)
loadClass(String, String)
loadClass(String, String, ClassLoader)
loadProxyClass(String, String[], ClassLoader)
getClassLoader(String)
getClassAnnotation(Class)
¼ºñ½º ÇÁ·Î¹ÙÀÌ´õ ÀνºÅϽº´Â ´ÙÀ½°ú °°ÀÌ ¼±Åõ˴ϴÙ.
java.rmi.server.RMIClassLoaderSpi
°¡ Á¤Àǵǰí ÀÖ´Â °æ¿ì, ±× °ªÀÌ "default"
¶§´Â getDefaultProviderInstance()
¸Þ¼µå È£ÃâÀÇ ¹Ýȯ°ªÀ¸·Î °¡¸®Å°´Â ÇÁ·Î¹ÙÀÌ´õ ÀνºÅϽº°¡ ¼±ÅõȴÙ. ÀÌ ½Ã½ºÅÛ ÇÁ·ÎÆÛƼ°¡ "default"
ÀÌ¿ÜÀÇ °ª ¶§´Â ½Ã½ºÅÛ Å¬·¡½º ·Î´õ (ClassLoader.getSystemClassLoader()
¸¦
ÂüÁ¶)°¡ ½Ã½ºÅÛ ÇÁ·ÎÆÛƼ·Î °¡¸®Å°´Â Ŭ·¡½º¸¦ ·Îµå ÇÒ ¼ö ÀÖ¾î ±× Å¬·¡½º¸¦ RMIClassLoaderSpi
¿¡ ÇÒ´çÇÒ ¼ö°¡ ÀÖ¾î Àμö°¡ ¾ø´Â public »ý¼ºÀÚ¸¦ °¡Áö´Â °æ¿ì, ÇÁ·Î¹ÙÀÌ´õ ÀνºÅϽº ÀÛ¼º½Ã¿¡ ±× »ý¼ºÀÚ°¡ ºÒ·Á °£´Ù. ÀÌ ½Ã½ºÅÛ ÇÁ·ÎÆÛƼ°¡ Á¤Àǵǰí ÀÖ´Â °æ¿ì¿¡¼µµ, ÀÌ·¯ÇÑ Á¶°ÇÀÌ Ã¤¿öÁöÁö ¾ÊÀº °æ¿ì´Â RMIClassLoader
¸¦ »ç¿ëÀ» ½ÃµµÇÏ´Â Äڵ忡 ´ëÇØ¼
ÇÁ·Î¹ÙÀÌ´õ ÀνºÅϽºÀÇ Ãëµæ¿¡ ½ÇÆÐÇÑ °ÍÀ» ³ªÅ¸³»´Â ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀº Error
°¡ Throw µÈ´Ù
META-INF/services/java.rmi.server.RMIClassLoaderSpi
¶ó°í ÇÏ´Â ÀÚ¿øÀÌ »ðÀԵǾî
ÀÖ´Â °æ¿ì, ÀÌ ÀÚ¿øÀÇ ³»¿ëÀº ÇÁ·Î¹ÙÀÌ´õÀÇ ±¸¼º ÆÄÀϷμ ÇØ¼®µÇ¾î ÀÌ ÆÄÀÏÀÇ ÃÖÃÊ·Î °¡¸®Å°´Â Ŭ·¡½º¸íÀÌ ÇÁ·Î¹ÙÀÌ´õÀÇ Å¬·¡½º¸íÀ¸·Î¼ »ç¿ëµÈ´Ù. ½Ã½ºÅÛ Å¬·¡½º ·Î´õ°¡ ±× À̸§À» °¡Áö´Â Ŭ·¡½º¸¦ ·Îµå ÇÒ ¼ö ÀÖ¾î ±× Å¬·¡½º¸¦ RMIClassLoaderSpi
¿¡ ÇÒ´çÇÒ ¼ö°¡ ÀÖ¾î Àμö°¡ ¾ø´Â public »ý¼ºÀÚ¸¦ °¡Áö´Â °æ¿ì´Â ÇÁ·Î¹ÙÀÌ´õ ÀνºÅϽº ÀÛ¼º½Ã¿¡ ±× »ý¼ºÀÚ°¡ ºÒ·Á °£´Ù. ÀÌ ÀÚ¿øÀÌ »ðÀԵǾî
À־, ÇÁ·Î¹ÙÀÌ´õ¸¦ ÀνºÅϽºÈÇÒ ¼ö ¾ø´Â °æ¿ì´Â RMIClassLoader
¸¦ »ç¿ëÀ» ½ÃµµÇÏ´Â Äڵ忡 ´ëÇØ¼
ÇÁ·Î¹ÙÀÌ´õ ÀνºÅϽºÀÇ Ãëµæ¿¡ ½ÇÆÐÇÑ °ÍÀ» ³ªÅ¸³»´Â ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀº Error
°¡ Throw µÈ´Ù
getDefaultProviderInstance()
¸Þ¼µå È£ÃâÀÇ ¹Ýȯ°ªÀ¸·Î °¡¸®Å°´Â ÇÁ·Î¹ÙÀÌ´õ ÀνºÅϽº°¡ ¼±ÅõȴÙ
RMIClassLoaderSpi
¸Þ¼µå °³¿ä | |
---|---|
static String |
getClassAnnotation (Class <? > cl)
Ŭ·¡½º Á¤ÀÇÀÇ À§Ä¡¸¦ ³ªÅ¸³»´Â ÁÖ¼® ij¸¯ÅÍ ¶óÀÎÀ» ¸®ÅÏÇÕ´Ï´Ù. |
static ClassLoader |
getClassLoader (String codebase)
ÁöÁ¤µÈ ÄÚµå º£À̽º URL ÆÐ½º·ÎºÎÅÍ Å¬·¡½º¸¦ ·ÎµåÇϴ Ŭ·¡½º ·Î´õ¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
static RMIClassLoaderSpi |
getDefaultProviderInstance ()
¼ºñ½º ÇÁ·Î¹ÙÀÌ´õ ÀÎÅÍÆäÀ̽º RMIClassLoaderSpi
µðÆúÆ® ÇÁ·Î¹ÙÀÌ´õÀÇ Ç¥ÁØ ÀνºÅϽº¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
static Object |
getSecurityContext (ClassLoader loader)
ÃßõÇÏÁö ¾Ê½À´Ï´Ù. ´ëü´Â ¾ø½À´Ï´Ù. Java 2 Ç÷§Æû 1.2 ÀÌÈÄÀÇ RMI ¿¡¼´Â Ŭ·¡½º ·Î´õÀÇ ½ÃÅ¥·¯Æ¼ ÄÁÅØ½ºÆ®¸¦ ÃëµæÇϱâ À§Çؼ ÀÌ ¸Þ¼µå¸¦ »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù. |
static Class <? > |
loadClass (String name)
ÃßõÇÏÁö ¾Ê½À´Ï´Ù. loadClass(String, String) ¸Þ¼µå·Î ¿Å°ÜÁ³½À´Ï´Ù. |
static Class <? > |
loadClass (String codebase,
String name)
ÁöÁ¤µÈ ÄÚµå º£À̽º URL ÆÐ½º·ÎºÎÅÍ Å¬·¡½º¸¦ ·ÎµåÇÕ´Ï´Ù. |
static Class <? > |
loadClass (String codebase,
String name,
ClassLoader defaultLoader)
ÁöÁ¤µÈ ÄÚµå º£À̽º URL ÆÐ½º·ÎºÎÅÍ Å¬·¡½º¸¦ ·ÎµåÇÕ´Ï´Ù. |
static Class <? > |
loadClass (URL codebase,
String name)
ÁöÁ¤µÈ ÄÚµå º£À̽º URL ·ÎºÎÅÍ Å¬·¡½º¸¦ ·ÎµåÇÕ´Ï´Ù. |
static Class <? > |
loadProxyClass (String codebase,
String [] interfaces,
ClassLoader defaultLoader)
ÁöÁ¤µÈ À̸§À» °¡Áö´Â ÀÎÅÍÆäÀ̽º±ºÀ» ±¸ÇöÇÑ µ¿Àû ÇÁ·Ï½Ã Ŭ·¡½º ( Proxy ¸¦
ÂüÁ¶)¸¦, ÁöÁ¤µÈ ÄÚµå º£À̽º URL ÆÐ½º·ÎºÎÅÍ ·ÎµåÇÕ´Ï´Ù. |
Ŭ·¡½º java.lang. Object ·ÎºÎÅÍ »ó¼ÓµÈ ¸Þ¼µå |
---|
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
¸Þ¼µåÀÇ »ó¼¼ |
---|
@Deprecated public static Class <? > loadClass(String name) throws MalformedURLException, ClassNotFoundException
loadClass(String, String)
¸Þ¼µå·Î ¿Å°ÜÁ³½À´Ï´Ù.
name
¸¦ À̸§¿¡ °¡Áö´Â Ŭ·¡½º¸¦ ·ÎµåÇÕ´Ï´Ù.
ÀÌ ¸Þ¼µå´Â 󸮸¦ loadClass(String, String)
¸Þ¼µå¿¡ À§¾ç ÇÕ´Ï´Ù. 1¹øÂ°ÀÇ Àμö¿¡´Â null
ÀÌ
2¹øÂ°ÀÇ Àμö¿¡´Â name
°¡ °Ç³×¹Þ½À´Ï´Ù.
name
- ·Îµå ´ë»ó Ŭ·¡½ºÀÇ À̸§
Class
°´Ã¼
MalformedURLException
- Ŭ·¡½º ·Îµå½Ã¿¡ »ç¿ëµÈ ÇÁ·Î¹ÙÀÌ´õ °íÀ¯ URL°¡ ¹«È¿ÀÎ °æ¿ì
ClassNotFoundException
- Ŭ·¡½ºÀÇ Á¤Àǰ¡ ÄÚµå º£À̽ºÀÇ À§Ä¡¿¡ ¾ø¾ú´ø °æ¿ìloadClass(String, String)
public static Class <? > loadClass(URL codebase, String name) throws MalformedURLException, ClassNotFoundException
codebase
°¡ null
ÀÎ °æ¿ì, ÀÌ ¸Þ¼µåÀÇ µ¿ÀÛÀº ¸Þ¼µå loadClass(String, String)
Àμö¿¡ null
codebase
¿Í
µ¿ÀÏ Å¬·¡½º¸íÀ» ÁöÁ¤ÇßÀ» °æ¿ì¿Í °°°Ô µË´Ï´Ù.
ÀÌ ¸Þ¼µå´Â ÇÁ·Î¹ÙÀÌ´õ ÀνºÅϽºÀÇ RMIClassLoaderSpi.loadClass(String, String, ClassLoader)
¸Þ¼µå¿¡ 󸮸¦ À§¾ç ÇÕ´Ï´Ù. ÀÌ ¶§, ÁöÁ¤ÇÑ URL ·Î URL.toString()
¸¦
È£ÃâÇÑ °á°ú (codebase
°¡ nullÀÎ °æ¿ì´Â null
)°¡ ÃÖÃÊÀÇ Àμö·Î¼name
°¡ 2¹øÂ°ÀÇ Àμö·Î¼null
ÀÌ 3 ¹øÂ°ÀÇ Àμö·Î¼ °Ç³×¹Þ½À´Ï´Ù.
codebase
- Ŭ·¡½ºÀÇ ·Îµå¿øÀÇ URL, ¶Ç´Â null
name
- ·Îµå ´ë»ó Ŭ·¡½ºÀÇ À̸§
Class
°´Ã¼
MalformedURLException
- codebase
°¡ null
·Î
ÇÑÆí Ŭ·¡½º ·Îµå½Ã¿¡ »ç¿ëµÈ ÇÁ·Î¹ÙÀÌ´õ °íÀ¯ URL°¡ ¹«È¿ÀÎ °æ¿ì
ClassNotFoundException
- Ŭ·¡½ºÀÇ Á¤Àǰ¡ ÁöÁ¤µÈ URL¿¡ ¾ø¾ú´ø °æ¿ìpublic static Class <? > loadClass(String codebase, String name) throws MalformedURLException, ClassNotFoundException
ÀÌ ¸Þ¼µå´Â ÇÁ·Î¹ÙÀÌ´õ ÀνºÅϽºÀÇ RMIClassLoaderSpi.loadClass(String, String, ClassLoader)
¸Þ¼µå¿¡ 󸮸¦ À§¾ç ÇÕ´Ï´Ù. ÀÌ ¶§, codebase
°¡ ÃÖÃÊÀÇ Àμö·Î¼name
°¡ 2¹øÂ°ÀÇ Àμö·Î¼null
ÀÌ 3 ¹øÂ°ÀÇ Àμö·Î¼ °Ç³×¹Þ½À´Ï´Ù.
codebase
- Ŭ·¡½ºÀÇ ·Îµå¿øÀÇ URL
¸®½ºÆ® (´Ü¶ô ¹®ÀÚ´Â ½ºÆäÀ̽º), ¶Ç´Â null
name
- ·Îµå ´ë»ó Ŭ·¡½ºÀÇ À̸§
Class
°´Ã¼
MalformedURLException
- codebase
°¡ null
Àܷ̿ΠÇÑÆí ¹«È¿ÀÎ URL¸¦ Æ÷ÇÔÇϰí ÀÖ´Â °æ¿ì, ¶Ç´Â codebase
°¡ null
·Î
ÇÑÆí Ŭ·¡½º ·Îµå½Ã¿¡ »ç¿ëµÈ ÇÁ·Î¹ÙÀÌ´õ °íÀ¯ URL°¡ ¹«È¿ÀÎ °æ¿ì
ClassNotFoundException
- Ŭ·¡½ºÀÇ Á¤Àǰ¡ ÁöÁ¤µÈ Àå¼Ò¿¡ ¾ø¾ú´ø °æ¿ìpublic static Class <? > loadClass(String codebase, String name, ClassLoader defaultLoader) throws MalformedURLException, ClassNotFoundException
defaultLoader
¸¦ »ç¿ëÇØ ÁöÁ¤µÈ Ŭ·¡½ºÀÇ ÇØ°áÀ» ½ÃµµÇÏ°í ³ª¼, ÄÚµå º£À̽º URL ÆÐ½º·ÎºÎÅÍÀÇ Å¬·¡½ºÀÇ ÇØ°áÀ» ½ÃµµÇÕ´Ï´Ù.
ÀÌ ¸Þ¼µå´Â ÇÁ·Î¹ÙÀÌ´õ ÀνºÅϽºÀÇ RMIClassLoaderSpi.loadClass(String, String, ClassLoader)
¸Þ¼µå¿¡ 󸮸¦ À§¾ç ÇÕ´Ï´Ù. ÀÌ ¶§, codebase
°¡ ÃÖÃÊÀÇ Àμö·Î¼name
°¡ 2¹øÂ°ÀÇ Àμö·Î¼defaultLoader
°¡ 3 ¹øÂ°ÀÇ Àμö·Î¼ °Ç³×¹Þ½À´Ï´Ù.
codebase
- Ŭ·¡½ºÀÇ ·Îµå¿øÀÇ URL
¸®½ºÆ® (´Ü¶ô ¹®ÀÚ´Â ½ºÆäÀ̽º), ¶Ç´Â null
name
- ·Îµå ´ë»ó Ŭ·¡½ºÀÇ À̸§defaultLoader
- »óȲ¿¡ µû¶ó »ç¿ëÇÏ´Â Ãß°¡ Ŭ·¡½º ·Î´õ, ¶Ç´Â null
Class
°´Ã¼
MalformedURLException
- codebase
°¡ null
Àܷ̿ΠÇÑÆí ¹«È¿ÀÎ URL¸¦ Æ÷ÇÔÇϰí ÀÖ´Â °æ¿ì, ¶Ç´Â codebase
°¡ null
·Î
ÇÑÆí Ŭ·¡½º ·Îµå½Ã¿¡ »ç¿ëµÈ ÇÁ·Î¹ÙÀÌ´õ °íÀ¯ URL°¡ ¹«È¿ÀÎ °æ¿ì
ClassNotFoundException
- Ŭ·¡½ºÀÇ Á¤Àǰ¡ ÁöÁ¤µÈ Àå¼Ò¿¡ ¾ø¾ú´ø °æ¿ìpublic static Class <? > loadProxyClass(String codebase, String [] interfaces, ClassLoader defaultLoader) throws ClassNotFoundException, MalformedURLException
Proxy
¸¦
ÂüÁ¶)¸¦, ÁöÁ¤µÈ ÄÚµå º£À̽º URL ÆÐ½º·ÎºÎÅÍ ·ÎµåÇÕ´Ï´Ù.
ÀÌ·¯ÇÑ ÀÎÅÍÆäÀ̽ºÀÇ ÇØ°áÀº ÁöÁ¤µÈ codebase
¸¦ »ç¿ëÇØ loadClass(String, String)
¸Þ¼µå °æÀ¯·Î ·Îµå µÈ Ŭ·¡½º¿Í °°Àº ¹æ¹ýÀ¸·Î ÇàÇØÁý´Ï´Ù.
ÀÌ ¸Þ¼µå´Â ÇÁ·Î¹ÙÀÌ´õ ÀνºÅϽºÀÇ RMIClassLoaderSpi.loadProxyClass(String, String[], ClassLoader)
¸Þ¼µå¿¡ 󸮸¦ À§¾ç ÇÕ´Ï´Ù. ÀÌ ¶§, codebase
°¡ ÃÖÃÊÀÇ Àμö·Î¼interfaces
°¡ 2¹øÂ°ÀÇ Àμö·Î¼defaultLoader
°¡ 3 ¹øÂ°ÀÇ Àμö·Î¼ °Ç³×¹Þ½À´Ï´Ù.
codebase
- Ŭ·¡½ºÀÇ ·Îµå¿øÀÇ URL
¸®½ºÆ® (´Ü¶ô ¹®ÀÚ´Â ½ºÆäÀ̽º), ¶Ç´Â null
interfaces
- ÇÁ·Ï½Ã Ŭ·¡½º°¡ ±¸ÇöÇÏ´Â ÀÎÅÍÆäÀ̽ºÀÇ À̸§defaultLoader
- »óȲ¿¡ µû¶ó »ç¿ëÇÏ´Â Ãß°¡ Ŭ·¡½º ·Î´õ, ¶Ç´Â null
MalformedURLException
- codebase
°¡ null
Àܷ̿ΠÇÑÆí ¹«È¿ÀÎ URL¸¦ Æ÷ÇÔÇϰí ÀÖ´Â °æ¿ì, ¶Ç´Â codebase
°¡ null
·Î
ÇÑÆí Ŭ·¡½º ·Îµå½Ã¿¡ »ç¿ëµÈ ÇÁ·Î¹ÙÀÌ´õ °íÀ¯ URL°¡ ¹«È¿ÀÎ °æ¿ì
ClassNotFoundException
- ÁöÁ¤µÈ ÀÎÅÍÆäÀ̽ºÀÇ Á¤ÀÇÁß ÇÑÂÊÀÌ ÁöÁ¤µÈ Àå¼Ò¿¡ ¹ß°ßµÇÁö ¾Ê´Â °æ¿ì, ¶Ç´Â µ¿Àû ÇÁ·Ï½Ã Ŭ·¡½ºÀÇ ÀÛ¼º¿¡ ½ÇÆÐÇßÀ» °æ¿ì (Proxy.getProxyClass(ClassLoader, Class[])
°¡ ÁöÁ¤µÈ ÀÎÅÍÆäÀ̽º ¸®½ºÆ®¿¡ ´ëÇØ¼ IllegalArgumentException
À»
Throw ÇßÀ» ¶§ µî)public static ClassLoader getClassLoader(String codebase) throws MalformedURLException, SecurityException
¸®ÅϵÈ
Ŭ·¡½º ·Î´õ´Â loadClass(String, String)
¸Þ¼µå°¡ °°Àº codebase
Àμö¸¦ ÁöÁ¤ÇØ Å¬·¡½º¸¦ ·ÎµåÇÒ ¶§ »ç¿ëÇϴ Ŭ·¡½º ·Î´õ¿Í °°½À´Ï´Ù.
ÀÌ ¸Þ¼µå´Â ÇÁ·Î¹ÙÀÌ´õ ÀνºÅϽºÀÇ RMIClassLoaderSpi.getClassLoader(String)
¸Þ¼µå¿¡ 󸮸¦ À§¾ç ÇÕ´Ï´Ù. ÀÌ ¶§, codebase
°¡ Àμö·Î¼ °Ç³×¹Þ½À´Ï´Ù.
½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇÏ´Â °æ¿ì´Â RuntimePermission("getClassLoader")
Á¢±Ù ±ÇÇÑÀ» »ç¿ëÇØ checkPermission
¸Þ¼µå°¡ ºÒ·Á°¡
SecurityException
°¡ üũµË´Ï´Ù. ÀÌ ¸Þ¼µåÀÇ ÇÁ·Î¹ÙÀÌ´õ ±¸ÇöÀº È£ÃâÃø ÄÁÅØ½ºÆ®ÀÌ ÄÚµå º£À̽º URL ÆÐ½º³»ÀÇ ¸ðµç URL¿¡ ´ëÇÑ Á¢±Ù ±ÇÇÑÀ» °¡Áö°í ÀÖÀ»Áö ¾î¶³Áö¿¡ ÀÓÇØ¼, ½ÃÅ¥·¯Æ¼ üũ¸¦ ½Ç½ÃÇÏ´Â Àϵµ ÀÖ½À´Ï´Ù.
codebase
- ¸®ÅϵÈ
Ŭ·¡½º ·Î´õ°¡ ·ÎµåÇϴ Ŭ·¡½º°¡ Æ÷ÇԵǰí ÀÖ´Â URL
¸®½ºÆ® (´Ü¶ô ¹®ÀÚ´Â ½ºÆäÀ̽º), ¶Ç´Â null
MalformedURLException
- codebase
°¡ null
Àܷ̿ΠÇÑÆí ¹«È¿ÀÎ URL¸¦ Æ÷ÇÔÇϰí ÀÖ´Â °æ¿ì, ¶Ç´Â codebase
°¡ null
·Î
ÇÑÆí Ŭ·¡½º ·Î´õÀÇ ½Äº°½Ã¿¡ »ç¿ëµÈ ÇÁ·Î¹ÙÀÌ´õ °íÀ¯ URL°¡ ¹«È¿ÀÎ °æ¿ì
SecurityException
- ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇÒ °æ¿ì¿¡
±× checkPermission
¸Þ¼µå°¡ ½ÇÆÐÇßÀ» °æ¿ì. ¶Ç´Â È£ÃâÃøÀÌ ÄÚµå º£À̽º URL ÆÐ½º³»ÀÇ ¸ðµç URL¿¡ ´ëÇÑ Á¢±Ù ±ÇÇÑÀ» °¡Áö°í ÀÖÁö ¾ÊÀº °æ¿ìpublic static String getClassAnnotation(Class <? > cl)
ÀÌ ¸Þ¼µå´Â ÇÁ·Î¹ÙÀÌ´õ ÀνºÅϽºÀÇ RMIClassLoaderSpi.getClassAnnotation(Class)
¸Þ¼µå¿¡ 󸮸¦ À§¾ç ÇÕ´Ï´Ù. ÀÌ ¶§, cl
°¡ Àμö·Î¼ °Ç³×¹Þ½À´Ï´Ù.
cl
- ÁÖ¼®À» ¾ò´Â ´ë»óÀÇ Å¬·¡½º
null
NullPointerException
- cl
°¡ null
ÀÎ °æ¿ìpublic static RMIClassLoaderSpi getDefaultProviderInstance()
RMIClassLoaderSpi
µðÆúÆ® ÇÁ·Î¹ÙÀÌ´õÀÇ Ç¥ÁØ ÀνºÅϽº¸¦ ¸®ÅÏÇÕ´Ï´Ù. ½Ã½ºÅÛ ÇÁ·ÎÆÛƼ java.rmi.server.RMIClassLoaderSpi
°¡ Á¤ÀǵǾî ÀÖÁö ¾ÊÀº °æ¿ì, ´ÙÀ½¿¡ ³ªÅ¸³»´Â RMIClassLoader
static ¸Þ¼µå´Â ¼ºñ½º ÇÁ·Î¹ÙÀÌ´õ ÀνºÅϽº·Î¼ µðÆúÆ® ÇÁ·Î¹ÙÀÌ´õÀÇ Ç¥ÁØ ÀνºÅϽº¸¦ »ç¿ëÇÕ´Ï´Ù.
loadClass(URL, String)
loadClass(String, String)
loadClass(String, String, ClassLoader)
loadProxyClass(String, String[], ClassLoader)
getClassLoader(String)
getClassAnnotation(Class)
½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇÏ´Â °æ¿ì, RuntimePermission("setFactory")
Á¢±Ù ±ÇÇÑÀ» »ç¿ëÇØ checkPermission
¸Þ¼µå°¡ ºÒ·Á°¡
SecurityException
°¡ üũµË´Ï´Ù.
µðÆúÆ®ÀÇ ¼ºñ½º ÇÁ·Î¹ÙÀÌ´õ ÀνºÅϽº´Â RMIClassLoaderSpi
¸¦
´ÙÀ½°ú °°ÀÌ ±¸ÇöÇÕ´Ï´Ù.
getClassAnnotation
¸Þ¼µå´Â ÁöÁ¤µÈ Ŭ·¡½º Á¤ÀÇÀÇ ´Ù¿î·Îµå¿¡ ¿ø°ÝÃøÀÌ »ç¿ëÇÏ´Â ÄÚµå º£À̽º URL ÆÐ½º¸¦ ³ªÅ¸³»´ÂString
¸¦ ¸®ÅÏÇÕ´Ï´Ù. ¸®ÅÏµÈ Ä³¸¯ÅÍ ¶óÀÎÀÇ Çü½ÄÀº ½ºÆäÀ̽º¿¡¼ ´Ü¶ôÁö¾îÁø URL ÆÐ½ºÀÔ´Ï´Ù. ¸®ÅÏµÈ ÄÚµå º£À̽ºÀÇ Ä³¸¯ÅÍ ¶óÀÎÀº ´ÙÀ½¿¡ ³ªÅ¸³»µµ·Ï, ÁöÁ¤µÈ Ŭ·¡½º¿¡ Á¤Àǵǰí Àִ Ŭ·¡½º ·Î´õ¿¡ µû¶ó¼ ´Ù¸¨´Ï´Ù.
- Á¤Àǵǰí Àִ Ŭ·¡½º ·Î´õ°¡ ½Ã½ºÅÛ Å¬·¡½º ·Î´õ (
ClassLoader.getSystemClassLoader()
¸¦ ÂüÁ¶), ½Ã½ºÅÛ Å¬·¡½º ·Î´õÀÇ ºÎ¸ð (ÀνºÅç ³¡³ È®Àå Ŭ·¡½º¿¡ »ç¿ëµÇ´Â ·Î´õ µî), ¶Ç´Â bootstrap Ŭ·¡½º ·Î´õ (null
·Î ³ªÅ¸³»Áø´Ù)ÀÇ °æ¿ì,java.rmi.server.codebase
ÇÁ·ÎÆÛƼÀÇ °ª (¶Ç´Â ÀÌÀü¿¡ ij½¬µÈ °ª)ÀÌ ¸®ÅϵȴÙ. ÀÌ ÇÁ·ÎÆÛƼÀÇ °ªÀÌ ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì´Ânull
ÀÌ ¸®ÅϵȴÙ- Á¤Àǵǰí Àִ Ŭ·¡½º ·Î´õ°¡
URLClassLoader
ÀνºÅϽºÀÇ °æ¿ì´Â ·Î´õÀÇgetURLs
¸Þ¼µå È£Ãâ·ÎºÎÅÍ ¸®ÅÏµÈ ¿ÜºÎ Çü½ÄÀÇ URL ¸®½ºÆ® (´Ü¶ô ¹®ÀÚ´Â ½ºÆäÀ̽º)°¡ ¸®ÅϵȴÙ.URLClassLoader
°¡ ÀÌ ÇÁ·Î¹ÙÀÌ´õ¿¡ ÀÇÇØ ÀÛ¼ºµÇ¾î ±×loadClass
¶Ç´ÂloadProxyClass
¸Þ¼µå°¡ »ç¿ëµÇ´Â °æ¿ì, °ü·ÃµÈ ÄÚµå º£À̽º ij¸¯ÅÍ ¶óÀÎÀ» ÃëµæÇϱâ À§ÇÑ Á¢±Ù ±ÇÇÑÀº ÇÊ¿ä¾ø´Ù.URLClassLoader
ÀνºÅϽº°¡ ÀÌ ÇÁ·Î¹ÙÀÌ´õ À̿ܿ¡ ÀÛ¼ºµÇ¾î ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇÏ´Â °æ¿ì´ÂgetURLs
¸Þ¼µå·ÎºÎÅÍ URL°¡ µ¹·ÁÁÖ°íÁú ¶§¸¶´Ù,openConnection(). getPermission()
È£Ãâ¿¡ ÀÇÇØ ¸®ÅÏµÈ Á¢±Ù ±ÇÇÑÀ» »ç¿ëÇØ ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀúÀÇcheckPermission
¸Þ¼µå°¡ ºÒ·Á °£´Ù. ÀÌ·¯ÇÑ È£ÃâÀÇ ¾î´ÀÂÊÀ̵çÀ¸·ÎSecurityException
¶Ç´ÂIOException
°¡ Throw µÇ¾úÀ» °æ¿ì,java.rmi.server.codebase
ÇÁ·ÎÆÛƼÀÇ °ªÀÌ ¸®ÅϵȴÙ. ÀÌ ÇÁ·ÎÆÛƼ°¡ ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì´Ânull
ÀÌ ¸®ÅϵȴÙ- Á¤Àǵǰí Àִ Ŭ·¡½º ·Î´õ°¡
URLClassLoader
ÀνºÅϽº°¡ ¾Æ´Ñ °æ¿ì,java.rmi.server.codebase
ÇÁ·ÎÆÛƼÀÇ °ª (¶Ç´Â ÀÌÀü¿¡ ij½¬µÈ °ª)ÀÌ ¸®ÅϵȴÙ. ÀÌ ÇÁ·ÎÆÛƼ°¡ ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì´Ânull
ÀÌ ¸®ÅϵȴÙ
codebase
¶ó´Â À̸§ÀÇString
ÆÄ¶ó¹ÌÅÍ (½ºÆäÀ̽º¿¡¼ ´Ü¶ôÁö¾îÁø URL ¸®½ºÆ®)¸¦ ÃëÇÏ´Â ´ÙÀ½¿¡ ¼³¸íÇÏ´Â °¢ ¸Þ¼µå ±¸Çö¿¡ ´ëÇØ, ¸Þ¼µå°¡ ºÒ·Á °¥ ¶§¸¶´Ù ƯÁ¤ÀÇ ¡¸ÄÚµå º£À̽º ·Î´õ¡¹¸¦ °ü·ÃÁöÀ» ¼ö ÀÖ½À´Ï´Ù. ÄÚµå º£À̽º ·Î´õ´Âcodebase
Àμö¿Í ÇöÀçÀÇ threadÀÇ ÄÁÅØ½ºÆ® Ŭ·¡½º ·Î´õ (Thread.getContextClassLoader()
¸¦ ÂüÁ¶)¸¦ Á¶ÇÕÇØ °Ë»öµË´Ï´Ù. ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇÏ´Â °æ¿ì, ÀÌ ÇÁ·Î¹ÙÀÌ´õ´Â Ŭ·¡½º ·Î´õ ÀνºÅϽºÀÇ ³»ºÎ Å×À̺í (Àû¾îµµURLClassLoader
ÀνºÅϽº¸¦ Æ÷ÇÔÇÑ´Ù)À» º¸°ü À¯ÁöÇÕ´Ï´Ù. ÀÌ Å×À̺íÀÇ Å°´Â ºÎ¸ðÀÇ Å¬·¡½º ·Î´õ¿Í ÄÚµå º£À̽º URL ÆÐ½º (URL ¼ø¼ ÷ºÎ ¸®½ºÆ®)ÀÇ Æä¾îÀÔ´Ï´Ù.codebase
Àμö°¡null
ÀÎ °æ¿ì, ÄÚµå º£À̽º URL ÆÐ½º´Â ½Ã½ºÅÛ ÇÁ·ÎÆÛƼjava.rmi.server.codebase
°ª, ÀÌÀüÀÇ Ä³½¬µÈ °ªÀÇ ¾î´À ÂÊÀΰ¡¿¡ µË´Ï´Ù. ¾î´À ÄÚµå º£À̽º URL ÆÐ½º°¡ Àִ ƯÁ¤ÀÇ ÄÁÅØ½ºÆ® ³»¿¡¼ ¾Æ·¡ÀÇ ¸î°³ÀÇ ¸Þ¼µåÀÇ È£ÃâÀÇcodebase
Àμö·Î¼ °Ç³×¹Þ¾ÒÀ» °æ¿ì, Å×ÀÌºí³»ÀÇ ·Î´õ °¡¿îµ¥, ÆÐ½º°¡ ÁöÁ¤µÈ ÄÚµå º£À̽º URL ÆÐ½º, ºÎ¸ð°¡ ÇöÀç threadÀÇ ÄÁÅØ½ºÆ® Ŭ·¡½º ·Î´õÀÎ °Í °°Àº ·Î´õ°¡ ÄÚµå º£À̽º ·Î´õ°¡ µË´Ï´Ù. ±×·¯ÇÑ ·Î´õ°¡ ¹ß°ßµÇÁö ¾Ê¾Ò´ø °æ¿ì, ±×·¯ÇÑ ·Î´õ°¡ »õ·Ó°Ô ÀÛ¼ºµÇ¾î Å×ÀÌºí¿¡ Ãß°¡µË´Ï´Ù. ´Ù¸¸, ÀÌ Å×À̺íÀº µµ´Þ ºÒ°¡´ÉÇÑ ·Î´õ¿Í ±× ·Î´õ¿¡ Á¤Àǵǰí Àִ Ŭ·¡½º°¡ °¡ºñÁö Ä÷ºÆ®µÇµµ·Ï, ·Î´õ¿¡°Ô·ÎÀÇ °ÂüÁ¶¸¦ º¸°ü À¯ÁöÇÏÁö ¾Ê½À´Ï´Ù. ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇÏÁö ¾ÊÀ» ¶§¿¡ ½Å·ÚµÇÁö ¾Ê´Â Äڵ尡 °¡»ó ¸Ó½Å¿¡ ¾Ï¹¬ÀûÀ¸·Î ·Îµå µÇÁö ¾Ê°Ô Çϱâ À§Çؼ ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì´Â ÄÚµå º£À̽º ·Î´õ´Â ÇöÀçÀÇ threadÀÇ ÄÁÅØ½ºÆ® Ŭ·¡½º ·Î´õ°¡ µË´Ï´Ù (ÁöÁ¤µÈ ÄÚµå º£À̽º URL ÆÐ½º´Â ¹«½ÃµÇ¾î ¸®¸ðÆ® Ŭ·¡½º¸¦ ·ÎµåÇÒ ¼ö ¾ø°Ô µÈ´Ù).
getClassLoader
¸Þ¼µå´Â ÁöÁ¤µÈ ÄÚµå º£À̽º URL ÆÐ½ºÀÇ ÄÚµå º£À̽º ·Î´õ¸¦ ¸®ÅÏÇÕ´Ï´Ù. ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇÏ´Â °æ¿ì, È£ÃâÃø ÄÁÅØ½ºÆ®¿¡ ÄÚµå º£À̽º URL ÆÐ½º³»ÀÇ ¸ðµç URL¿¡ ´ëÇÑ Á¢±Ù ±ÇÇÑÀÌ ¾øÀ» ¶§´ÂSecurityException
°¡ ¹ß»ý µË´Ï´Ù.
loadClass
¸Þ¼µå´Â ÁöÁ¤µÈ À̸§ÀÇ Å¬·¡½º¸¦ ´ÙÀ½ÀÇ ¹æ¹ýÀ¸·Î ·Îµå¸¦ ½ÃµµÇÕ´Ï´Ù.defaultLoader
Àμö°¡null
ÀÌ ¾Æ´Ñ °æ¿ì´Â ¿ì¼±defaultLoader
¸¦ »ç¿ëÇØ, ÁöÁ¤µÈname
Ŭ·¡½ºÀÇ ·Îµå¸¦ ½ÃµµÇÕ´Ï´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ Æò°¡ÇÕ´Ï´Ù.Class.forName(name, false, defaultLoader)Ŭ·¡½º¸¦defaultLoader
·Î ºÎÅÍ ·ÎµåÇÒ ¼ö ÀÖ¾úÀ» °æ¿ì, ±× Ŭ·¡½º°¡ ¸®Åϵ˴ϴ٠.ClassNotFoundException
ÀÌ¿ÜÀÇ ¿¹¿Ü°¡ Throw µÇ¾úÀ» °æ¿ì´Â ±× ¿¹¿Ü°¡ È£ÃâÇØ Ãø¿¡ ¹ß»ý µË´Ï´Ù.´ÙÀ½¿¡
loadClass
¸Þ¼µå°¡ ÁöÁ¤µÈ ÄÚµå º£À̽º URL ÆÐ½ºÀÇ ÄÚµå º£À̽º ·Î´õ¸¦ »ç¿ëÇØ, ÁöÁ¤µÈname
Ŭ·¡½ºÀÇ ·Îµå¸¦ ½ÃµµÇÕ´Ï´Ù. ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇÏ´Â °æ¿ì, È£ÃâÃø ÄÁÅØ½ºÆ®¿¡ ´Â ÄÚµå º£À̽º URL ÆÐ½º³»ÀÇ ¸ðµç URL¿¡ ´ëÇÑ Á¢±Ù ±ÇÇÑÀÌ ÇÊ¿äÇÕ´Ï´Ù. Á¢±Ù ±ÇÇÑÀÌ ¾ø´Â °æ¿ì´Â ÄÚµå º£À̽º ·Î´õ ´ë½Å¿¡ ÇöÀçÀÇ threadÀÇ ÄÁÅØ½ºÆ® Ŭ·¡½º ·Î´õ°¡ »ç¿ëµË´Ï´Ù.
loadProxyClass
¸Þ¼µå´Â ´ÙÀ½ÀÇ ¹æ¹ýÀ¸·Î ÁöÁ¤µÈ ÀÎÅÍÆäÀ̽ºÀÇ µ¿Àû ÇÁ·Ï½Ã Ŭ·¡½º¸¦ ¸®ÅÏÇÕ´Ï´Ù.
defaultLoader
Àμö°¡null
Àܷ̿Π±× ·Î´õ¸¦ »ç¿ëÇØ ÁöÁ¤µÈ ÀÎÅÍÆäÀ̽º¸¦ ¸ðµÎ ÇØ°áÇÒ ¼ö ÀÖ´Â °æ¿ì
- ÇØ°áµÈ ÀÎÅÍÆäÀ̽º°¡ ¸ðµÎ
public
ÀÎ °æ¿ì´Â ¿ì¼±Proxy.getProxyClass
¸¦ »ç¿ëÇØ, ÄÚµå º£À̽º ·Î´õ·ÎºÎÅÍ ±× ÀÎÅÍÆäÀ̽ºÀÇ µ¿Àû ÇÁ·Ï½Ã Ŭ·¡½º¸¦ ÃëµæÇÏ·Á°í ÇÑ´Ù.IllegalArgumentException
°¡ Throw µÇ¾úÀ» °æ¿ì´ÂdefaultLoader
·Î ºÎÅÍ ±× ÀÎÅÍÆäÀ̽ºÀÇ µ¿Àû ÇÁ·Ï½Ã Ŭ·¡½º¸¦ ÃëµæÇÏ·Á°í ÇÑ´Ù. ¾î´À ÂÊÀÇ °æ¿ìµµIllegalArgumentException
°¡ Throw µÇ¾úÀ» ¶§´ÂClassNotFoundException
°¡ Throw µÈ´Ù. ´Ù¸¥ ¿¹¿Ü°¡ Throw µÇ¾úÀ» °æ¿ì, ±× ¿¹¿Ü´Â È£ÃâÇØ Ãø¿¡ Throw µÈ´Ù- ÇØ°áµÈ ÀÎÅÍÆäÀ̽º°¡
public
ÀÌ¿ÜÀÇ °æ¿ì, ±×°ÍµéÀÌ ¸ðµÎ °°Àº Ŭ·¡½º ·Î´õ¿¡ Á¤Àǵǰí ÀÖÀ» ¶§´Â ±× ·Î´õ·ÎºÎÅÍ ±× ÀÎÅÍÆäÀ̽ºÀÇ µ¿Àû ÇÁ·Ï½Ã Ŭ·¡½º¸¦ ÃëµæÇÏ·Á°í ÇÑ´Ù- »ó±â ÀÌ¿ÜÀÇ °æ¿ì´Â
LinkageError
°¡ Throw µÈ´Ù (ÁöÁ¤µÈ ÀÎÅÍÆäÀ̽º¸¦ ¸ðµÎ ±¸ÇöÇϴ Ŭ·¡½º´Â ¾î´À ·Î´õ¿¡µµ Á¤ÀÇÇÒ ¼ö ¾ø±â ¶§¹®¿¡)ÁöÁ¤µÈ ¸ðµç ÀÎÅÍÆäÀ̽º¸¦ ÄÚµå º£À̽º ·Î´õ¸¦ »ç¿ëÇØ ÇØ°áÇÒ ¼ö ÀÖ´Â °æ¿ì
- ÇØ°áµÈ ÀÎÅÍÆäÀ̽º°¡ ¸ðµÎ
public
ÀÎ °æ¿ì´Â ±× ÀÎÅÍÆäÀ̽ºÀÇ µ¿Àû ÇÁ·Ï½Ã Ŭ·¡½º¸¦ ÄÚµå º£À̽º ·Î´õ·ÎºÎÅÍ ÃëµæÇÏÀÚ ÇÑ´Ù.IllegalArgumentException
°¡ Throw µÇ¾úÀ» °æ¿ì´ÂClassNotFoundException
°¡ Throw µÈ´Ù- ÇØ°áµÈ ÀÎÅÍÆäÀ̽º°¡
public
ÀÌ¿ÜÀÇ °æ¿ì, ±×°ÍµéÀÌ ¸ðµÎ °°Àº Ŭ·¡½º ·Î´õ¿¡ Á¤Àǵǰí ÀÖÀ» ¶§´Â ±× ·Î´õ·ÎºÎÅÍ ±× ÀÎÅÍÆäÀ̽ºÀÇ µ¿Àû ÇÁ·Ï½Ã Ŭ·¡½º¸¦ ÃëµæÇÏ·Á°í ÇÑ´Ù- »ó±â ÀÌ¿ÜÀÇ °æ¿ì´Â
LinkageError
°¡ Throw µÈ´Ù (ÁöÁ¤µÈ ÀÎÅÍÆäÀ̽º¸¦ ¸ðµÎ ±¸ÇöÇϴ Ŭ·¡½º´Â ¾î´À ·Î´õ¿¡µµ Á¤ÀÇÇÒ ¼ö ¾ø±â ¶§¹®¿¡)»ó±â ÀÌ¿ÜÀÇ °æ¿ì, ÇØ°áÇÒ ¼ö ¾ø¾ú´ø ÁöÁ¤ ÀÎÅÍÆäÀ̽º¿¡ ´ëÇØ,
ClassNotFoundException
°¡ ¹ß»ý µË´Ï´Ù.
SecurityException
- ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇÏ´Â °æ¿ì¿¡
±× checkPermission
¸Þ¼µå È£ÃâÇØ¿¡ ½ÇÆÐÇßÀ» ¶§@Deprecated public static Object getSecurityContext(ClassLoader loader)
loader
- ½ÃÅ¥·¯Æ¼ ÄÁÅØ½ºÆ®
ÀÇ Ãëµæ¿øÀÇ Å¬·¡½º ·Î´õ
SecurityManager.getSecurityContext()
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
ÀÌÀü Ŭ·¡½º ´ÙÀ½ Ŭ·¡½º | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
°³¿ä: NESTED | Çʵå | »ý¼ºÀÚ | ¸Þ¼µå | »ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.