3. Scouter Server BuiltInPluginÀ» Á¦ÀÛÇغ¸ÀÚ - (1) ¿ä±¸»çÇ× ºÐ¼®
À̹ø ÁÖÁ¦´Â Á¶±Ý ±æ¾îÁú µíÇÏ¿© 1, 2ºÎ·Î ³ª´©¾ú´Ù.
1ºÎ¿¡¼´Â Built-in PluginÀÇ °³³ä°ú °³¹ßÇϱâ À§ÇÑ Çʼö ¿ä±¸»çÇ׿¡ ´ëÇØ ºÐ¼®ÇÏ°í,
2ºÎ¿¡¼´Â ½ÇÁ¦·Î ºôÆ®ÀÎ Ç÷¯±×ÀÎ(.jar)À» Á¦ÀÛÇغ¸µµ·Ï ÇÏ°Ú´Ù.
º» °Ô½Ã±ÛÀ» ÀÌÇØÇϱâ À§Çؼ´Â Java ReflectÀÇ °³³ä¿¡ ´ëÇØ Á¶±Ý ¾Ë°í ÀÖ¾î¾ß ÇÑ´Ù.
¸ñÂ÷´Â ¾Æ·¡¿Í °°´Ù.
1. PluginÀÇ °³³ä
1-1. Scripting Plugin VS Built-in Plugin
2. Built-in Plugin °³¹ß ¿ä±¸»çÇ×
2-1. ¿ä±¸»çÇ× ¿ä¾à
2-2. ¼Ò½ºÄÚµå ºÐ¼®
3. °á·Ð
1. PluginÀÇ °³³ä
1.1 Scripting Plugin VS Built-in Plugin
½ºÄ«¿ìÅÍ´Â ½Ã½ºÅÛ ¸ð´ÏÅ͸µÇÑ Á¤º¸¸¦ Ŭ¶óÀ̾ðÆ®¿¡¼ È®ÀÎÇÏ´Â ¹æ¹ýÀ» Á¦¿ÜÇÏ°íµµ ´Ù¾çÇÑ ¹æ½ÄÀ¸·Î ¸ð´ÏÅ͸µ µ¥ÀÌÅ͸¦ È°¿ëÇϵµ·Ï ÇØÁØ´Ù.
¿¹¸¦ µé¸é Email Àü¼ÛÀ̳ª, ½½·¢ ¾Ë¸²µîÀÌ Àִµ¥, ÀÌ ¶§ »ç¿ëµÇ´Â °ÍÀÌ PluginÀÌ´Ù.
PluginÀº Scripting Plugin°ú Built-in PluginÀ¸·Î ³ª´¶´Ù.
1. Scripting PluginÀº Java¸¦ ÀÌ¿ëÇÏ´Â ½ºÅ©¸³Æ®·Î, Àüó¸®¿Í °°Àº ´Ü¼øÇÑ ÀÛ¾÷À» Áö¿øÇÑ´Ù.
ÀÌ´Â ÄÚµå º¯°æÀÌ µ¿ÀûÀ¸·Î ÀÌ·ïÁ®¼ Server°¡ µ¹¾Æ°¡´Â Áß¿¡ ¼öÁ¤À» Çصµ ¹Ù·Î º¯°æ»çÇ×ÀÌ Àû¿ëµÈ´Ù.
±×·¯³ª ¾îµð±îÁö³ª ´Ü¼ø ÀÛ¾÷¿ëÀ̹ǷΠ±â´ÉÀû ÇÑ°è°¡ ÀÖ´Ù.
½ºÅ©¸³Æ® Ç÷¯±×ÀÎ ÆÄÀÏÀº server ³»ºÎÀÇ plugin Æú´õ¿¡ À§Ä¡ÇÑ´Ù.
Ç÷¯±×ÀÎÀÇ À̸§Àº ¾Æ·¡¿Í °°ÀÌ Áö¾î¾ß Çϸç, À̸§ º¯°æÀ» ÇÒ ¼ö ¾ø´Ù.
³»ºÎ´Â ÀÚ¹Ù ¸Þ¼µå·Î ÀÌ·ïÁ® ÀÖÀ¸¸ç ¾Æ·¡¿Í °°Àº Çü½ÄÀ¸·Î ÀÛ¼ºÇÏ¸é µÈ´Ù.
2. Built-in PluginÀº µ¶¸³µÈ Java Project·Î À̸ÞÀÏ Àü¼Û µîÀÇ Á»´õ °íÂ÷¿øÀÇ ¸¹Àº ±â´ÉÀ» Áö¿øÇÑ´Ù.
½ºÅ©¸³Æ®¿Í ´Ù¸£°Ô º¯°æ»çÇ× µîÀ» Àû¿ëÇÏ·Á¸é ServerÀÇ Àç ½ÃÀÛÀÌ ÇÊ¿äÇÏ´Ù.
ºôÆ®ÀÎ Ç÷¯±×ÀÎ ÆÄÀÏÀº server ³»ºÎÀÇ lib Æú´õ¿¡ À§Ä¡Çϸç, ¿ä±¸»çÇ׿¡ ¸ÂÃç »ý¼ºµÈ jarÆÄÀÏÀÌ´Ù.
º» °Ô½Ã±Û¿¡¼´Â Built-in PluginÀÇ ¿ä±¸»çÇ× ºÎºÐ¿¡ ÁýÁßÇϵµ·Ï ÇÏ°Ú´Ù.
2. Built-in Plugin °³¹ß ¿ä±¸»çÇ×
2-1. ¿ä±¸»çÇ× ¿ä¾à
¹«¾ùÀ» ÃæÁ·ÇØ¾ß ÇÏ´ÂÁö °á·Ð¸¸ ¾Ë°í ½ÍÀº »ç¶÷µéÀ» À§ÇØ °á·ÐºÎÅÍ Àû¾îº¸¸é ´ÙÀ½°ú °°´Ù.
1. ½ºÄ«¿ìÅÍÀÇ ½ºÄÉÁì·¯¿¡ ¿Ã¸± ¸Þ¼µå´Â public À̾î¾ß Çϸç, ¹Ýµå½Ã ¾Æ·¡ÀÇ 6°³ AnnotationÁß Çϳª´Â °¡Á®¾ß ÇÑ´Ù.
2. ¶ÇÇÑ ¸Þ¼µåÀÇ ÆĶó¹ÌÅͷδ Pack ÀÎÅÍÆäÀ̽º ¶Ç´Â À̸¦ ±¸ÇöÇÑ ÇÏÀ§ Ŭ·¡½º 1°³¸¦ ¹Þ¾Æ¾ß ÇÑ´Ù.
3. À§ÀÇ ¸Þ¼µå°¡ ´ã±ä Ŭ·¡½º´Â ¹Ýµå½Ã public class¿©¾ß ÇÑ´Ù.
4. À§ÀÇ public class´Â ¹Ýµå½Ã scouter.plugin.server ÆÐÅ°Áö ÇÏÀ§¿¡ ÀÖ¾î¾ß ÇÑ´Ù.
ex) scouter.plugin.server.mypackage.yolo (O)
mypackage.yolo (X)
5. Dependency·Î scouter.server¿Í scouter.commonÀ» °®´Â´Ù.
(1) server plugin À̱⠶§¹®¿¡ scouter.server°¡ ÇÊ¿äÇÏ°í
(2) annotation ¹× ±âŸ À¯Æ¿ÀÌ scouter.common ¿¡ Àֱ⠶§¹®ÀÌ´Ù.
À̸¦ ´Ù ÃæÁ·½ÃŲ ¿¹½Ã´Â ¾Æ·¡¿Í °°´Ù.
2-2. ¼Ò½ºÄÚµå ºÐ¼®
(1) Main Ŭ·¡½º
Á¦ÀÏ ¸ÕÀú Main Ŭ·¡½º¸¦ º¸¸é 56¹ø ¶óÀο¡¼ Built-in PluginÀÌ È£ÃâµÇ´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù.
(2) BuiltInPluginManager Ŭ·¡½º
À̸¦ µû¶ó¼ BuiltInPluginManager·Î °¡º¸¸é ¾Æ·¡¿Í °°´Ù.
À§¿¡¼ºÎÅÍ Â÷±ÙÂ÷±Ù ºÐ¼®Çغ¸µµ·Ï ÇÏ°Ú´Ù.
¸ÕÀú 18¹ø ¶óÀÎÀÇ HashMapÀ» º¸¸é key·Î StringÀ», value·Î´Â List¸¦ °®´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù.
ÀÌ HashMapÀº ½ºÄ«¿ìÅÍ Ç÷¯±×ÀεéÀ» ¸ðµÎ ´ã¾Æ³õÀº Ä÷º¼ÇÀ¸·Î, °¢ ¾î³ëÅ×ÀÌ¼Ç º°·Î Ç÷¯±×ÀÎÀ» ¸ð¾Æ °ü¸®ÇÑ´Ù. ´ÙÀ½°ú °°ÀÌ ³ªÅ¸³¾ ¼ö ÀÖ´Ù.
(³ªÁß¿¡ ¼³¸íÇÏ°ÚÁö¸¸ ¸ðµç Ç÷¯±×ÀÎÀ» ºÒ·¯¿Â µÚ, key°ªÀ» °¡Áö°í °¢ Ç÷¯±×ÀεéÀ» È£ÃâÇÏ¿© ½ÇÇà½ÃŲ´Ù.)
´ÙÀ½À¸·Î 21¹ø ¶óÀÎÀ» º¸¸é scouter.plugin.server ÆÐÅ°Áö ³»ºÎÀÇ ¸ðµç Ŭ·¡½º¸¦ »Ì¾Æ¼ Set¿¡ ´ã¾Æ³õÀº °ÍÀ» º¼ ¼ö ÀÖ´Ù. ÀÌ ¶§¹®¿¡ ¹Ýµå½Ã scouter.plugin.server ÆÐÅ°Áö ÇÏÀ§¿¡ Äڵ带 ÀÛ¼ºÇØ¾ß ÇÏ´Â °ÍÀÌ´Ù.
±× ´ÙÀ½À¸·Î IterationÀ» ÇÏ´Â while ³»ºÎÀÇ 27 ~ 29¹ø ¶óÀÎÀ» º¸¸é, ÃßÃâÇÑ classµé Áß¿¡¼ public class¸¸ ó¸®ÇÏ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ ÀÌÀ¯·Î ¹Ýµå½Ã ½ºÄÉÁì·¯¿¡¼ ºÒ·¯¿Ã Ŭ·¡½º´Â public class¿©¾ß ÇÑ´Ù.
±× ´ÙÀ½ ºÎºÐÀ¸·Î ³Ñ¾î°¡¼ ¸Þ¼µå¸¦ ºÒ·¯¿À´Â 31 ~ 46¹ø ¶óÀÎÀ» »ìÆ캸ÀÚ
ÀÌ ºÎºÐ¿¡¼ ¿Ö public ¸Þ¼µå¿©¾ß µÇ´ÂÁö, ÁöÁ¤µÈ annotationÀÌ ²À ÇÊ¿äÇÑÁö°¡ ³ª¿Â´Ù.
(3) PluginInvocation Ŭ·¡½º
¸¶Áö¸·À¸·Î 62¹ø ¶óÀÎÀÇ invokeAllPlugins()À» »ìÆ캸ÀÚ.
ÀÌ ¸Þ¼µå´Â ¸» ±×´ë·Î pluginPoint Á¾·ù¿¡ ÇØ´çÇÏ´Â ¸ðµç Ç÷¯±×ÀεéÀ» ½ÇÇà½ÃÅ°´Â ¸Þ¼µåÀÌ´Ù.
ÀÌ invokeAllPlugins()´Â ½ºÄ«¿ìÅÍ°¡ ½ÇÇàµÇ¸ç ³»ºÎÀÇ Scala¿¡¼ È£ÃâµÇ´Âµ¥, ³Ê¹« º¹ÀâÇÏ¿© »ý·«Çϵµ·Ï ÇÏ°Ú´Ù.
´ÜÁö ¿ä±¸»çÇ×À» ¸ðµÎ ¸¸Á·½ÃÅ°´Â ¸Þ¼µå¿¡ ÇÑÇؼ invokeAllPlugins()¿¡¼ È£ÃâµÇ¾î ½ÇÇàµÈ´Ù´Â °Í¸¸ ¾Ë¸é µÈ´Ù.
Á¤»ó ½ÇÇà °á°ú¸¦ º¸¸é ¾Æ·¡¿Í °°ÀÌ ·Î±×°¡ ÂïÈù´Ù.
3. °á·Ð
À§ÀÇ ¼Ò½ºÄÚµå ºÐ¼® °úÁ¤À» ÅëÇØ ¾î¶² ¿ä±¸»çÇ×À» ÃæÁ·ÇØ¾ß ÇÏ´ÂÁö¿¡ ´ëÇØ ¾Ë¾Æº¸¾Ò´Ù.
¸¶Áö¸·À¸·Î ÃÖÁ¾ÀûÀ¸·Î Á¤¸®ÇÏ¸é ¾Æ·¡ÀÇ ¿ä±¸»çÇ×À» ÃæÁ·ÇØ¾ß ÇÑ´Ù°í ¸»ÇÒ ¼ö ÀÖ´Ù.
¿©±â±îÁö ÇÏ¿© ½ºÄ«¿ìÅÍÀÇ Built-in PluginÀÇ Çʼö ¿ä±¸»çÇ׿¡ ´ëÇØ ¾Ë¾Æº¸¾Ò´Ù.
´ÙÀ½ éÅÍ¿¡¼± ÀÌ Á¶°ÇÀ» °¡Áö°í ¾î¶»°Ô ÁøÂ¥·Î ºôÆ®ÀÎ Ç÷¯±×ÀÎÀ» Á¦ÀÛÇÒ ¼ö ÀÖ´ÂÁö¿¡ ´ëÇØ ¾Ë¾Æº¸µµ·Ï ÇÏ°Ú´Ù.