|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
ÀÌÀü Ŭ·¡½º ´ÙÀ½ Ŭ·¡½º | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
°³¿ä: NESTED | Çʵå | »ý¼ºÀÚ | ¸Þ¼µå | »ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå |
public interface ClassFileTransformer
Ŭ·¡½º ÆÄÀÏÀ» º¯È¯Çϱâ À§Çؼ ÀÌ ÀÎÅÍÆäÀ̽ºÀÇ ±¸ÇöÀ» Á¦°øÇÏ´Â ¿¡ÀÌÀüÆ®. º¯È¯Àº JVM¿¡ ÀÇÇØ Ŭ·¡½º°¡ Á¤ÀǵDZâ Àü¿¡ ¹ß»ýÇÕ´Ï´Ù.
¡¸Å¬·¡½º ÆÄÀÏ¡¹À̶ó°í ÇÏ´Â ¿ë¾î´Â ¡¸Java °¡»ó ¸Ó½Å »ç¾ç¡¹ÀÇ ¡¸The class File Format¡¹ÀÇ ÀåÀÇ Á¤ÀÇ¿¡ µû¶ó »ç¿ëµÇ¾î ¹ÙÀÌÆ® ¼ø¼°¡ ÆÄÀÏ¿¡ Á¸ÀçÇÒÁö ¾î¶³Áö¿¡ °ü°è¾øÀÌ, Ŭ·¡½º ÆÄÀÏ Çü½ÄÀÇ ¹ÙÀÌÆ® ¼ø¼¸¦ÀǹÌÇÕ´Ï´Ù.
Instrumentation
,
Instrumentation.addTransformer(java.lang.instrument.ClassFileTransformer)
,
Instrumentation.removeTransformer(java.lang.instrument.ClassFileTransformer)
¸Þ¼µå °³¿ä | |
---|---|
byte[] |
transform (ClassLoader loader,
String className,
Class <? > classBeingRedefined,
ProtectionDomain protectionDomain,
byte[] classfileBuffer)
ÀÌ ¸Þ¼µåÀÇ ±¸ÇöÀº Á¦°øµÈ Ŭ·¡½º ÆÄÀÏÀ» º¯È¯ÇØ, »õ·Î¿î ġȯ Ŭ·¡½º ÆÄÀÏÀ» µ¹·ÁÁÙ ¼ö°¡ ÀÖ½À´Ï´Ù. |
¸Þ¼µåÀÇ »ó¼¼ |
---|
byte[] transform(ClassLoader loader, String className, Class <? > classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException
Æ®·£½º Æ÷¸Ó°¡ Instrumentation.addTransformer
·Î µî·ÏµÇ¸é, Æ®·£½º Æ÷¸Ó´Â »õ·Î¿î Ŭ·¡½º Á¤ÀÇ¿Í Å¬·¡½ºÀçÁ¤ÀǸ¶´Ù È£ÃâÇÕ´Ï´Ù. »õ·Î¿î Ŭ·¡½º Á¤ÀÇÀÇ ¿ä±¸´Â ClassLoader.defineClass
¸¦
»ç¿ëÇØ ÇàÇØÁý´Ï´Ù. Ŭ·¡½ºÀçÁ¤ÀÇÀÇ ¿ä±¸´Â Instrumentation.redefineClasses
¶Ç´Â ÀÌ ³×ÀÌÆ¼ºêÀÇ µ¿µîÀÇ °ÍÀ» »ç¿ëÇØ ÇàÇØÁý´Ï´Ù. Æ®·£½º Æ÷¸Ó´Â Ŭ·¡½º ÆÄÀÏ ¹ÙÀÌÆ®°¡ È®ÀÎ ¶Ç´Â Àû¿ëµÇ±â Àü¿¡
¿ä±¸ÀÇ Ã³¸®Áß¿¡ È£ÃâÇÕ´Ï´Ù.
±¸ÇöÇϰí ÀÖ´Â ¸Þ¼µå°¡ º¯È¯ ºÒ¿ä·Î ÆÇÁ¤Çϸé, ¸Þ¼µå´Â null
À»
¸®ÅÏÇÕ´Ï´Ù. º¯È¯ÀÌ ÇÊ¿ä·Î ÆÇÁ¤Çϸé, ¸Þ¼µå´Â »õ·Î¿î byte[]
¹è¿À» ÀÛ¼ºÇØ, ¸ðµç ÇÊ¿äÇÑ º¯È¯°ú ÇÔ²² classfileBuffer
ÀÔ·ÂÀ» ±× ¹è¿¾È¿¡ º¹»çÇØ, »õ·Î¿î ¹è¿À» ¸®ÅÏÇÕ´Ï´Ù. classfileBuffer
ÀÔ·ÂÀº º¯°æµÇÁö ¾Ê½À´Ï´Ù.
ÀçÁ¤ÀÇÀÇ ÄÉÀ̽º¿¡¼´Â Æ®·£½º Æ÷¸Ó´Â ÀçÁ¤ÀÇ ½Ã¸àƽ½º¸¦ Áö¿ø ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. Ãʱâ Á¤ÀÇÁß¿¡ Æ®·£½º Æ÷¸Ó°¡ º¯°æÇÑ Å¬·¡½º°¡ ³ªÁß¿¡ ÀçÁ¤ÀǵǴ °æ¿ì, Æ®·£½º Æ÷¸Ó´Â 2¹øÂ°ÀÇ Å¬·¡½ºÀÇ Ãâ·Â Ŭ·¡½º ÆÄÀÏ·Î ÃÖÃÊÀÇ Ãâ·Â Ŭ·¡½º ÆÄÀÏÀÌ Á¤´çÇÏ°Ô ÀçÁ¤Àǵǰí ÀÖ´Â °ÍÀ» È®ÀÎÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.
classFileBuffer
°¡ À¯È¿ÇÏ°Ô Æ÷¸ËµÈ
Ŭ·¡½º ÆÄÀÏÀ» ³ªÅ¸³»Áö ¾ÊÀ¸¸é Æ®·£½º Æ÷¸Ó°¡ ÆÇÁ¤ÇßÀ» °æ¿ì, Æ®·£½º Æ÷¸Ó´Â IllegalClassFormatException
À»
Throw ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ±× ÀÌÈĵµ, Æ®·£½º Æ÷¸Ó´Â ºÒ·Á°¡
·Îµå³ª ÀçÁ¤Àǰ¡ ½ÃÇàµË´Ï´Ù. IllegalClassFormatException
À»
Throw ÇÏ´Â °ÍÀº nullÀ»
µ¹·ÁÁÖ´Â °Í°ú °°Àº È¿°ú°¡ ÀÖ½À´Ï´Ù¸¸, Çü½Ä¿¡ ¹Ìºñ°¡ ÀÖ´Â ·Î±×ÀÇ ÀÛ¼ºÀ̳ª µð¹ö±×¸¦ ¿ëÀÌÇÏ°Ô ÇÕ´Ï´Ù.
loader
- º¯È¯µÇ´Â Ŭ·¡½º¸¦ Á¤ÀÇÇϰí ÀÖ´Â ·Î´õ. bootstrap loaderÀÇ °æ¿ì´Â null
className
- ¡¸Java °¡»ó ¸Ó½Å »ç¾ç¡¹À¸·Î Á¤Àǵǰí ÀÖ´Â ¿ÏÀü ¼ö½Ä Ŭ·¡½ºÀÇ ³»ºÎ Çü½ÄÀÇ Å¬·¡½º¸í°ú ÀÎÅÍÆäÀ̽º¸í. ¿¹¸¦ µé¾î, "java/util/List"
classBeingRedefined
- ÀçÁ¤ÀÇÀÇ °æ¿ì´Â ÀçÁ¤Àǵǰí Àִ Ŭ·¡½º, ±×·¸Áö ¾ÊÀº °æ¿ì´Â null
protectionDomain
- Á¤ÀÇ ¶Ç´Â ÀçÁ¤Àǵǰí Àִ Ŭ·¡½ºÀÇ º¸È£ ¿µ¿ªclassfileBuffer
- Ŭ·¡½º ÆÄÀÏ Çü½ÄÀÇ ÀÔ·Â ¹ÙÀÌÆ® ¹öÆÛ (º¯°æµÇ¾î¼´Â ¾È µÈ´Ù)
null
IllegalClassFormatException
- ÀÔ·ÂÀÌ Á¤Çü½ÄÀÇ Å¬·¡½º ÆÄÀÏÀ» ³ªÅ¸³»Áö ¾Ê´Â °æ¿ìInstrumentation.redefineClasses(java.lang.instrument.ClassDefinition[])
|
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 µµ ÂüÁ¶ÇϽʽÿÀ.