±ÇÁ¤Çõ
±¸·ç
¿ø¾îµ¥ÀÌ
xguru ¸¦ Follow Çϼ¼¿ä :)

ÀÌ ±ÛÀº Neil Bartlett ÀÇ ¿¬Àç ±Û "Getting started with OSGi"ÀÇ ¹ø¿ªº»ÀÔ´Ï´Ù.
* ÆÄÆ® 1 - ù¹øÂ° ¹øµé : Your First Bundle
¿¡ À̾î 2¹øÂ° ±ÛÀÔ´Ï´Ù. ¿ÀÅ»ÀÚ ¹× ÀÌ»óÇÑ ¹ø¿ªÀº ´ñ±Û·Î ³²°ÜÁÖ¼¼¿ä


Getting started with OSGi : OSGi ½ÃÀÛÇÏ±â ÆÄÆ® 2 - ÇÁ·¹ÀÓ¿öÅ©¿Í ¿¬µ¿Çϱâ

ÀúÀÚ : Neil Bartlett < njbartlett at gmail dot com >
¿ªÀÚ : ±Ç Á¤Çõ < guruguru at gmail dot com >

±Û¿øº» : http://www.eclipsezone.com/eclipse/forums/t90448.html - Getting started with OSGi : Interacting with the Framework

EclipseZone OSGi Æ©Å丮¾ó¿¡ µ¹¾Æ¿À½Å°É ȯ¿µÇÕ´Ï´Ù.

Áö³­ ½Ã°£¿¡´Â ½ÃÀÛ°ú Á¾·á½Ã¿¡ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ´Â Hello World ¹øµéÀ» »ìÆìº¸¾Ò´Âµ¥¿ä. À̰ÍÀº BundleActivator ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ¿© start ¿Í stop ¸Þ¼Òµå¸¦ Á¦°øÇÔÀ¸·Î¼­ °¡´ÉÇß½À´Ï´Ù. Äڵ带 ´Ù¸¥ºÎºÐÀ» »ìÆìº¸¸é, start ¿Í stop ¸Þ¼ÒµåÀÇ ¼­¸í(Method Signature , ¿ªÁÖ:¸Þ¼ÒµåÀÇ À̸§,ÀÎÀÚ,¸®ÅÏŸÀÔµîÀ» ÃÑĪ)¿¡¼­ ¿ì¸®°¡ BundleContext ¶ó´Â ÀÎÀÚ¸¦ ¹Þ¾Ò´Ù´Â °ÍÀ» ¾Ë¼ö ÀÖ½À´Ï´Ù. ÀÌ ÀåÀÇ Æ©Å丮¾ó¿¡¼­ ¿ì¸° BundleContext ¿¡ ´ëÇØ ¾Ë¾Æº¸°í ÀÌ °ÍÀ¸·Î ¹«¾ùÀ» ÇÒ¼ö ÀÖ´ÂÁö »ìÆìº¼ °Í ÀÔ´Ï´Ù.

BundleContext ´Â OSGi ÇÁ·¹ÀÓ¿öÅ©°¡ ¿ì¸®¿¡°Ô º¸³»ÁÖ´Â ¸ÅÁ÷ƼÄÏ ÀÔ´Ï´Ù. ÄÚµå»ó¿¡¼­ ÇÁ·¹ÀÓ¿öÅ©¿Í ¿¬°üµÈ ÀÛ¾÷À» ÇØ¾ßÇÒ Çʿ䰡 ÀÖÀ» ¶§ BundleContext ¸¦ »ç¿ëÇÏ°Ô µÉ°ÍÀÔ´Ï´Ù. ½ÇÁ¦·Î À̰ÍÀº OSGi API ¿Í ¿¬°áÇϱâ À§ÇÑ ´Ü ÇϳªÀÇ ¹æ¹ýÀ̸ç ÇÁ·¹ÀÓ¿öÅ©´Â ¹øµéÀÌ ½ÃÀ۵ɶ§ BundleActivator ¸¦ ÅëÇØ °¢ ¹øµé¿¡°Ô ÀÌ Æ¼ÄÏÁßÀÇ Çϳª¸¦ ¹ß±ÇÇÏ°Ô µË´Ï´Ù.

Áö³­¹ø¿¡ ½ÃÀÛÇÑ Equinox °¡ ¾ÆÁ÷ ½ÇÇàÁßÀ̶ó¸é Àç½ÃÀÛ ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ½ÇÇàÁßÀÌ ¾Æ´Ï¶ó¸é, ´Ù½Ã ½ÃÀÛÇϱâ À§ÇÑ Ä¿¸Çµå´Â

> java -jar equinox.jar -console

ÀÔ´Ï´Ù. ss ¸¦ ÀÔ·ÂÇØ¼­ Áö³­¹ø¿¡ ¼³Ä¡ÇÑ HelloWorld ¹øµéÀÌ ¾ÆÁ÷ ¼³Ä¡µÇ¾î ÀÖ´ÂÁö È®ÀÎÇØ º¼ ¼ö ÀÖ½À´Ï´Ù. ´ç½ÅÀÌ Equinox ¸¦ Á¾·áÇϰí Àç ½ÃÀÛÇß´õ¶óµµ ±×°ÍÀ» º¼¼ö Àִµ¥, ¿Ö³ÄÇϸé OSGi ÇÁ·¹ÀÓ¿öÅ©°¡ °¢°¢ÀÇ ½ÇÇà°£¿¡ ½ÇÇà »óŸ¦ ÀúÀåÇϱ⠶§¹®ÀÔ´Ï´Ù.

À̹ø ¿¬½ÀÀ» À§ÇØ, ¿ì¸®´Â Hello World ¹øµéÀ» ã¾Æ³»°í Uninstall(Á¦°Å) ÇÏ´Â ¹øµéÀ» ÀÛ¼ºÇØ º¼°ÍÀÔ´Ï´Ù. ¹°·Ð ÄܼÖâ¿¡¼­ uninstall ¸í·ÉÀ» ³»¸²À¸·Î °£´ÜÈ÷ ÇØº¼¼ö ÀÖÁö¸¸, ¾î¶»°Ô OSGi API ¸¦ ÅëÇØ ÇÁ·Î±×·¥ÀûÀ¸·Î ½ÇÇà°¡´ÉÇÑÁö¸¦ ¾Ë¾Æº¸±â À§Çؼ­ÀÔ´Ï´Ù. ±×·³ HelloWorldKiller.java ¶ó´Â ÆÄÀÏÀ» ¸¸µé°í ¾Æ·¡ÀÇ Äڵ带 º¹»çÇÕ´Ï´Ù.

import org.osgi.framework.*;
 
public class HelloWorldKiller implements BundleActivator {
    public void start(BundleContext context) {

        System.out.println("HelloWorldKiller searching...");
        Bundle[] bundles = context.getBundles();
        for(int i=0; i < bundles.length; i++) {
            if("HelloWorld".equals(bundles[i]
                                   .getSymbolicName())) {

                try {
                    System.out.println("Hello World found, "
                                     + "destroying!");
                    bundles[i].uninstall();
                    return;
                } catch (BundleException e) {

                    System.err.println("Failed: "
                                     + e.getMessage());
                }
            }
        }
        System.out.println("Hello World bundle not found");
    }

 
    public void stop(BundleContext context) {
        System.out.println("HelloWorldKiller shutting down");
    }
}


ÀÌÁ¦ Manifest ¸¦ ÀÛ¼ºÇÕ´Ï´Ù. ¸¶Áö¸·ÁÙ¿¡ ºóÁÙÀÌ ÀÖ¾î¾ß Çϴ°ÍÀº ¿ª½Ã ¸Å¿ì Áß¿äÇÕ´Ï´Ù. ¾Æ·¡ ³»¿ëÀ» HelloWorldKiller.mf ¿¡ º¹»çÇϼ¼¿ä.

Manifest-Version: 1.0
Bundle-Name: HelloWorldKiller
Bundle-Activator: HelloWorldKiller
Bundle-SymbolicName: HelloWorldKiller
Bundle-Version: 1.0.0
Import-Package: org.osgi.framework


ÀÚ ÀÌÁ¨ ÄÄÆÄÀÏ Çϰí Jar ÆÄÀÏÀ» ¸¸µì´Ï´Ù.


> javac -classpath equinox.jar HelloWorldKiller.java
> jar -cfm HelloWorldKiller.jar HelloWorldKiller.mf HelloWorldKiller.class

´Ù½Ã OSGi Äֿܼ¡¼­ install file:HelloWorldKiller.jar ¸¦ ÀÔ·ÂÇØ¼­ »õ ¹øµéÀ» ¼³Ä¡Çϰí ss ¸¦ ÀÔ·ÂÇØ º¾´Ï´Ù. »óÅ ¸®½ºÆ®´Â ÀÌÁ¦ ¾Æ·¡¿Í °°À» °ÍÀÔ´Ï´Ù.

id      State       Bundle
0       ACTIVE      system.bundle_3.2.1.R32x_v20060919
1       ACTIVE      HelloWorld_1.0.0
2       INSTALLED   HelloWorldKiller_1.0.0

ÀÚ ÀÌÁ¦ start 2 ¸¦ ÀÔ·ÂÇØ¼­ Hello World Killer ¸¦ ½ÇÇàÇÏ¿© º¾½Ã´Ù. ¾Æ·¡¿Í °°Àº Ãâ·ÂÀ» º¸½Ç¼ö ÀÖ½À´Ï´Ù.

HelloWorldKiller searching...
Hello World found, destroying!
Goodbye EclipseZone Readers!

¸¶Áö¸· Ãâ·Â¶óÀÎÀº ¿øº» Hello World ¹øµé¿¡¼­ ³ª¿Ô´Ù´Â°ÍÀ» ÁÖ¸ñÇϼ¼¿ä. ¿ì¸®°¡ Killer ¸¦ ½ÇÇàÇϱâ Àü¿¡ ±× ¹øµéÀÌ active »óÅ¿´±â ¶§¹®¿¡ Á¦°ÅµÇ±â Àü¿¡ Áß´Ü µÇ¾î¾ß¸¸ Ç߱⿡ BundleActivator ¿¡°Ô stop ÀÌ ½ÇÇà µÇµµ·Ï ¸¸µé¾ú½À´Ï´Ù.

ss ÀÇ Ãâ·ÂÀ» º¸µµ·Ï ÇսôÙ. Hello World °¡ ÀÌÁ¦ »ç¶óÁ³½À´Ï´Ù.
id      State       Bundle
0       ACTIVE      system.bundle_3.2.1.R32x_v20060919
2       ACTIVE      HelloWorldKiller_1.0.0

¿©±â¿¡ º¸¾È ¹®Á¦°¡ ÀÖÁö ¾ÊÀº°¡ ±Ã±ÝÇØ ÇϽǼö ÀÖ½À´Ï´Ù. ¾î¶² ¹øµéÀÌ¶óµµ ´Ù¸¥ ¾î¶² ¹øµéÀ» Á¦°ÅÇÒ¼ö ÀÖ´Â°Í Ã³·³ º¸À̴ϱî¿ä! ´ÙÇེ·´°Ôµµ OSGi ´Â ÇÁ·¹ÀÓ¿öÅ©¿ÍÀÇ ¸ðµç ¿¬°èÀÛ¾÷µéÀ» ¼¼¹ÐÇÏ°Ô Á¶Á¾ÇÒ¼ö ÀÖ´Â Á¾ÇÕÀûÀÎ º¸¾È°èÃþÀ» °¡Áö°í ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ƯÁ¤ "°ü¸®" ¹øµé¿¡ ÀÇÇØ¼­¸¸ ¹øµéÀÌ Á¦°ÅµÉ¼ö ÀÖµµ·Ï ÇÒ¼öµµ ÀÖ½À´Ï´Ù. ¾î¶°Å³ª, º¸¾ÈÀÌ µ¿ÀÛÇϵµ·Ï Çϴ°ÍÀº ´ëºÎºÐ ¼³Á¤(Configuration)»óÀÇ ¹®Á¦ÀÌ´Ï ÀÌ ¿¬Àç¿¡¼­´Â ¿ì¸®´Â Äڵ忡¸¸ ÁýÁßÇϱâ·Î ÇÕ´Ï´Ù.

À̹øÈ¸´Â ¿©±â±îÁö ÀÔ´Ï´Ù. ´ÙÀ½½Ã°£±îÁö BundleContext ÀÇ ÀÎÅÍÆäÀ̽º¸¦ »ìÆìº¸°í ¹«¾ùÀ» ÇÒ¼ö ÀÖ´ÂÁö ¾Ë¾Æº¸´Â°Ç ¾î¶³±î¿ä ? ¿¹¸¦ µé¾î installBundle ¸Þ¼Òµå¸¦ ÀÌ¿ëÇÏ¿© ÇÁ·Î±×·¥ÀûÀ¸·Î »õ ¹øµéÀ» ¼³Ä¡ÇÏ´Â °ÍÀ» ½ÃµµÇØ º¼ ¼öµµ ÀÖ½À´Ï´Ù. ¶Ç´Â ÇöÀç ¼³Ä¡µÈ ¹øµéµé¿¡ ´ëÇÑ ¸®½ºÆ®¸¦ °¡Á®¿Í¼­ ¸¶Áö¸·À¸·Î ¼öÁ¤µÈ ³¯Â¥¿Í ½Ã°£À» Ãâ·ÂÇϵµ·Ï ÇÒ ¼öµµ ÀÖ±¸¿ä. ½ÃÀÛÇϴµ¥ µµ¿òÀÌ ÇÊ¿äÇÏ´Ù¸é OSGi Release 4 API ¿¡ ´ëÇÑ JavaDoc À» Âü°íÇϼ¼¿ä

Æ®À§ÅÍ (Twitter) ¿¡¼­ Á¦ Æ®À­°èÁ¤ @xguru ¸¦ Follow ÇÏ½Ã¸é ´Ù¾çÇÑ Á¤º¸¸¦ ´õ¿í »¡¸® ¹Þ¾Æº¸½Ç¼ö ÀÖ½À´Ï´Ù.
[ Æ®À§ÅÍ·Î ! | del.icio.us this | ±¸±Û ºÏ¸¶Å© | ´ÙÀ½ ºÏ¸¶Å© | ¸¶°¡¸° | Bookmakr | ÇÑRSS ºÏ¸¶Å© | Social bookmark This ] | [ Translate to english ]
  °ü·Ã ±Û  

ÃÑ4 °³ÀÇ ´ñ±Û
  1. ¾È³çÇϼ¼¿ä.

    HelloWorldKiller.java ÄÚµå Áß ¿ÀÅ»ÀÚ°¡ º¸ÀÔ´Ï´Ù.

    for(int i=0; i{
    ^
    for(int i = 0; i < bundle.length; i++) {

    °í¸¿½À´Ï´Ù.
    commented by ¿¡³ª [2008/05/21 22:22]
  2.   ¾Ñ °í¸¿½À´Ï´Ù. º¹»çÇϸ鼭 ¸î±ÛÀÚ ¾ø¾îÁ³³ª º¸³×¿ä ¤Ð¤Ð
    replied by ±¸·ç [2008/05/22 00:42]
  3. Helloworldkiller.jar ÀνºÅçÇØµµ resolved »óÅ·Π³ª¿À±¸¿ä id°ªÀº2·Î ÇÒ´ç¹Þ¾Ñ´Âµ¥ start2 ÄܼÖâ ÀԷ½Ã
    org.osgi.framework.BundleException: The activator HelloWorldKiller for bundle HelloWorldKiller is invalid
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:141)

    ÀÌ·± ¹®±¸°¡ ¶ß³×¿ä ÀÌÀ¯¸¦ ¸ð¸£°Ù½À´Ï´Ù
    commented by ¿À·ùÁú¹®ÀÌ¿ä [2008/07/18 03:05]
  4.   The activator HelloWorldKiller for bundle HelloWorldKiller is invalid °¡ ³ª¿À´Â °ÍÀº
    À§¿¡ ³»¿ë¿¡µµ ÀÖÁö¸¸ MANIFEST.MF °¡ À߸øµÇ¾î¼­ Activator ¸¦ ¸øÃ£±â ¶§¹®Àϵí ÇÕ´Ï´Ù.
    MANIFEST.MF ÆÄÀÏ ¸Ç ¸¶Áö¸·¿¡ ºóÁÙÀÌ Çϳª ÀÖ´ÂÁö È®ÀÎÇØ º¸¼¼¿ä.
    replied by ±¸·ç [2008/07/18 08:40]
ÃÑ 4 °³ÀÇ ´ñ±Û
À̸§ :  URL(Àִºи¸) :

[´ñ±Ûȯ¿µ!] Àú ´ñ±Û ¹«Áö ÁÁ¾ÆÇÕ´Ï´Ù. ^^ ±×¸®°í, Æ®À§ÅÍ @xguru ·Î Áú¹®Áּŵµ µË´Ï´Ù.      [´ñ±Û µî·Ï]