´Ù¼Ò ´ÊÀº°¨ÀÌ ÀÖÁö¸¸, EclipseZone ¿¡ ¿¬ÀçµÇ¾ú´ø Neil Bartlett ÀÇ ¿¬Àç ±Û
"Getting started with OSGi" ¸¦ ¹ø¿ªÇÏ·Á°í ÇÕ´Ï´Ù. OSGi ±â¼ú¿¡ ´ëÇÑ ÀÔ¹®¿ë °ÀǷδ °¡Àå ±¦ÂúÀºµí ÇÕ´Ï´Ù. Ȥ½Ã ¿ÀÅ»ÀÚ³ª ÀÌ»óÇÑ ¹ø¿ªÀÌ ÀÖÀ¸¸é ´ñ±Û·Î ³²°ÜÁÖ¼¼¿ä.
¶ÇÇÑ, Neil ÀÌ »õ·Î ¾²°í ÀÖ´Â
¹«·á OSGi Ã¥(
CC by-nc-sa¸¦ µû¸¨´Ï´Ù) ÀÎ
"OSGi in Practice" µµ
Neil ¿¡°Ô Çã¶ôÀ» ¹Þ¾Æ¼ ¹ø¿ª ÀÛ¾÷ ÁßÀä. ¹ø¿ªÀÌ ³¡³ª´Â ´ë·Î ºí·Î±×¿¡ °ø°³ÇÒ ¿¹Á¤ÀÔ´Ï´Ù. »ç½Ç OiP¸¦ ¸ÕÀú ÇÏ·Á°í Çߴµ¥, ½ÃÀÛÇÏ´Â OSGi °³¹ßÀÚ µé¿¡°Ô µµ¿òÀÌ µÉµíÇÏ¿© ¸ÕÀú ÇØµÓ´Ï´Ù.
OSGi ´Â "Dynamic Module System for Java" ¶ó°í ºÒ¸®¸ç, ´Ù¾çÇÑ È°¿ëµµ¸¦ °¡Áö´Â ÀÚ¹Ù±â¹ÝÀÇ ¼ºñ½º Ç÷§ÆûÀÔ´Ï´Ù. Eclipse ³»ºÎ°¡ OSGi ¸¦ ÀÌ¿ëÇØ¼ ¸¸µé¾î Áö°í ÀÖÀ¸¸ç, È®ÀåÀÌ ½¬¿î ±¸Á¶·Î ÀÎÇØ ÀÓº£µðµå µð¹ÙÀ̽º ºÎÅÍ ¼¹ö ±â¹Ý±îÁö Àû¿ëÆøÀ» ³ÐÇô ³ª°¡°í ÀÖ½À´Ï´Ù.
2008³â¿¡ ¹è¿öµÖ¾ß ÇÒ Java ±â¼ú 5°¡ÁöÁß Çϳª À̱⵵ ÇÕ´Ï´Ù. ( ´Ù¸¥ 4°³´Â Cloud Computing,Groovy,GWT,JCR) ±Ù·¡¿¡´Â Spring Framework ÀÌ OSGi ¸¦ Áö¿øÇÏ´Â SpringDMÀ» ¹ßÇ¥ÇÏ¸é¼ ¼ö¸¹Àº Spring »ç¿ëÀںе鵵 °ü½ÉÀ» ¸¹ÀÌ °¡Áö°í °è½Å µí ÇÕ´Ï´Ù.
¶ÇÇÑ Á¦°¡ °ü½ÉµÎ°í ÀÖ´Â IBM Rationale ÀÇ
Jazz Platform °ú Team Concert°¡ OSGi ¸¦ ±â¹ÝÀ¸·Î Çϰí Àֱ⵵ Çϰí ÇØ¼, Á¦°¡ °¡Àå ÁÖ¸ñÇϰí, ¿½ÉÈ÷ °øºÎ Çϰí ÀÖ´Â ±â¼úÀ̱⵵ ÇÕ´Ï´Ù. ^^; Àâ¼³ÀÌ ±æ¾ú³×¿ä. ÇÏ¿©Æ° ¾ÕÀ¸·Î´Â OSGi , Java , Jazz ¿¡ °ü·Ã µÈ ±ÛµéÀ» ºí·Î±×¿¡ °£°£È÷ Àû¾îº¸·Á±¸ ÇÕ´Ï´Ù. ±âȸ°¡ µÇ¸é Á¦°¡ Á÷Á¢ OSGi °Á¸¦ ¿¬Àç ÇØº¸°í ½ÍÀº ¸¶À½µµ ÀÖÁö¸¸.. ¾ðÁ¦°¡ µÉÁö ¸ð¸£°Ú³×¿ä.
Getting started with OSGi : OSGi ½ÃÀÛÇÏ±â ÆÄÆ® 1 - ´ç½ÅÀÇ Ã¹¹øÂ° ¹øµé
ÀúÀÚ : Neil Bartlett < njbartlett at gmail dot com >
¿ªÀÚ : ±Ç Á¤Çõ < guruguru at gmail dot com >
±Û¿øº» :
http://www.eclipsezone.com/eclipse/forums/t90365.html - Getting started with OSGi : Your First Bundle
´ÙÀ½ 1-2ÁÖ°£, EclipseZone ¿¡¼ OSGi ¿¡ °üÇÑ ÂªÀº ½Ã¸®Áî ±ÛµéÀ» ¿¬ÀçÇÒ ¿¹Á¤ÀÔ´Ï´Ù. ÀÌ ±ÛµéÀÌ ¸ð¿©¼ OSGi ÇÁ·Î±×·¡¹Ö ±â¼úÀ» ¸¶½ºÅÍ ÇÏ´Â ½¬¿î °æ·Î¸¦ ¸¸µé¾î ÁÙ °ÍÀÔ´Ï´Ù. ÇÏÁö¸¸ °¢°¢ÀÇ ±ÛµéÀº ´Ü ÇÑ °³ÀÇ »õ·Î¿î ±â¼ú¸¸À» ¼Ò°³ÇÒ °ÍÀ̸ç, ¾à 10ºÐÀ̳»¿¡ »ìÆìº¼ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ¶ÇÇÑ ¿ì¸®´Â OSGi °³¹ßÀÌ ¾ó¸¶³ª ½¬¿îÁö¸¦ º¸¿©ÁÖ°í ½ÍÀ¸¹Ç·Î, °³¹ßÀ» À§ÇØ Eclipse ¸¦ »ç¿ëÇÏÁö ¾Ê°í ÅØ½ºÆ® ¿¡µðÅÍ¿Í ±âº» Ä¿¸Çµå ¶óÀÎ Åø ¸¸À» »ç¿ëÇÒ ¿¹Á¤ÀÔ´Ï´Ù. ÀÚ, "Getting started with OSGi" ½Ã¸®Áî¿¡ ¿Â °ÍÀ» ȯ¿µÇÕ´Ï´Ù.
±âº» ÀÛ¾÷ȯ°æÀ» ¸¸µé¾î¾ß ÇϹǷÎ, ù ¹øÂ° ±ÛÀº ´Ù¸¥ ±Û¿¡ ºñÇØ ´Ù¼Ò ±æ¾îÁú ¿¹Á¤ÀÔ´Ï´Ù. ½ÃÀÛÇϱâ Àü¿¡, ½ÇÇàÇϱâ À§ÇÑ OSGi ÇÁ·¹ÀÓ¿öÅ©¸¦ ÇÊ¿ä·Î ÇÕ´Ï´Ù. ¿ì¸®°¡ ¼±ÅÃÇÒ ¼ö ÀÖ´Â ¼¼ °³ÀÇ ¿ÀǼҽº ±¸Çö µéÀÌ ÀÖ½À´Ï´Ù. Apache Felix , Knopflerfish, ±×¸®°í Equinox. ¾î¶² °ÍÀ» ¼±ÅÃÇÏµç ¿ì¸®°¡ ÀÛ¼ºÇÒ ÄÚµå´Â ¶È°°°ÚÁö¸¸ ½ÇÇà¹æ¹ýÀº ´Ù¼Ò ´Ù¸¦ ¼ö ÀÖ½À´Ï´Ù. ¿©±â°¡ EclipseZone À̹ǷÎ, ¿ì¸° Equinox ¸¦ »ç¿ëÇÒ °ÍÀ̸ç, Equinox ´Â Eclipse ÀÚü°¡ »ç¿ëÇÏ´Â ·±Å¸ÀÓÀÔ´Ï´Ù. ¼³Ä¡µÈ Eclipse °¡ ÀÖ´Ù¸é °Å±â¼ º¹»çÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.
org.eclipse.osgi_3.2.1.R32x_v20060919.jar ÆÄÀÏÀ» ã°í ºó µð·ºÅ丮·Î º¹»çÇϼ¼¿ä. (NB : ¹öÀü ¹øÈ£´Â ¾î¶² Eclipse ¹öÀüÀÌ ¼³Ä¡µÇ¾î¾ß ÀÖ´À³Ä¿¡ µû¶ó ¾à°£ ´Ù¸¦¼ö ÀÖ½À´Ï´Ù. ) ¸¸¾à Eclipse ¼³Ä¡º»ÀÌ ¾ø´Ù¸é, http://download.eclipse.org/eclipse/equinox/ ¿¡¼ Jar ÆÄÀÏÀ» ´Ù¿î·Îµå ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¸í·ÉµéÀ» ª°Ô Çϱâ À§ÇØ, ÀÌ Jar ÆÄÀÏÀÇ À̸§À»
equinox.jar ·Î º¯°æÇսôÙ. ¿ì¸®ÀÇ °³¹ßµð·ºÅ丮¿¡¼ Ä¿¸ÇµåâÀ» ¿°í ¾Æ·¡ÀÇ Ä¿¸Çµå¸¦ ½ÇÇàÇÕ´Ï´Ù.
> java -jar equinox.jar -console
¸î Ãʾȿ¡,
osgi> ÇÁ·ÒÇÁÆ®°¡ º¸ÀÏ °ÍÀÔ´Ï´Ù. ÃàÇÏÇÕ´Ï´Ù. ´ç½ÅÀº ÀÌÁ¦ OSGi ¸¦ ½ÇÇàÇϼ̽À´Ï´Ù!
osgi> ÇÁ·ÒÇÁÆ®´Â ÇÁ·¹ÀÓ¿öÅ©¸¦ ÄÁÆ®·ÑÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â Equinox ÀÇ ¸í·ÉµéÀ» ½ÇÇàÇÒ ¼ö ÀÖ°Ô ÇÕ´Ï´Ù. help ¸¦ ÀÔ·ÂÇØ¼ ¸í·É ¸®½ºÆ®¸¦ º¸°í, ±× Áß ¸î °³¿Í ³î¾Æ º¸µµ·Ï Çϼ¼¿ä. ÇØº¸¼Ì³ª¿ä ? ±×·³ ss ¸¦ ÀÔ·ÂÇØº¸¼¼¿ä. À̰ÍÀº °¡Àå ÀÚÁÖ »ç¿ëÇÏ´Â ¸í·ÉÀÔ´Ï´Ù. À̰ÍÀº "Short Status : °£·«ÇÑ »óꏱâ" ¸¦ ÀǹÌÇϸç, ¿ì¸®¿¡°Ô ¼³Ä¡µÈ ¹øµéÀÇ ¸®½ºÆ®¿Í ÇöÀç ¾î¶² »óÅÂÀÎÁö¸¦ º¸¿©ÁÝ´Ï´Ù. ( "¹øµé:Bundle"Àº OSGi °³³ä¿¡¼ÀÇ ¸ðµâÀÔ´Ï´Ù. ´ç½ÅÀÌ ¸¸¾à Eclipse °³¹ßÀÚ¶ó¸é, À̰ÍÀ» Ç÷¯±×ÀÎ À̶ó°í ¾Ë°í ÀÖÀ» ¼öµµ ÀÖ½À´Ï´Ù. ±âº»ÀûÀ¸·Î ¹øµé°ú Ç÷¯±×ÀÎÀº °°Àº °ÍÀÔ´Ï´Ù. )
Equinox ´Â ´ÙÀ½°ú °°Àº ³»¿ëÀ» Ãâ·ÂÇÕ´Ï´Ù.
Framework is launched.
id State Bundle
0 ACTIVE system.bundle_3.2.1.R32x_v20060919
À̰ÍÀº ´Ü ÇϳªÀÇ ¹øµéÀÌ ¼³Ä¡µÇ¾îÀÖ°í, ½ÇÇàÁßÀÎ »óÅÂ(Active)ÀÌ¸ç ±×°ÍÀÌ ½Ã½ºÅÛ ¹øµéÀ̶ó´Â °ÍÀ» ¾Ë·ÁÁÝ´Ï´Ù. À̰ÍÀº OSGi ¿¡¼ Ư¼öÇÑ ¹øµéÀ̸ç Ç×»ó Á¸ÀçÇϰí, ÇÁ·¹ÀÓ¿öÅ© ÀÚ½ÅÀ» ³ªÅ¸³À´Ï´Ù.
ÀÚ, ÀÌÁ¦ ¿ì¸®ÀÇ ¹øµéÀ» ÀÛ¼ºÇغ¾½Ã´Ù. À§¿Í °°Àº µð·ºÅ丮¿¡
HelloActivator.java ¶ó´Â ÆÄÀÏÀ» ¸¸µé°í ¾Æ·¡ÀÇ Äڵ带 ±× ÆÄÀÏ¿¡ º¹»çÇϼ¼¿ä.
import org.osgi.framework.*;
public class HelloActivator implements BundleActivator {
public void start(BundleContext context) {
System.out.println("Hello EclipseZone Readers!");
}
public void stop(BundleContext context) {
System.out.println("Goodbye EclipseZone Readers!");
}
}
¹øµéÀº ¶ÇÇÑ ÀÚ½ÅÀÇ ´Ù¾çÇÑ ¸ÞŸµ¥ÀÌÅÍ Á¤º¸(À̸§,¹öÀü°ú °°Àº)¸¦ °¡Áö°í ÀÖ´Â Manifest ÆÄÀÏÀ» ÇÊ¿ä·Î ÇÕ´Ï´Ù. HelloWorld.mf ¶ó´Â ÆÄÀÏÀ» ¸¸µé°í ¾Æ·¡ÀÇ ÅØ½ºÆ®¸¦ ±× ÆÄÀÏ¿¡ º¹»çÇϼ¼¿ä. ÀÌ ÆÄÀÏÀÌ ¸¶Áö¸·¿¡ ²À ÇÑ °³ÀÇ ºó ÁÙÀ» °¡Áöµµ·Ï È®ÀÎÇØ ÁÖ¼¼¿ä, ±×·¸Áö ¾ÊÀ¸¸é Jar Ä¿¸Çµå ¶óÀÎÅøÀÌ ÀÌ ÆÄÀÏÀ» Àß¶ó¸ÔÀ» °Ì´Ï´Ù.(¿ªÀÚÁÖ : ¸¸¾à ¹øµé ½ÃÀ۽ÿ¡ Activator °¡ ÀÌ»óÇÏ´Ù´Â ¿¡·¯°¡ ³´Ù¸é ¾Æ¸¶ ºó ÁÙÀ» ³Ö´Â°É ºüÆ®¸®½Å °É °Ì´Ï´Ù. )
Manifest-Version: 1.0
Bundle-Name: HelloWorld
Bundle-Activator: HelloActivator
Bundle-SymbolicName: HelloWorld
Bundle-Version: 1.0.0
Import-Package: org.osgi.framework
ÀÚ ÀÌÁ¦ »õ·Î¿î Ä¿¸Çµå âÀ» ¿°í ( OSGi °¡ ½ÇÇàÇϵµ·Ï ³»¹ö·Á µÎ±â À§ÇÔÀÔ´Ï´Ù. ) ´ÙÀ½ Ä¿¸Çµå¸¦ ÀÌ¿ëÇÏ¿© Jar ÆÄÀÏÀ» ¸¸µì´Ï´Ù.
> javac -classpath equinox.jar HelloActivator.java
> jar -cfm HelloWorld.jar HelloWorld.mf HelloActivator.class
ÀÌÁ¦ OSGi ÄַܼΠµ¹¾Æ°¡¼,
install file:HelloWorld.jar ¶ó°í ÀÔ·ÂÇÕ´Ï´Ù. °á°ú´Â
"Bundle id is 1" Àϰ̴ϴÙ. ´Ù½Ã ss ¸¦ ÀÔ·ÂÇÏ¸é ¾Æ·¡¿Í °°Àº ³»¿ëÀ» º¸½Ç ¼ö ÀÖ½À´Ï´Ù.
Framework is launched.
id State Bundle
0 ACTIVE system.bundle_3.2.1.R32x_v20060919
1 INSTALLED HelloWorld_1.0.0
¿ì¸®ÀÇ HelloWorld ¹øµéÀÌ ¼³Ä¡µÇ¾ú½À´Ï´Ù¸¸ ¾ÆÁ÷ ½ÇÇà»óÅÂ(Active)´Â ¾Æ´Ï³×¿ä. ÀÌ »óŰ¡ ¹«¾ùÀ» ÀǹÌÇÏ´ÂÁö´Â Â÷ÈÄÀÇ ±Û¿¡¼ »ìÆìº¸±â·Î Çϰí, ¿©±â¼± ±×³É
start 1 À» ÀÔ·ÂÇØ¼ ¹øµéÀ» ½ÃÀÛÇϵµ·Ï ÇÕ´Ï´Ù. "1" Àº ù ¹øÂ° Ä÷³¿¡ ³ª¿ÍÀÖ´Â ¹øµéÀÇ ID ÀÔ´Ï´Ù. ÀÌ·¸°Ô ÀÔ·ÂÇϸé
"HelloEclipseZone Readers!" ¶ó´Â ¸Þ½ÃÁö¸¦ º¸½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ´Ù½Ã
stop 1 À» ÀÔ·ÂÇϸé
"Goodbye EclipseZone Readers!" ¸¦ º¼¼ö ÀÖ½À´Ï´Ù. Áö°Ü¿ï ¶§±îÁö ¹Ýº¹Çغ¸¼¼¿ä. ¶§¶§·Î ss ¸¦ ÀÔ·ÂÇØ¼ ¹øµéÀÇ »óŰ¡ ¹Ù²î´Â °ÍÀ» º¸´Â °Íµµ ÀØÁö ¸¶½Ã±¸¿ä.
ÀÌ ¾È¿¡¼ ¹«½¼ ÀÏÀÌ ÀϾɱî¿ä ? ¿ì¸®ÀÇ ÄÚµå´Â BundleActivator ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϰí, ÇÁ·¹ÀÓ¿öÅ©¿¡°Ô ¿ì¸®ÇÑÅ× Áß¿äÇÑ LifeCycle À̺¥Æ®¸¦ ¾Ë¸± ¼ö ÀÖµµ·Ï ÇÏ¿´½À´Ï´Ù. ¹øµéÀÌ ½ÃÀ۵Ǹé, ÇÁ·¹ÀÓ¿öÅ©´Â
start ¸Þ¼Òµå¸¦ È£ÃâÇϰí, ¹øµéÀÌ ¸ØÃâ ¶§
stop ¸Þ¼Òµå¸¦ È£ÃâÇÏ¿© ÁÝ´Ï´Ù. ÀÌ·± ÀÏ µéÀº Manifest ÆÄÀÏ¿¡ ÀÖ´Â
"Bundle-Activator: HelloActivator" ¿¡ ÀÇÇØ °¡´ÉÇØ Áý´Ï´Ù. À§ ¶óÀÎÀÌ ÇÁ·¹ÀÓ¿öÅ©¿¡°Ô ¿ì¸® ¹øµé ¾ÈÀÇ ¾î¶² Ŭ·¡½º°¡ Activator ÀÎÁö¸¦ ¾Ë·ÁÁÝ´Ï´Ù. ÀϹÝÀûÀ¸·Î ¿ì¸®´Â Ç® Ŭ·¡½º À̸§À» Àû¾îÁÖÁö¸¸, °ÔÀ»·¯¼ ±×³É µðÆúÆ® ÆÐŰÁö¸íÀ» »ç¿ëÇß½À´Ï´Ù.
À̰ÍÀ¸·Î ¿ì¸®ÀÇ Ã¹ ¹øÂ° ±ÛÀ» ¸¶Ä¨´Ï´Ù. ´ÙÀ½¿¡ ºË°Ú½À´Ï´Ù.
ÇÏ½Ã¸é ´Ù¾çÇÑ Á¤º¸¸¦ ´õ¿í »¡¸® ¹Þ¾Æº¸½Ç¼ö ÀÖ½À´Ï´Ù.
@±Ùµ¥ ¿ø·¡ JavaÂÊÀÌ ¾Æ´Ï½ÃÁö ¾Ê¾Ò³ª¿ä? ¿ò.. Áö±Ý ¾îµð°è½ÅÁö ±Ã±ÝÇϳ׿ä. Àü Á¹¾÷ÇÏ°í ¼Ö·ç¼ÇXX ¿¡ ÀÖ½À´Ï´Ù. ÇÏÇÏÇÖ