OSGi ¹øµé Manifest Çì´õ

¹öÀü 3.1 - ¸¶Áö¸· °³Á¤ ³¯Â¥: 2005³â 6¿ù 20ÀÏ

¹øµéÀº META-INF/MANIFEST.MF¶ó°í ÇÏ´Â Manifest ÆÄÀÏ·Î ÀÚü¿¡ ´ëÇÑ ¼³¸í Á¤º¸¸¦ Àü´ÞÇÕ´Ï´Ù. OSGi R4 ÇÁ·¹ÀÓ¿öÅ© ½ºÆåÀº ¹øµé °³¹ßÀÚ°¡ ¹øµé¿¡ ´ëÇÑ ¼³¸í Á¤º¸¸¦ Á¦°øÇϱâ À§ÇØ »ç¿ëÇÏ´Â Export-Package ¹× Bundle-Classpath¿Í °°Àº Manifest Çì´õ ¼¼Æ®¸¦ Á¤ÀÇÇÕ´Ï´Ù. Eclipse OSGi ÇÁ·¹ÀÓ¿öÅ©´Â Àüü OSGi R4 ÇÁ·¹ÀÓ¿öÅ© ½ºÆå°ú ¸ðµç ÄÚ¾î ÇÁ·¹ÀÓ¿öÅ© ¼­ºñ½º¸¦ ±¸ÇöÇÕ´Ï´Ù. OSGi R4 ÄÚ¾î ÇÁ·¹ÀÓ¿öÅ© ¼­ºñ½º¿¡´Â ´ÙÀ½ÀÌ Æ÷ÇԵ˴ϴÙ.

OSGi R4 ½ºÆå¿¡´Â ¿©·¯ °³ÀÇ ¼±ÅÃÀû ¼­ºñ½º°¡ Á¤ÀǵǾî ÀÖ½À´Ï´Ù. Eclipse OSGi ÇÁ·¹ÀÓ¿öÅ© ±¸Çö¿¡¼­´Â ¼±ÅÃÀû ¼­ºñ½º°¡ Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù. OSGi R4 Manifest Çì´õ ¹× ¼­ºñ½º¿¡ °üÇÑ Á¤º¸´Â OSGi ½ºÆåÀ» ÂüÁ¶ÇϽʽÿÀ.

Eclipse ¹øµé Manifest Çì´õ

Eclipse OSGi ÇÁ·¹ÀÓ¿öÅ©´Â ´Ù¾çÇÑ Ãß°¡ ¹øµé Manifest Çì´õ ¹× Áö½Ã¹®À» Áö¿øÇÕ´Ï´Ù. ¹øµé °³¹ßÀÚ´Â ÀÌ Ãß°¡ Çì´õ ¹× Áö½Ã¹®À» »ç¿ëÇÏ¿© Ç¥ÁØ OSGi R4 ÇÁ·¹ÀÓ¿öÅ©ÀÇ ÀϺηΠÁöÁ¤µÇÁö ¾ÊÀº Eclipse OSGi ÇÁ·¹ÀÓ¿öÅ©ÀÇ ÀϺΠÃß°¡ ±â´ÉÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

Ãß°¡ Export-Package Áö½Ã¹®

Eclipse OSGi ÇÁ·¹ÀÓ¿öÅ©´Â Export-Package Çì´õ¿¡¼­ Ãß°¡ Áö½Ã¹®À» Áö¿øÇÕ´Ï´Ù. ÀÌ Áö½Ã¹®Àº ³»º¸³½ ÆÐŰÁöÀÇ ¾×¼¼½º Á¦ÇÑ»çÇ× ±ÔÄ¢À» ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ·±Å¸ÀÓ ½Ã ¾×¼¼½º Á¦ÇÑ»çÇ× ±ÔÄ¢À» ½ÃÇàÇϵµ·Ï Eclipse OSGi ÇÁ·¹ÀÓ¿öÅ©¸¦ ±¸¼ºÇÏ·Á¸é osgi.resolverMode¸¦ ÂüÁ¶ÇϽʽÿÀ.

x-internal Áö½Ã¹®

x-internal Áö½Ã¹®Àº ÆÐŰÁö°¡ ³»ºÎ ÆÐŰÁöÀÎÁö ¿©ºÎ¸¦ ÁöÁ¤Çϱâ À§ÇØ Export-Package Çì´õ¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Ç÷¯±×ÀÎ °³¹ß ȯ°æÀº ´Ù¸¥ ¹øµéÀÌ ³»ºÎ ÆÐŰÁö¸¦ »ç¿ëÇÏÁö ¸øÇϵµ·Ï ÇÕ´Ï´Ù. x-internal Áö½Ã¹®À» ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ±âº»°ªÀÎ 'false'°¡ »ç¿ëµË´Ï´Ù. x-internal Áö½Ã¹®Àº ´ÙÀ½ ±¸¹®À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

x-internal ::= ( 'true' | 'false' )

´ÙÀ½Àº x-internal Áö½Ã¹®ÀÇ ¿¹Á¦ÀÔ´Ï´Ù.

Export-Package: org.eclipse.foo.internal; x-internal:=true

x-friends Áö½Ã¹®

x-friends Áö½Ã¹®Àº ÆÐŰÁö¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Â ¹øµéÀÇ ¸ñ·ÏÀ» ÁöÁ¤Çϱâ À§ÇØ Export-Package Çì´õ¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Ç÷¯±×ÀÎ °³¹ß ȯ°æÀº ´Ù¸¥ ¹øµéÀÌ ÆÐŰÁö¸¦ »ç¿ëÇÏÁö ¸øÇϵµ·Ï ÇÕ´Ï´Ù. x-friends Áö½Ã¹®Àº ´ÙÀ½ ±¸¹®À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

x-friends ::= '"' ( target-bundle ) ( ',' target-bundle ) * '"'
target-bundle ::= a bundle symbolic name

´ÙÀ½Àº x-friends Áö½Ã¹®ÀÇ ¿¹Á¦ÀÔ´Ï´Ù.

Export-Package: org.eclipse.foo.formyfriends; x-friends:="org.eclipse.foo.friend1, org.eclipse.foo.friend2"

¿¹Á¦¿¡¼­´Â org.eclipse.foo.friend1 ¹× org.eclipse.foo.friend2 ¹øµé¸¸ org.eclipse.foo.formyfriends ÆÐŰÁö¸¦ »ç¿ëÇØ¾ß ÇÔÀ» ÁöÁ¤ÇÕ´Ï´Ù. x-internal ÆÐŰÁö´Â x-friends Áö½Ã¹®º¸´Ù ¿ì¼±ÇÕ´Ï´Ù. x-internal Áö½Ã¹®ÀÌ 'true'¸¦ ÁöÁ¤ÇÒ °æ¿ì Ç÷¯±×ÀÎ °³¹ß ȯ°æÀº ¸ðµç ¹øµéÀÌ ÀÏ¿øÀ¸·Î ÁöÁ¤µÈ °æ¿ì¿¡µµ ÆÐŰÁö¸¦ »ç¿ëÇÏÁö ¸øÇϵµ·Ï ÇÕ´Ï´Ù.

Eclipse-LazyStart Çì´õ

Eclipse-LazyStart Çì´õ´Â ¹øµé¿¡¼­ ù ¹øÂ° Ŭ·¡½º ¶Ç´Â ÀÚ¿ø¿¡ ¾×¼¼½ºÇϱâ Àü¿¡ ÀÚµ¿À¸·Î ÇØ´ç ¹øµéÀ» ½ÃÀÛÇØ¾ß ÇÏ´ÂÁö ¿©ºÎ¸¦ ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ÀÌ ±â´ÉÀ¸·Î Eclipse´Â óÀ½ ¹øµéÀÌ ÇÊ¿äÇÒ ¶§ ¹øµéÀ» ´À¸®°Ô Ȱ¼ºÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸ðµ¨À» »ç¿ëÇÒ °æ¿ì Eclipse´Â °¡´ÉÇÑ ÀûÀº Ȱ¼º ¹øµéÀ» ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. Eclipse-LazyStart Çì´õ´Â ´ÙÀ½ ±¸¹®À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

Eclipse-LazyStart ::= ( 'true' | 'false' ) ( ';' 'exceptions' '=' '"' exceptions-list '"' ) ?
exceptions-list ::= a comma ',' separated list of packages

'exceptions' ¼Ó¼ºÀº Ŭ·¡½º³ª ÀÚ¿øÀÌ ·ÎµåµÉ ¶§ ¹øµéÀÌ È°¼ºÈ­µÇÁö ¾Êµµ·Ï ÇØ¾ß ÇÏ´Â ÆÐŰÁöÀÇ ¸ñ·ÏÀ» ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ¹øµé Manifest¿¡ Eclipse-LazyStart Çì´õ¸¦ Á¤ÀÇÇÏÁö ¾ÊÀ¸¸é ±âº»°ªÀÎ 'false'°¡ »ç¿ëµË´Ï´Ù. ´ÙÀ½Àº Eclipse-LazyStart Çì´õÀÇ ¿¹Á¦ÀÔ´Ï´Ù.

Eclipse-LazyStart: true; exceptions="org.eclipse.foo1, org.eclipse.foo2"

¿¹Á¦´Â ¹øµéÀÌ 'org.eclipse.foo1' ¹× 'org.eclipse.foo2' ÆÐŰÁöÀÇ Å¬·¡½º ¹× ÀÚ¿øÀ» Á¦¿ÜÇϰí ÀÌ ¹øµé¿¡¼­ ·ÎµåµÇ´Â Ŭ·¡½º³ª ÀÚ¿ø¿¡ ´ëÇØ Ȱ¼ºµÇ¾î¾ß ÇÔÀ» ÁöÁ¤ÇÕ´Ï´Ù.

Eclipse 3.2¿¡¼­´Â Eclipse-AutoStart Çì´õ°¡ ±ÇÀåµÇÁö ¾Ê½À´Ï´Ù. ´ë½Å Eclipse-LazyStart Çì´õ¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

Eclipse-PlatformFilter Çì´õ

Eclipse-PlatformFilter´Â ¹øµé¿¡ ´ëÇÑ Ç÷§Æû ÇÊÅ͸¦ ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ¹øµéÀ» ºÐ¼®ÇÒ ¼ö ÀÖÀ¸·Á¸é ½ÇÇà ÁßÀÎ Ç÷§Æû¿¡¼­ Ç÷§Æû ÇÊÅͰ¡ true·Î Æò°¡µÇ¾î¾ß ÇÕ´Ï´Ù. Eclipse-PlatformFilter Çì´õ´Â ´ÙÀ½ ±¸¹®À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

Eclipse-PlatformFilter ::= a valid LDAP filter string

ÇÁ·¹ÀÓ¿öÅ©´Â ´ÙÀ½ ½Ã½ºÅÛ Æ¯¼º¿¡ ´ëÇÑ ÇÊÅ͸µÀ» Áö¿øÇÕ´Ï´Ù.

´ÙÀ½Àº Eclipse-PlatformFilter Çì´õÀÇ ¿¹Á¦ÀÔ´Ï´Ù.

Eclipse-PlatformFilter: (& (osgi.ws=win32) (osgi.os=win32) (osgi.arch=x86))

ÀÌ ¿¹Á¦´Â Ç÷§Æû Ư¼ºÀÌ osgi.ws=win32, osgi.os=win32 ¹× osgi.arch=x86ÀÏ °æ¿ì¿¡¸¸ ¹øµéÀ» ºÐ¼®ÇÒ ¼ö ÀÖÀ½À» ÁöÁ¤ÇÕ´Ï´Ù. Áï, x86 ¾ÆÅ°ÅØÃ³¿¡¼­ ½ÇÇà ÁßÀÎ Ç÷§ÆûÀº win32 ¿î¿µ üÁ¦¿Í win32 À©µµÀ® ½Ã½ºÅÛÀ» »ç¿ëÇÕ´Ï´Ù.

Eclipse-BuddyPolicy Çì´õ

Eclipse-BuddyPolicy Çì´õ´Â ¹øµéÀÇ ¹öµð Ŭ·¡½º ·Îµå Á¤Ã¥À» ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. Eclipse-BuddyPolicy Çì´õ´Â ´ÙÀ½ ±¸¹®À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

Eclipse-BuddyPolicy ::= ( policy-name ) ( ',' policy-name ) *
policy-name ::= ( 'dependent' | 'global' | 'registered' | 
                  'app' | 'ext' | 'boot' | 'parent' )

´ÙÀ½Àº Eclipse-BuddyPolicy Çì´õÀÇ ¿¹Á¦ÀÔ´Ï´Ù.

Eclipse-BuddyPolicy: dependent

Eclipse-RegisterBuddy Çì´õ

Eclipse-RegisterBuddy Çì´õ´Â ÇØ´ç ¹øµéÀÌ µî·ÏµÈ ¹öµðÀÎ ¹øµé ¸ñ·ÏÀ» ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. Eclipse-RegisterBuddy Çì´õ´Â ´ÙÀ½ ±¸¹®À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

Eclipse-RegisterBuddy ::= ( target-bundle ) ( ',' target-bundle ) *
target-bundle ::= a bundle symbolic name

´ÙÀ½Àº Eclipse-RegisterBuddy Çì´õÀÇ ¿¹Á¦ÀÔ´Ï´Ù.

Eclipse-RegisterBuddy: org.eclipse.foo.bundle1, org.eclipse.foo.bundle2

Eclipse-ExtensibleAPI Çì´õ

Eclipse-ExtensibleAPI´Â ´ÜÆí ¹øµéÀÌ Ãß°¡ API¸¦ È£½ºÆ®¿¡ Ãß°¡ÇÏ´Â °ÍÀ» È£½ºÆ® ¹øµéÀÌ Çã¿ëÇÏ´ÂÁö ¿©ºÎ¸¦ ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ÀÌ Çì´õ´Â ´ÜÆí ¹øµéÀÌ Ãß°¡ ÆÐŰÁö¸¦ È£½ºÆ® API¿¡ Ãß°¡ÇÏ´Â °ÍÀ» È£½ºÆ® ¹øµéÀÌ Çã¿ëÇÒ °æ¿ì¿¡ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ÀÌ Çì´õ¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ» °æ¿ì ±âº»°ª 'false'°¡ »ç¿ëµË´Ï´Ù. Eclipse-ExtensibleAPI Çì´õ´Â ´ÙÀ½ ±¸¹®À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

Eclipse-ExtensibleAPI ::= ( 'true' | 'false' )

´ÙÀ½Àº Eclipse-ExtensibleAPI Çì´õÀÇ ¿¹Á¦ÀÔ´Ï´Ù.

Eclipse-ExtensibleAPI: true

Eclipse-GenericCapabilty Çì´õ

Eclipse-GenericCapability Çì´õ´Â ¹øµéÀÇ ÀÏ¹Ý ±â´ÉÀ» ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ÀÏ¹Ý ±â´ÉÀº Eclipse-GenericRequire Çì´õ¸¦ »ç¿ëÇÏ´Â ½Ã½ºÅÛÀÇ ´Ù¸¥ ¹øµé¿¡¼­ ÇÊ¿äÇÑ ¹øµéÀÇ ±â´ÉÀ» ¼³¸íÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÏ¹Ý ±â´É¿¡´Â À̸§ ¹× ±â´É À¯ÇüÀÌ ºÎ¿©µË´Ï´Ù. ±â´É À¯ÇüÀº ÇØ´ç ±â´ÉÀ» Á¦°øÇÏ´Â ¹øµé¿¡ ÀÇÇØ Á¤Àǵ˴ϴÙ. ±â´ÉÀº ¶ÇÇÑ Eclipse-GenericRequire Çì´õ¸¦ ÇØ¼®ÇÒ ¶§ ÀÏÄ¡ ¿©ºÎ¸¦ È®ÀÎÇÏ´Â µ¥ »ç¿ëµÇ´Â µ¿ÀÏÇÑ À¯ÇüÀÇ ¼Ó¼º ¼¼Æ®¸¦ °¡Áú ¼ö ÀÖ½À´Ï´Ù. ÀÏÄ¡ÇÏ´Â ¼Ó¼ºÀÇ À¯ÇüÀº [string | version | uri | long | double | set] Áß ÇϳªÀÔ´Ï´Ù. ¼¼Æ® À¯ÇüÀº ¹®ÀÚ¿­ ¼¼Æ®¸¦ ½°Ç¥·Î ±¸ºÐµÈ ¹®ÀÚ¿­ ¸ñ·ÏÀ¸·Î Á¤ÀÇÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Eclipse-GenericCapability Çì´õ´Â ´ÙÀ½ ±¸¹®À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

  Eclipse-GenericCapability ::= capability ( ',' capability ) *
  capability                ::= typed-name ( ';' typed-name ) * 
                                ( ';' typed-param ) *
  typed-name                ::= name ( ':' capability-type )
  typed-param               ::= typed-key '=' quouted-string
  typed-key                 ::= name ( ':' 
                                [string | version | uri | long | double | set] )

´ÙÀ½Àº OSGi ¼­ºñ½º org.acme.stuff.SomeService ±¸ÇöÀÌ Æ÷ÇÔµÈ ¹øµéÀ» ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ´Â Eclipse-GenericCapabilty Çì´õÀÇ ¿¹Á¦ÀÔ´Ï´Ù.

  Eclipse-GenericCapability: 
   org.acme.stuff.SomeService:osgi.service; 
   version:version="1.0.1"

Eclipse-GenericRequire Çì´õ

Eclipse-GenericRequire Çì´õ´Â Eclipse-GenericCapability Çì´õ¸¦ »ç¿ëÇÏ´Â ´Ù¸¥ ¹øµéÀÌ Á¦°øÇÏ´Â ÀÏ¹Ý ±â´É¿¡ ´ëÇÑ ¿ä±¸»çÇ×À» ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ÀÏ¹Ý ¿ä±¸»çÇ׿¡´Â À̸§ ¹× ±â´É À¯ÇüÀÌ ºÎ¿©µË´Ï´Ù. ±â´É À¯ÇüÀº ÇØ´ç ±â´ÉÀ» Á¦°øÇÏ´Â ¹øµé¿¡ ÀÇÇØ Á¤Àǵ˴ϴÙ. ÀÏ¹Ý ¿ä±¸»çÇ×Àº ÀÏÄ¡ÇÏ´Â ÀÏ¹Ý ±â´ÉÀ» ÇØ¼®Çϱâ À§ÇØ ¼±Åà ÇÊÅÍ·Î »ç¿ëµÇ´Â LDAP ÇÊÅÍ ¹®ÀÚ¿­À» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. Eclipse-GenericRequire Çì´õ´Â ´ÙÀ½ ±¸¹®À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

  Eclipse-GenericRequire   ::= generic-require ( ',' generic-require ) *
  generic-require          ::= typed-name ( ';' typed-name ) *
                               ( ';' selection-filter '=' quoated-ldapFilter )
                               ( ';' optional '=' [true|false] )
                               ( ';' multiple '=' [true|false] )
  typed-name                ::= name ( ':' capability-type )

´ÙÀ½Àº OSGi ¼­ºñ½º org.acme.stuff.SomeService ±¸Çö¿¡ ÀÇÁ¸ÇÏ´Â ¹øµéÀ» ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ´Â Eclipse-GenericRequire Çì´õÀÇ ¿¹Á¦ÀÔ´Ï´Ù.

  Eclipse-GenericRequire: 
   org.acme.stuff.SomeService:osgi.service; 
   selection-filter="(version>=1.0.1)"

ÀÏ¹Ý º°¸í

osgi.genericAliases ¿É¼ÇÀº ±âÁ¸ OSGi Manifest Çì´õ¸¦ Eclipse-GenericCapability ¹× Eclipse-GenericRequire Manifest Çì´õ¿¡ ¸ÊÇÎÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ Manifest Çì´õ¸¦ °í·ÁÇϽʽÿÀ.

  Export-Service: org.acme.stuff.SomeService
  Import-Service: org.acme.stuff.SomeService

ÀÌ Çì´õ´Â ´ÙÀ½ Ư¼ºÀ» »ç¿ëÇÏ¿© Eclipse-GenericCapability ¹× Eclipse-GenericRequire Çì´õ¿¡ ¸ÊÇÎÇÒ ¼ö ÀÖ½À´Ï´Ù.

  osgi.genericAliases=Export-Service:Import-Service:osgi.service

ÀÌ Çì´õ´Â ¾Ï¹¬ÀûÀ¸·Î ´ÙÀ½ ÀÏ¹Ý Çì´õ·Î º¯È¯µË´Ï´Ù.

  Eclipse-GenericRequire: org.acme.stuff.SomeService:osgi.service
  Eclipse-GenericCapability: org.acme.stuff.SomeService:osgi.service

Plugin-Class Çì´õ

Plugin-Class Çì´õ´Â Eclipse 2.1 Ç÷§Æû¿ëÀ¸·Î °³¹ßµÈ Ç÷¯±×ÀÎÀ» Áö¿øÇÒ °æ¿ì¿¡¸¸ »ç¿ëµË´Ï´Ù. ÀÌ Çì´õ´Â ÀÌÀü Eclipse 2.1 Ȱ¼ºÈ­ ¸ðµ¨À» »ç¿ëÇÏ¿© Ç÷¯±×ÀÎÀ» Ȱ¼ºÈ­ÇÏ´Â µ¥ »ç¿ëÇÒ Å¬·¡½º À̸§À» ÁöÁ¤Çϱâ À§ÇØ »ç¿ëµË´Ï´Ù. Eclipse 3.0 ÀÌ»óÀ¸·Î °³¹ßµÈ »õ ¹øµéÀº ÀÌ Çì´õ¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ´ÙÀ½Àº Plugin-Class Çì´õÀÇ ¿¹Á¦ÀÔ´Ï´Ù.

Plugin-Class: org.eclipse.foo.FooPlugin