|
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, ¶Ç´Â nullname - ·Îµå ´ë»ó Ŭ·¡½ºÀÇ À̸§
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
¸®½ºÆ® (´Ü¶ô ¹®ÀÚ´Â ½ºÆäÀ̽º), ¶Ç´Â nullname - ·Îµå ´ë»ó Ŭ·¡½ºÀÇ À̸§
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
¸®½ºÆ® (´Ü¶ô ¹®ÀÚ´Â ½ºÆäÀ̽º), ¶Ç´Â nullname - ·Îµå ´ë»ó Ŭ·¡½ºÀÇ À̸§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
¸®½ºÆ® (´Ü¶ô ¹®ÀÚ´Â ½ºÆäÀ̽º), ¶Ç´Â nullinterfaces - ÇÁ·Ï½Ã Ŭ·¡½º°¡ ±¸ÇöÇÏ´Â ÀÎÅÍÆäÀ̽ºÀÇ À̸§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 µµ ÂüÁ¶ÇϽʽÿÀ.