URLClassLoaderŬ·¡½º´Â JAR ÆÄÀÏ ¹× µð·ºÅ丮ÀÇ ¾çÂÊ ¸ðµÎ¸¦ ÂüÁ¶ÇÏ´Â URLÀÇ °Ë»ö °æ·Î·ÎºÎÅÍ, Ŭ·¡½º ¹× ÀÚ¿øÀ» ´Ù¿î·ÎµåÇϱâ À§Çؼ »ç¿ëÇÕ´Ï´Ù. À̶§ JARÆÄÀϰú µð·ºÅ丮¿¡ ´ëÇÑ ÂüÁ¶ ±¸ºÐÀº ¡¸/¡¹À¸·Î ³¡³ª´Â URLÀº µð·ºÅ丮¸¦ ÂüÁ¶Çϰí ÀÖ´Ù°í º¸°í ±× ¿ÜÀÇ URLÀº, Çʿ信 µû¶ó¼ ¿¸®´Â JAR ÆÄÀÏÀ» ÂüÁ¶Çϰí ÀÖ´Ù°í º¾´Ï´Ù. URLÀÇ °Ë»ö°æ·Î´Â ³×Æ®¿÷»óÀÇ °æ·ÎÀÏ ¼öµµ ÀÖÀ¸¸ç ÆÄÀϵð·ºÅ丮»óÀÇ °æ·ÎÀÏ ¼ö µµ ÀÖ½À´Ï´Ù. ¶ÇÇÑ Æ¯Á¤ URL¿¡ ÀÖ´Â .classÆÄÀÏÀ» URLClassLoaderŬ·¡½º¸¦ ÅëÇØ¼ ·ÎµùÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ´Â URLClassLoaderŬ·¡½º°¡ ¾Æ¹öÁö Ŭ·¡½ºÀÎ ClassLoaderŬ·¡½ºÀÇ ¸Þ¼µåµéÀ» »ó¼Ó¹Þ±â ¶§¹®Àε¥ ClassLoaderŬ·¡½º´Â ÀÚ¹Ù°¡»ó¸Ó½Å¿¡¼ ÆÄÀϽýºÅÛ¿¡ Àִ Ŭ·¡½ºÆÄÀϵéÀ» loadClass()
¸Þ¼µå¸¦ ÀÌ¿ëÇØ¼ ºÒ·¯ µéÀÏ ¼ö ÀÖ½À´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥Àº Java°¡»ó¸Ó½ÅÀÌ µ¿ÀûÀ¸·Î Ŭ·¡½º¸¦ ·ÎµåÇÏ´Â ¹æ¹ýÀ» È®ÀåÇϱâ À§ÇØ ClassLoaderÀÇ ¼ºêŬ·¡½ºµéÀ» ±¸ÇöÇÕ´Ï´Ù.
´ÙÀ½ÀÇ ¿¹Á¦´Â ÆÄÀϵð·ºÅ丮 °æ·Î»óÀÇ .classÆÄÀÏÀ» ClassLoader¸¦ ÅëÇØ¼ ·ÎµùÇϰí ÀÖ´Â °£´ÜÇÑ ¿¹Á¦ÀÔ´Ï´Ù.
URLClassLoader.java(URLClassLoaderŬ·¡½º¸¦ »ç¿ëÇÏ¿© ¹ÙÀÌÆ®Äڵ带 ³×Æ®¿öÅ© »ó¿¡¼ ´Ù¿î·ÎµåÇÏ´Â ¿¹Á¦) |
import java.net.*; import java.io.*; public class URLClassLoaderTest{ public static void main(String args[]) throws Exception { URL[] urlArray = {new File("c:/javaexample/16/").toURL()}; URLClassLoader ucl = new URLClassLoader(urlArray); Class c =ucl.loadClass("Hello"); Hello hello =(Hello)c.newInstance(); hello.sayHello("±è»ñ°«"); } } class Hello{ public Hello(){ } public void sayHello(String name){ System.out.println(name + "¾¾ ¾È³çÇϼ¼¿ä"); } } |
C:\JavaExample\16>javac URLClassLoaderTest.java C:\JavaExample\16>java URLClassLoaderTest ±è»ñ°«¾¾ ¾È³çÇϼ¼¿ä |
À§ÀÇ ¿¹Á¦¿¡¼ ¿ì¼±ÀûÀ¸·Î Ŭ·¡½º ÆÄÀÏÀÌ ÀÖ´Â À§Ä¡ URL°´Ã¼¸¦ ¹è¿ÇüÅ·Π»ý¼ºÇÕ´Ï´Ù. ¹°·Ð, 2°³ ¶Ç´Â 3°³ÀÇ URL°´Ã¼°¡ Æ÷ÇÔ µÇ¾îµµ µË´Ï´Ù. ±×¸®°í URL¹è¿À» ¸Å°³º¯¼ö·Î URLClassLoader°´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù.
n URL[] urlArray = {new File("c:/javaexample/16/").toURL()};
n URLClassLoader ucl = new URLClassLoader(urlArray);
»ý¼ºµÈ URLClassLoader°´Ã¼ uclÀ» ÀÌ¿ëÇØ¼ ·ÎµùÇÏ·Á°í ÇÏ´Â °´Ã¼ÀÇ ClassŬ·¡½º¸¦ »ý¼ºÇÏ°Ô µË´Ï´Ù.
n Class c =ucl.loadClass("Hello");
ClassŬ·¡½º°¡ ÀÖ´Ù¸é Reflection±â¹ýÀ» ÀÌ¿ëÇÏ¿© °´Ã¼¸¦ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í »ý¼ºµÈ °´Ã¼¸¦ ¹Ù·Î ´Ù¿îij½ºÆÃ ½ÃÄѼ ¿ø·¡ÀÇ ÇüÀ¸·Î ¸¸µé¾î ÁÝ´Ï´Ù.
n Hello hello =(Hello)c.newInstance();
n hello.sayHello("±è»ñ°«");
¸¶Áö¸·À¸·Î »ý¼ºµÇ¾îÁø HelloŬ·¡½ºÀÇ °´Ã¼ hello°¡ Á¤È®ÇÑÁö HelloŬ·¡½ºÀÇ ¸Þ¼µå¸¦ È£ÃâÇϰí ÀÖ½À´Ï´Ù.
URLClassLoaderŬ·¡½ºÀÇ »ý¼ºÀÚ¸Þ¼µå |
public URLClassLoader(URL[] urls) : ¾Æ¹öÁö Ŭ·¡½ºÀÎ ClassLoader¸¦ »ç¿ëÇØ ÁöÁ¤µÈ URLÀÇ »õ·Î¿î URLClassLoader¸¦ »ý¼ºÇÑ´Ù. ÀÌ URLÀº ClassLoader·ÎºÎÅÍ ÃÖÃÊ·Î °Ë»öµÈ µÚ¿¡, Ŭ·¡½º ¹× ÀÚ¿ø¿¡ ÁöÁ¤µÈ ¼ø¼·Î °Ë»öµÈ´Ù. ¡¸/¡¹À¸·Î ³¡³ª´Â URLÀº, µð·ºÅ丮¸¦ ÂüÁ¶ÇÏ°í ±× ¿ÜÀÇ URLÀº, Çʿ信 µû¶ó¼ ´Ù¿î·ÎµåÇØ ¿¸®´Â, JAR ÆÄÀÏÀ» ÂüÁ¶ÇÑ´Ù. public URLClassLoader(URL [] urls, ClassLoader parent) : ÁöÁ¤µÈ URLÀÇ »õ·Î¿î URLClassLoader °´Ã¼¸¦ »ý¼ºÇÑ´Ù. public URLClassLoader(URL [] urls, ClassLoader parent, URLStreamHandlerFactory factory) : ÁöÁ¤µÈ URL, Ŭ·¡½º ·Î´õ, ¹× URLStreamHandlerFactory¸¦ À§ÇÑ, »õ·Î¿î URLClassLoader¸¦ »ý¼ºÇÑ´Ù. parent Àμö´Â, ¾Æ¹öÁö Ŭ·¡½ºÀÎ ClassLoader·Î¼ »ç¿ëµÈ´Ù. factory Àμö´Â, »õ·Î¿î URL ¸¦ ÀÛ¼º ÇÒ °æ¿ì¿¡ ÇÁ·ÎÅäÄÝ Çڵ鷯¸¦ ¾ò±âÇϱâ À§ÇÑ StreamHandlerFactory·Î¼ »ç¿ëµÈ´Ù. |
URLClassLoaderŬ·¡½ºÀÇ ÁÖ¿ä ¸â¹ö¸Þ¼µå |
protected void addURL(URL url) : ÁöÁ¤µÈ URL¸¦, Ŭ·¡½º ¹× ÀÚ¿øÀ» Ž»öÇϱâ À§ÇÑ URL ¸®½ºÆ®¿¡ Ãß°¡ÇÑ´Ù. public URL[] getURLs() : Ŭ·¡½º ¹× ÀÚ¿øÀ» ·ÎµåÇϱâ À§ÇÑ URLÀÇ Å½»ö°æ·Î¸¦ µ¹·ÁÁÝ´Ï´Ù. À̰Ϳ¡´Â, »ý¼ºÀÚ¿¡¼ ÁöÁ¤µÈ URLÀÇ ¿ø·¡ÀÇ ¸®½ºÆ®¿Í ³ªÁß¿¡ addURL()¸Þ¼µå¿¡ ÀÇÇØ Ãß°¡µÈ URLµµ Æ÷ÇԵȴÙ. protected Class findClass(String name) throws ClassNotFoundException : URL °Ë»ö ÆÐ½º·ÎºÎÅÍ, ÁöÁ¤µÈ À̸§À» °¡Áö´Â Ŭ·¡½º¸¦ Ž»öÇØ ·ÎµåÇÑ´Ù. Ŭ·¡½º°¡ ¹ß°ßµÉ ¶§±îÁö´Â, JAR ÆÄÀÏÀ» ÂüÁ¶ÇÏ´Â URLÀÌ Çʿ信 µû¶ó¼ ·ÎµåµÇ¾î ¿¸°´Ù. public Enumeration findResources(String name) throws IOException : URL Ž»ö °æ·Î»óÀÇ ÁöÁ¤µÈ À̸§À» °¡Áö´Â ÀÚ¿øÀ» Ç¥ÇöÇÏ´Â, URLÀÇ ¸ñ·Ï(Enumeration)¸¦ µ¹·ÁÁØ´Ù. |
¸¶Áö¸·À¸·Î URLClassLoaderŬ·¡½ºÀÇ ÀνºÅϽº¸¦ »ý¼ºÇÑ threadÀÇ AccessControlContext´Â, Ŭ·¡½º ¹× ÀÚ¿øÀ» ·ÎµåÇÒ ¶§ »ç¿ëµË´Ï´Ù. LoadµÇ´Â Ŭ·¡½º¿¡´Â, URLClassLoader »ý¼ºÀÚ ¸Þ¼µå¿¡¼ ÁöÁ¤µÈ URL¸¸Å Á¢¼ÓÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀÌ ÁÖ¾îÁý´Ï´Ù.
¢Ñ URLClassLoader Ŭ·¡½º |
JAR ÆÄÀϰú µð·ºÅ丮¸¦ ¸ðµÎ ÂüÁ¶ÇÏ´Â URLÀÇ Å½»ö °æ·Î·ÎºÎÅÍ Å¬·¡½º ȤÀº ÀÚ¿øÀ» ´Ù¿î·ÎµåÇÏ´Â µ¥ »ç¿ëµÈ´Ù. |
jabookÀúÀÚ¸íÇÔ |
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù4ºÎ ÀúÀÚ:ÃÖ¿µ°ü |