Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
»ùÓÚ OSGi µÄÃæÏò·þÎñµÄ×é¼þ±à³Ì
 
×÷Õߣº²ÜÓðÖÐ À´Ô´£ºIBM ·¢²¼ÓÚ 2015-12-28
  3130  次浏览      27
 

OSGi(Open Services Gateway Initiative,¿ª·Å·þÎñÍø¹ØÐ­Òé)ÌṩÁËÒ»¸öÃæÏò·þÎñ×é¼þµÄ±à³ÌÄ£ÐÍ£¬»ùÓÚ OSGi ±à³Ì£¬¾ßÓÐÄ£¿é»¯£¬±ê×¼»¯£¬ÃæÏò·þÎñ£¬¶¯Ì¬ÐÔ£¬Ò׸´Óã¬Ò×À©Õ¹£¬Òײ¿ÊðµÈÖî¶àÓŵ㣬±¾ÎĽéÉÜÁË»ùÓÚ OSGi ¿ª·¢Ò»¸öÓ¦ÓóÌÐòµÄ¹ý³Ì£¬¶ÁÕß¿ÉÒÔѧϰÈçºÎ»ùÓÚ OSGi ¿ª·¢×Ô¼ºµÄÓ¦Ó㬲¢´ÓÖÐÌå»á OSGi ÉÏÊöµÄÓŵ㡣

Ò». OSGi ¼òÊ·

OSGi ÊÇÓÉ 1999 Äê³ÉÁ¢µÄ OSGi ÁªÃËÌá³öµÄÒ»¸ö¿ª·ÅµÄ·þÎñ¹æ·¶£¬×î³õµÄÄ¿µÄÊÇΪǶÈëʽÉ豸£¬È·ÇеØËµÊÇΪ¿ÉÒÔͨ¹ýÍøÂç·ÃÎʵÄÉ豸Ìṩһ¸öͨÓõÄÈí¼þÔËÐÐÆ½Ì¨£¬ÆÁ±Î²»Í¬É豸֮¼äµÄÓ²¼þºÍ²Ù×÷ϵͳ²îÒ죬ʹÈí¼þ¿ÉÒÔ¶¯Ì¬µØ²¿ÊðºÍ¸üС£ºóÀ´ Eclipse ×é֯עÒâµ½ÁË OSGi µÄÓŵ㣬¾ö¶¨½« Eclipse3.0 ¼°ºóÐø°æ±¾µÄ²å¼þÌåϵ½á¹¹»ùÓÚ OSGi À´ÊµÏÖ£¬²¢×¨ÃųÉÁ¢ÁËÒ»¸ö×ÓÏîÄ¿ Equinox À´ÊµÏÖ OSGi R4 ¹æ·¶£¬°Ñ Equinox ×÷Ϊ Eclipse µÄµ×²ãÔËÐÐÆ½Ì¨¡£Eclipse ×éÖ¯µÄÕâÒ»¾ö¶¨´øÀ´ÁË˫ӮµÄ¾ÖÃæ£¬½ñÌìµÄ Eclipse ÓÉÓÚÆä³öÉ«µÄ¿ÉÀ©Õ¹µÄÌåϵ½á¹¹£¬ÒѾ­²»ÔÙÊÇÒ»¸öµ¥´¿µÄ Java IDE£¬¶øÊÇÒ»¸ö¿ª·ÅµÄ¿ª·¢Æ½Ì¨£¬Ò»¸öͨÓõĿÉÀ©Õ¹µÄÈí¼þ¿ò¼Ü£¬OSGi Ò²²»ÔÙ¾ÖÏÞÓÚǶÈëʽÁìÓò£¬¶øÊdzÉΪÁËÒ»¸öͨÓõĶ¯Ì¬×é¼þ¿ª·¢»·¾³£¬ÔÚ×ÀÃæ£¬·þÎñÆ÷¶ËµÈÁìÓòµÃµ½ÁË´óÁ¿Ó¦Óá£

¶ÔÄ£¿é»¯µÄÖ§³ÖÊÇ Java µÄÒ»¸öÖØÒªµÄ·¢Õ¹·½Ïò£¬Ä¿Ç° Java µÄÄ£¿é»¯±ê×¼»¹´æÔÚ×ÅJSR 277:Java Module Systems ºÍ JSR 291:Dynamic Component Support for Java Ö®ÕùÂÛ£¬ÆäÖÐJSR291 µÄÖ÷ҪĿµÄ¾ÍÒª½« OSGi ÒýÈëµ½ Java ±ê×¼ÖÐÈ¥£¬JSR277 ÔòÊÇ SUN ·¢ÆðµÄÒ»¸öJava Ä£¿é»¯±ê×¼¡£µ« OSGi ÊÂʵÉÏÒѾ­µÃµ½ÁËÐí¶à¹ú¼ÊIT´óÆóÒµµÄÖ§³Ö£¬²¢ÇÒÒѾ­ÓÐÐí¶àÉÌÒµÈí¼þ²úÆ·»ùÓÚ OSGi À´¿ª·¢£¬Èç IBM °üÀ¨ Websphere Application Server(WAS), Rational Software Architecture(RSA) ÔÚÄÚµÄÐí¶àÖØÁ¿¼¶Èí¼þ²úÆ·¾ùÒÑ»ùÓÚ OSGi À´ÊµÏÖ£¬ÖøÃûµÄ IoC ¿ò¼Ü Spring ÕýÔÚÕûºÏ OSGi ¼¼Êõ£¬ÏÖÔÚ»ùÓÚ Eclipse ¿ª·¢ RCP£¬²å¼þ³ÌÐòÒ²·Ç³£Á÷ÐУ¬¿ÉÒÔÔ¤¼û»ùÓÚOSGi µÄ Java Ó¦ÓóÌÐò½«»áÔ½À´Ô½¶à£¬Ò²½«»áÓÐÔ½À´Ô½¶àµÄÈí¼þ¿ª·¢×éÖ¯¸Ä±äÆäÈí¼þÉè¼ÆË¼ÏëºÍ¿ª·¢·½Ê½£¬Óµ±§ OSGi ²¢¿ªÊ¼ÏíÊÜ OSGi ´øÀ´µÄºÃ´¦¡£

¶þ. ʹÓà Eclipse ¿ª·¢ OSGi Ó¦ÓÃ

±¾ÎļÙÉè¶ÁÕßÒѾ­Á˽â OSGi ±à³ÌµÄ»ù±¾¸ÅÄîÒÔ¼°ÈçºÎÔÚ Eclipse »·¾³ÖÐÀ´¿ª·¢OSGi¡¡Bundle¡£Èç¹ûÄú»¹²»Á˽âÕâЩ֪ʶ£¬¿ÉÒÔÏÈÔĶÁÏà¹Ø×ÊÁÏÈ磺 http://www.eclipse.org/equinoxÍøÕ¾ÒÔ¼° developerworks ÍøÕ¾ÉϵÄÎÄÕ£º ÀûÓà Eclipse ¿ª·¢»ùÓÚ OSGi µÄ Bundle Ó¦ÓÃ
Eclipse ¿ª·¢Æ½Ì¨ÖжԻùÓÚ OSGi ¿ª·¢Ó¦ÓóÌÐòÒѾ­ÌṩÁ˽ÏΪÍêÉÆµÄÖ§³Ö£¬ÔÚ Eclipse ¼¯³É¿ª·¢»·¾³ÖпÉÒÔÇáËɵØÍê³É¶ÔÒ»¸ö»ò¶à¸ö bundle µÄ¿ª·¢¡¢µ÷ÊÔ¡¢²¿Êð¡¢²âÊԵȹ¤×÷¡£±¾ÎĽ«»ùÓÚ Equinox OSGi ¿ò¼Ü£¬Ê¹Óà Eclipse ¿ª·¢Æ½Ì¨À´¿ª·¢Ò»¸öʾÀýÐÔµÄϵͳ¹ÜÀí³ÌÐò£¬Ö÷ҪĿµÄÊǸø¶ÁÕßÑÝʾ»ùÓÚ OSGi ¿ª·¢Ò»¸öÓ¦ÓóÌÐòµÄ¹ý³Ì²¢ÈöÁÕßÌå»á»ùÓÚOSGi ±à³Ì´øÀ´µÄÄ£¿é»¯£¬¶¯Ì¬ÐÔ£¬À©Õ¹ÐÔµÈÓŵ㡣ΪÁ˱ãÓÚ¶ÁÕßÀí½â£¬±¾ÎĻᾡ¿ÉÄܵı£³Ö´úÂë¼òµ¥Ò×¶®£¬±¾ÎÄÖеĴúÂëÔÚ WindowsXP£¬Eclipse3.2£¬Sun JDK1.5 »·¾³Ï²âÊÔͨ¹ý¡£

Èý. ÐèÇó·ÖÎöÓëÄ£¿é»®·Ö

OSGi ´øÀ´Á˹淶»¯µÄÄ£¿é»®·Ö£¬µÍñîºÏµÄÄ£¿é¼ä¹ØÏµ£¬Í³Ò»µÄÄ£¿é¿ª·¢·½Ê½£¬¿É¶¯Ì¬²å°ÎµÄÄ£¿é¹ÜÀí»·¾³¡£¿ª·¢ OSGi Ó¦ÓóÌÐòµÄµÚÒ»²½ÊÇÔÚÐèÇó·ÖÎöµÄ»ù´¡ÉϽøÐо«ÐĵÄÄ£¿é»®·Ö£¬Ä£¿é»®·ÖµÄÔ­ÔòÊǾ¡Á¿±£³Öµ¥¸öÄ£¿éµÄ¶ÀÁ¢ÐÔ£¬Ê¹Ä£¿éÓëÄ£¿éÖ®¼äµÄñîºÏ½µµ½×îС£¬Ã¿Ò»¸öÄ£¿é±©Â¶¸øÆäËüÄ£¿éµÄÐÅÏ¢×îÉÙ£¬¾¡Á¿ÈÃÄ£¿éÖ®¼äʹÓà OSGi ¿ò¼ÜÌṩµÄ·þÎñ×¢²á»úÖÆÀ´Í¨ÐÅ¡£Ò»°ã¿É²ÉÓÃÒ»¸öÄ£¿éÒ»¸ö Bundle µÄ·½Ê½£¬²¢ÎªÃ¿Ò»¸ö Bundle ÔÚ Eclipse »·¾³Öн¨Á¢Ò»¸ö Project À´½øÐпª·¢£¬ÓÉÓÚÄ£¿éÓëÄ£¿éÖ®¼äµÄñîºÏºÜС£¬¸÷¸ö Bundle Ö®¼ä²¢²»»áÏó´«Í³µÄ¿ª·¢·½Ê½Öеĸ÷Ä£¿éÖ®¼äÄÇÑù´æÔÚ¾À²ø²»ÇåµÄ°üºÍÀàµÄÒýÓùØÏµ£¬Òò´Ë´ó²¿·ÖBundleµÄ¿ª·¢¹¤×÷¿ÉÒÔ²¢ÐнøÐжø²»»á»¥ÏàÓ°Ïì¡£

±¾ÎÄʵÏÖµÄϵͳ¹ÜÀí³ÌÐò£¬¿ÉÒÔÌṩһϵÁеÄϵͳ¹ÜÀí·þÎñÀ´¹ÜÀí¼ÆËã»úÄڵĸ÷ÀàÉ豸¡£Îª¼ò±ãÆð¼û£¬ÎÒÃÇÊ×ÏÈֻʵÏÖÒ»Ïî¹ÜÀí·þÎñ£ºMonitor£¬´ËÏî·þÎñ¿ÉÒÔ¼àÊÓ¼ÆËã»úÄÚ¸÷ÀàÉ豸µÄÔËÐÐ״̬£¬ÎÒÃÇ¿ÉÒÔ½«Õû¸öÈí¼þ»®·ÖΪÈçϵÄһЩBundle:

Services Bundle£ºÔÚOSGiÖУ¬·þÎñÊÇͨ¹ýJavaµÄ½Ó¿ÚÀ´¶¨ÒåµÄ£¬ÎÒÃÇ¿ÉÒ԰Ѷ¨Òå·þÎñµÄJava½Ó¿Ú¼¯ÖÐÒ»¸öServices BundleÖУ¬²¢ÓÉÕâ¸öBundleÏòÆäËüBundleÌṩ½Ó¿Ú¡£

·þÎñÌṩÕßBundle£ºÊµÏÖServices BundleÌṩµÄ½Ó¿Ú²¢ÏòOSGi¿ò¼Ü×¢²á·þÎñ¡£ÔÚ±¾ÀýÖУ¬ÎÒÃÇҪʵÏÖ¶Ô¸÷ÀàÉ豸µÄ¼àÊÓ£¬¶ÔÓÚÿһ¸öÐèÒª¼àÊÓµÄÉ豸£¬¾ù¿ÉÒÔʵÏÖÒ»¸öµ¥¶ÀµÄ·þÎñÌṩÕßBundleÀ´ÌṩÏàÓ¦µÄ¼àÊÓ¹¦ÄÜ¡£

·þÎñʹÓÃÕßBundle£ºÒýÓÃServices BundleÌṩµÄ½Ó¿ÚÏòOSGi¿ò¼ÜÇëÇóÏàÓ¦µÄ·þÎñ£¬±¾ÀýÖÐÖ÷ҪʵÏÖÒ»¸ö·þÎñʹÓÃÕßBundle£¬ËüÊÇÒ»¸ö¿ØÖÆÌ¨³ÌÐò£¬ÓÃÓÚÖ´ÐÐÏàÓ¦µÄϵͳ¹ÜÀí·þÎñ£¬²¢ÔÚ¿ØÖÆÌ¨ÖÐÏòÓû§ÏÔʾÏàÓ¦µÄϵͳ¹ÜÀíÐÅÏ¢¡£

Õû¸ö³ÌÐòÊÇÓÉOSGi¿ò¼ÜÒÔ¼°ÔËÐÐÓÚOSGi¿ò¼ÜÄÚµÄÒ»ÅúBundles×é³É£¬BundleÖ®¼äµÄЭ×÷¹ØÏµ¼ûÏÂͼ£º

³ÌÐòµÄ×ÜÌå¼Ü¹¹Í¼

ËÄ. ʵÏÖBundle

1. ʵÏÖServices Bundle

н¨Ò»¸öEclipse plugin-in project,½«ÆäÃüÃûΪcom.systemmanagement.services£¬×¢Òâ´´½¨OSGi Bundle¹¤³Ìʱ£¬Ò»¶¨ÒªÑ¡ÖС°an¡¡OSGi framework¡±×öΪ¹¤³ÌµÄÄ¿±êƽ̨,²¢Ñ¡ÔñEquinox»òstandard£¬ÕâÁ½¸öÑ¡ÏîµÄÇø±ðÊÇ£ºEquinox¶ÔOSGi ¹æ·¶µÚ4°æ½øÐÐÁËһЩÀ©Õ¹£¬Èç¹û¿ª·¢³öÀ´µÄBundleÏ£ÍûÄܹ»ÔÚÆäËüµÄOSGiʵÏÖ¿ò¼ÜÈçOscar£¬KnopflerfishÉÏ˳ÀûÔËÐУ¬´Ë´¦×îºÃÑ¡Ôñstandard¡£Õâ¸öBundleµÄʵÏֺܼòµ¥£¬ËüÎÞÐèʵÏÖBundleActivatorÀֻ࣬Ð趨ÒåÒ»¸ö½Ó¿Ú¼´¿É£º

´úÂëÇåµ¥1: MonitorService.java

package com.systemmanagement.services.monitor;

public interface MonitorService {
public String getMonitorMessage();
}

ͬʱÎðÍüÔÚ´ËBundleµÄMANIFEST.MFÎļþÖн«ÏàÓ¦µÄpackageµ¼³ö£º

´úÂëÇåµ¥2:MANIFEST.MF

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Services Plug-in
Bundle-SymbolicName: com.systemmanagement.services
Bundle-Version: 1.0.0
Bundle-Vendor: cyz
Bundle-Localization: plugin
Export-Package: com.systemmanagement.services.monitor

Èç¹û½«À´ÐèÒªÀ©³äеÄϵͳ¹ÜÀí·þÎñ£¬ÐèÔÚ´ËBundleÖÐÔö¼ÓеĽӿڲ¢½«ÆäËùÊôµÄpackageÔÚMANIFEST.MFÎļþÖе¼³ö¡£

2. ʵÏÖ·þÎñÌṩÕßBundle

н¨Ò»¸öEclipse plugin-in project,½«ÆäÃüÃûΪcom.systemmanagement.cpumonitor£¬´ËBundle¸ºÔð¼àÊÓCPU,ÌṩÏàÓ¦µÄ¼àÊÓÐÅÏ¢£¬ËüÐèҪʵÏÖservices bundleÌṩµÄMonitorService½Ó¿Ú£¬Í¬Ê±ËüÐèÒªÏòOSGi¿ò¼Ü×¢²á·þÎñ£¬Òò´ËÊ×ÏÈÐèÒªÔÚÆäMANIFEST.MFÎļþÖе¼ÈëÏàÓ¦µÄ°ü£º

´úÂëÇåµ¥3:MANIFEST.MF

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Cpumonitor Plug-in
Bundle-SymbolicName: com.systemmanagement.cpumonitor
Bundle-Version: 1.0.0
Bundle-Activator: com.systemmanagement.cpumonitor.CpuMonitorActivator
Bundle-Vendor: cyz
Bundle-Localization: plugin
Import-Package: com.systemmanagement.services.monitor, org.osgi.framework;version="1.3.0"

´ËBundleµÄʵÏÖÖ÷Òª°üÀ¨Á½²¿·Ö¹¤×÷£ºÒ»¸öʵÏÖMonitorServiceµÄÀ࣬ÓÃÓÚÌṩCPUµÄ¼àÊÓÐÅÏ¢(Èç´úÂëÇåµ¥4Ëùʾ)¡£Ò»¸öBundleActivatorÀàÓÃÓÚÔÚBundleÆô¶¯Ê±ÏòOSGi¿ò¼Ü×¢²á·þÎñ£¬ÔÚBundleֹͣʱ½«·þÎñ×¢Ïú(Èç´úÂëÇåµ¥5Ëùʾ)¡£

´úÂëÇåµ¥4:CpuMonitor.java

Package com.systemmanagement.cpumonitor.impl;
import com.systemmanagement.services.monitor.MonitorService;

public class CpuMonitor implements MonitorService {
public String getMonitorMessage() {
return "CPU--ζȣº40¶È£¬µçѹ:1.4v";
}
}

´úÂëÇåµ¥4½öΪÑÝʾ֮ÓÃ;£¬ÔÚÕæÕý¿ª·¢Ó¦ÓÃʱ£¬¿ÉÒÔÔÚ´Ë´¦ÊµÏÖÕæÊµµÄCPU¼àÊÓ¹¦ÄÜ£¬ÀýÈçÄã¿ÉÒÔʹÓÃJavaµÄJNI»úÖÆÀ´µ÷ÓÃһЩ²Ù×÷ϵͳµ×²ãµÄ»òµÚÈý·½µÄAPI»ñµÃÏà¹ØµÄCPUÐÅÏ¢£¬ÕâЩ¼¼ÊõÓë±¾ÎĵÄÖ÷ÌâOSGi¹ØÏµ²»´ó£¬ÔÚ´ËÂÔ¹ý¡£

´úÂëÇåµ¥5:CpuMonitorActivator.java

Package com.systemmanagement.cpumonitor;

import java.util.Hashtable;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
import com.systemmanagement.cpumonitor.impl.CpuMonitor;
import com.systemmanagement.services.monitor.MonitorService;

public class CpuMonitorActivator implements BundleActivator {
private BundleContext context=null;
private ServiceRegistration serviceRegistration=null;

public void start(BundleContext context) throws Exception {
this.context=context;
MonitorService monitor=new CpuMonitor();
Properties properties = new Properties();
properties.put("device", "cpu");
serviceRegistration=this.context.registerService(
MonitorService.class.getName(), monitor, properties);
}

public void stop(BundleContext context) throws Exception {
serviceRegistration.unregister();
context=null;
}
}

´úÂëÇåµ¥5ÖÐ×îÖØÒªµÄ¹¦ÄܾÍÊÇÏòOSGi¿ò¼Ü×¢²áÁËÒ»¸öMonitor·þÎñ£¬×¢²á·þÎñʱʹÓÃÁËÒ»¸öPropertiesÈÝÆ÷£¬ÈÝÆ÷ÖеÄkey-value¶Ô˵Ã÷Á˵±Ç°Õâ¸öMonitor·þÎñÕë¶ÔµÄÊÇCPU£¬ÀûÓÃÕâ¸öPropertiesÈÝÆ÷£¬·þÎñʹÓÃÕßBundle¾ÍÄܹ»ÅжÏÒ»¸öMonitor·þÎñËùÕë¶ÔµÄ¾ßÌåÉ豸ÊÇʲô¡£

Õë¶ÔÆäËüÐè¼àÊÓµÄÉ豸ÈçÄÚ´æ£¬Íø¿¨£¬µçÔ´£¬·çÉȵȣ¬ÎÒÃÇ¿ÉÒÔ·Ö±ðʵÏÖÒ»¸öBundleÀ´ÌṩÏàÓ¦µÄ¼àÊÓ·þÎñ£¬ÆäʵÏÖ¹ý³ÌÓëcom.systemmanagement.cpumonitorÕâ¸öBundleÊÇÍêÈ«ÀàËÆµÄ£¬Ôڴ˲»ÔÙ׸Êö¡£

3. ʵÏÖ·þÎñʹÓÃÕßBundle

н¨Ò»¸öEclipse plugin-in project,½«ÆäÃüÃûΪcom.systemmanagement.console£¬´ËBundleÊÇÒ»¸ö¿ØÖÆÌ¨³ÌÐò£¬Ëüͨ¹ýµ÷ÓÃÆäËü·þÎñÌṩÕßBundleÌṩµÄϵͳ¹ÜÀí·þÎñ£¬ÏòÓû§Ìṩϵͳ¹ÜÀíÐÅÏ¢¡£Í¬ÑùÊ×ÏÈÐèÒªÔÚÆäMANIFEST.MFÎļþÖе¼ÈëÏàÓ¦µÄ°ü£º

´úÂëÇåµ¥6Öе¼ÈëµÄ°üorg.osgi.util.trackerÊÇOSGi¿ò¼ÜÌṩµÄ¼àÊÓBundleÌṩµÄ·þÎñÊÇ·ñ¿ÉÓõĻúÖÆ£¬ÏÂÎĽ«»áÏêÊö¡£

´ËBundleµÄʵÏÖÖ÷Òª°üÀ¨Èý²¿·Ö¹¤×÷£ºÒ»¸öServiceTrackerÀ࣬ÓÃÓÚ¼àÊÓ·þÎñÌṩÕßBundle×¢²áµÄ¸÷Ààϵͳ¹ÜÀí·þÎñÊÇ·ñ¿ÉÓ㬲¢¸ù¾Ý·þÎñÊÇ·ñ¿ÉÓ㬲ÉÈ¡ÏàÓ¦µÄ¶¯×÷(Èç´úÂëÇåµ¥7Ëùʾ)¡£Ò»¸ö¿ØÖÆÌ¨Ïß³ÌÀ࣬ÓÃÓÚÖ´Ðи÷Ààϵͳ¹ÜÀí·þÎñ²¢ÏòÓû§ÌṩÏàÓ¦µÄÐÅÏ¢(Èç´úÂëÇåµ¥8Ëùʾ)¡£Ò»¸öBundleActivatorÀàÓÃÓÚÔÚBundleÆô¶¯Ê±Æô¶¯Service Tracker·þÎñ¼àÊÓϵͳ¹ÜÀí·þÎñÊÇ·ñ¿ÉÓã¬Æô¶¯¿ØÖÆÌ¨Ïß³ÌÀ࿪ʼִÐи÷Ààϵͳ¹ÜÀí·þÎñ²¢ÏÔʾÐÅÏ¢£¬ÔÚBundleֹͣʱֹͣService Tracker·þÎñºÍ¿ØÖÆÌ¨Ïß³ÌÀà¡£(Èç´úÂëÇåµ¥9Ëùʾ)¡£

´úÂëÇåµ¥7: MonitorServiceTracker.java

package com.systemmanagement.console;

import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.util.tracker.ServiceTrackerCustomizer;
import com.systemmanagement.services.monitor.MonitorService;

public class MonitorServiceTracker implements ServiceTrackerCustomizer {
private ConsoleThread thread;
private BundleContext bc;

public MonitorServiceTracker(BundleContext bc,ConsoleThread thread) {
this.thread = thread;
this.bc = bc;
}
public Object addingService(ServiceReference reference) {
MonitorService service = (MonitorService)bc.getService(reference);
thread.addService(service);
return service;
}
public void modifiedService(ServiceReference reference, Object serviceObject) {
MonitorService service = (MonitorService)bc.getService(reference);
thread.addService(service);
}
public void removedService(ServiceReference reference, Object serviceObject) {
MonitorService service = (MonitorService)bc.getService(reference);
thread.removeService(service);
}
}

×¢Ò⣬ÔÚ±¾ÎÄÖÐֻʵÏÖÁËMonitorÒ»Ïî·þÎñ£¬½«À´ÈçÐèÀ©³äµ½Ö§³Ö¶àÏîϵͳ¹ÜÀí·þÎñ£¬¿ÉÒÔΪÿһÏî»òijһÀà·þÎñ¸÷×ÔʵÏÖÒ»¸öServiceTrackerÀàÀ´¼àÊÓÏàÓ¦·þÎñµÄ¿ÉÓÃÐÔ¡£

´úÂëÇåµ¥8:ConsoleThread.java

package com.systemmanagement.console;

import java.util.HashSet;
import java.util.Iterator;
import com.systemmanagement.services.monitor.MonitorService;

public class ConsoleThread extends Thread {
private HashSet<MonitorService> monitorServices=
new HashSet<MonitorService>();
private boolean running = true;
public ConsoleThread(){};

public void addService(MonitorService service){
this.monitorServices.add(service);
}
public void removeService(MonitorService service){
this.monitorServices.remove(service);
}
public void run() {
while (running) {
for(Iterator<MonitorService> it=this.monitorServices.iterator();
it.hasNext();){
MonitorService service=it.next();
System.out.println(service.getMonitorMessage());
}
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
System.out.println("ManagementThread ERROR: " + e);
}
}
}
public void stopThread() {
this.running = false;
try {
this.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

´úÂëÇåµ¥8ÊÇÒ»¸ö¶àÏ̳߳ÌÐò£¬ÎªÑÝʾ֮¼ò±ã£¬ÔÚ´ËÀýÖÐËüÖ»ÊÇÓÃÒ»¸öHashSet³ÖÓе±Ç°¿ÉÓõÄϵͳ¹ÜÀí·þÎñ£¬²¢ÎÞÏÞÑ­»·£¬ÒÀ´ÎÖ´Ðи÷Ïîϵͳ¹ÜÀí·þÎñ¡£ÔÚʵ¼ÊÇé¿öÖУ¬ÍêÈ«¿ÉÒÔÓëÓû§½»»¥£¬¸ù¾ÝÓû§µÄÖ¸ÁîÀ´Ö´ÐÐÏàÓ¦µÄϵͳ¹ÜÀí·þÎñ¡£

´úÂëÇåµ¥9:ConsoleActivator.java

package com.systemmanagement.console;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.util.tracker.ServiceTracker;
import org.osgi.util.tracker.ServiceTrackerCustomizer;
import com.systemmanagement.services.monitor.MonitorService;

public class ConsoleActivator implements BundleActivator {

private BundleContext context = null;
private ServiceTracker tracker = null;
private ConsoleThread thread=new ConsoleThread();

public void start(BundleContext context) throws Exception {
this.context = context;
tracker = new ServiceTracker(context, MonitorService.class.getName(),
new MonitorServiceTracker(context,thread));
tracker.open();

this.thread.start();
}

public void stop(BundleContext context) throws Exception {
tracker.close();
this.thread.stopThread();
}
}

Î壮ÔËÐкͲâÊÔ»ùÓÚOSGiµÄÓ¦ÓóÌÐò

Ò»¸ö»ùÓÚOSGiµÄÓ¦ÓóÌÐòÊÇÓÉOSGi¿ò¼Ü±¾ÉíÒÔ¼°Èô¸É¸öBundle×é³É£¬ÎªÁË¶ÔÆä½øÐÐÔËÐкͲâÊÔ£¬Í¨³£ÐèÒª½«¸÷¸öBundle¡¡ProjectÒ»Ò»´ò°ü³ÉBundle(jarÎļþ)£¬²¢²¿Êðµ½Ò»¸öOSGi¿ò¼ÜÖУ¬»¹ÊDZȽÏÂé·³µÄ¡£ÐÒÔ˵ÄÊÇ£¬EclipseÒѾ­¶Ô´ËÌṩÁ˺ܺõÄÖ§³Ö£¬Eclipse±¾ÉíÊÇ»ùÓÚOSGi¿ò¼ÜEquinoxµÄ£¬ÔÚEclipse»·¾³ÖпÉÖ±½Ó½«¸÷Bundle²¿Êðµ½Equinox¿ò¼ÜÖв¢ÔËÐÐÖ®£¬¶Ô¿ª·¢ÕßÀ´ËµÊ®·Ö±ãÀû£¬Æä¾ßÌå²½ÖèÈçÏ£º

ÔÚEclipseÖÐÑ¡ÔñRun-->Run...²Ëµ¥£¬ÔÚµ¯³öµÄRunÅäÖÃÃæ°åµÄ×ó²àÑ¡ÖС°Equinox OSGi Framework¡±,È»ºóÔÙÑ¡ÔñÆäÉÏ·½µÄ¡°New¡±°´Å¥´´½¨Ò»¸öеÄÔËÐÐÅäÖ㬽«ÆäÃüÃûΪ¡°systemmanagement¡±£¬ÔÙÑ¡ÔñÓÒ²àµÄDeselect All°´Å¥£¬È»ºóֻѡÔñÎÒÃÇÏëÒªÔËÐеÄ4¸öBundles:°üÀ¨ÎÒÃÇÇ°Ãæ¿ª·¢µÄ3¸öBundleÒÔ¼°OSGi¿ò¼Ü±¾Éíorg.eclipse.osgi,ÆäÖл¹¿ÉÒÔÉèÖø÷¸öBundleµÄStart Level, Start Level¿ÉÓÃÓÚ¿ØÖƸ÷BundleµÄÆô¶¯Ë³Ðò£¬Start LevelµÍµÄBundle»áÓÅÏÈÆô¶¯£¬ÀýÈçÎÒÃÇ¿ÉÒÔ½«·þÎñÌṩÕßBundle cpumonitorµÄStart LevelÉèΪ1,¶ø½«·þÎñʹÓÃÕßBundle consoleµÄStart LevelÉèΪ2£¬ÈçÏÂͼËùʾ£º

BundleµÄÔËÐÐÅäÖÃ

ÔÚEclipse»·¾³ÖеÄÔËÐнá¹ûÈçÏÂͼ£¬ÔÚ¿ØÖÆÌ¨Öл᲻¶ÏµÄÏÔʾһЩϵͳ¹ÜÀíÐÅÏ¢£¬Í¬Ê±Ò²¿ÉÔÚ¿ØÖÆÌ¨ÖÐÔËÐи÷ÖÖOSGi¿ØÖÆÌ¨ÃüÁÈçssÃüÁî¿ÉÓÃÓÚÏÔʾ¸÷BundleµÄ״̬£¬¶ÁÕß¿ÉÒÔͨ¹ýhelpÃüÁîÁ˽â¸ü¶àµÄOSGi¿ØÖÆÌ¨ÃüÁî¡£

ÔÚEclipseÖеÄÔËÐнá¹û

ÎÒÃÇÒ²ÐèÒªÁ˽âÈçºÎÈÃÕâЩBundleÍÑÀëEclipse»·¾³À´ÔËÐУ¬Ê×ÏÈÐèÒª½«¸÷¸öBundle Project´ò°ü³ÉÒ»¸öBundle(¼´Ò»¸öjarÎļþ)£¬Æä²½ÖèÈçÏ£º

ÔÚEclipseÖ÷²Ëµ¥ÖÐÑ¡File->Export,ÔÙÔÚµ¯³ö´°¿ÚÖÐÑ¡ÔñDeployable plug-ins and fragments,ÔÙÑ¡ÏÂÒ»²½£¬ÔÚµ¯³ö´°¿ÚÖÐÑ¡ÔñÎÒÃÇÉÏÃæ¿ª·¢µÄÈý¸öBundle project,²¢Ö¸¶¨BundleµÄÊä³öĿ¼£¬µãFinish¼´¿É£¬ÈçÏÂͼËùʾ£º

µ¼³öBundle

È»ºó¿ÉÒÔÔÚe:\system_management\pluginsĿ¼ÏÂÕÒµ½Èý¸öjarÎļþ£¬ÏÖÔÚÎÒÃÇÐèÒªÒ»¸öOSGi¿ò¼ÜÀ´ÔËÐÐËüÃÇ¡£EquinoxÊÇĿǰ×îÁ÷ÐеÄOSGi¿ò¼Ü£¬Equinox±¾ÉíÒ²±»´ò°ü³ÉÒ»¸öBundle,ÔÚEclipse°²×°Ä¿Â¼µÄpluginsĿ¼Ï¼´¿ÉÕÒµ½Ëü£¬Èçorg.eclipse.osgi_3.2.0.v20060601.jar£¬½«Õâ¸öÎļþ¿½µ½e:\system_managementĿ¼Ï¡£ÔÚÃüÁîÌáʾ·ûϽøÈëe:\system_managementĿ¼Ï£¬ÔËÐÐÈçÏÂÃüÁîÆô¶¯Equinox:

java ¨Cjar org.eclipse.osgi_3.2.0.v20060601.jar ¨Cconsole

Æô¶¯Ö®ºó»á³öÏÖÒ»¸öOSGi¿ØÖÆÌ¨£¬²¢ÇÒÒѾ­Æô¶¯Ò»¸ösystem bundle,Õâ¸öbundle¾ÍÊÇOSGi¿ò¼Ü±¾Éí¡£ÏÖÔÚÎÒÃÇ¿ÉÒÔÔÚOSGi¿ØÖÆÌ¨ÖÐÊÖ¹¤°²×°ÎÒÃÇ¿ª·¢µÄÈý¸öBundle,ÈçÏÂͼËùʾ£º

°²×°Bundle

Ëæºó£¬¿ÉÒÔÒÀ´ÎÆô¶¯Èý¸öBundle,ÕâÑùÕû¸öÓ¦ÓþÍÔËÐÐÆðÀ´ÁË£¬ÈçÏÂͼËùʾ£º

ÔËÐÐBundle

Çë±£ÁôÕâ¸öOSGi¿ØÖÆÌ¨²¢ÈÃÓ¦ÓüÌÐøÔËÐУ¬½ÓÏÂÀ´ÎÒÃÇ»¹»áÔÚÕâ¸ö¿ØÖÆÌ¨ÖнøÐÐһЩ²Ù×÷À´ÌåÑéOSGiµÄ¶¯Ì¬ÐÔ¡£

Áù. ÌåÑéOSGiµÄ¶¯Ì¬ÐÔ

³ýÁËÄ£¿é»¯ÒÔ¼°ÃæÏò·þÎñ±à³ÌÖ®Í⣬OSGiµÄÁíÒ»¸öÖØÒªÌØµãÊÇÆä¶¯Ì¬ÐÔ£¬BundleÒÔ¼°BundleÌṩµÄ·þÎñ¿ÉÒÔËæÊ±Ïûʧ»òÕßÖØÐ¼ÓÈ룬¶øÆäËüʹÓ÷þÎñµÄBundle¿ÉÒÔ¸ÐÖª·þÎñÊÇ·ñ¿ÉÓ㬲¢¶¯Ì¬µØ¸Ä±ä×Ô¼ºµÄÐÐΪ¡£Ó¦ÓóÌÐòÔÚÔËÐйý³ÌÖУ¬¿ÉÒÔËæÊ±Ôö¼ÓеÄBundle,Í£Ö¹»òÐ¶ÔØÒÑÓеÄBundle,Èç¹ûÓÐеķþÎñ¼ÓÈë½øÀ´£¬Õâ¸ö·þÎñÒ²ÄÜÁ¢¼´±»ÆäËüBundleʹÓò¢Óɴ˶¯Ì¬µØ¸Ä±äÕû¸öÓ¦ÓóÌÐòµÄÐÐΪ,ÔÚÕû¸ö¶¯Ì¬¸Ä±äµÄ¹ý³ÌÖУ¬OSGi¿ò¼Ü±¾ÉíÊÇÎȶ¨µÄ£¬ÎÞÐèÖØÆô¡£ÒÔÏÂÎÒÃǽ«Í¨¹ýһЩʾÀýÀ´ÌåÑéOSGiµÄ¶¯Ì¬ÐÔ£º

ÎÒÃÇÏÖÔÚÏë¸øÓ¦ÓÃÔö¼ÓÒ»¸ö¼àÊÓÄÚ´æÔËÐÐ״̬µÄ¹¦ÄÜ£¬Ð½¨Ò»¸öEclipse plugin-in project,½«ÆäÃüÃûΪcom.systemmanagement.memorymonitor,Õâ¸öBundleµÄʵÏÖ¹ý³ÌÓëcom.systemmanagement.cpumonitor»ù±¾ÀàËÆ£¬×îÖ÷ÒªµÄ²»Í¬ÊÇʵÏÖMonitorService·þÎñµÄÄǸöÀ࣬ÈçÒÔÏ´úÂëËùʾ£¬ÆäËü´úÂë¿É²Î¼û±¾ÎÄËù¸½µÄ´úÂëÇåµ¥¡£

´úÂëÇåµ¥10:MemoryMonitor.java

package com.systemmanagement.memorymonitor.impl;
import com.systemmanagement.services.monitor.MonitorService;

public class MemoryMonitor implements MonitorService {
public String getMonitorMessage() {
return "ÄÚ´æ--ÎïÀíÄÚ´æ×ÜÊý£º1G£¬¿ÉÓÃÊý£º300M";
}
}

ͬÑù£¬½«Õâ¸öBundle export³ÉÒ»¸öjarÎļþµ½e:\system_management\pluginsĿ¼Ï£¬°²×°ÒÔ¼°Æô¶¯Õâ¸öBundle,ÕâʱÎÒÃÇ·¢ÏÖÊä³öµÄϵͳ¹ÜÀíÐÅÏ¢ÂíÉϸıäÁË£¬ÈçÏÂͼËùʾ£º

°²×°ÒÔ¼°Æô¶¯Ò»¸öеÄBundle

ÔÙ¼Ù¶¨ÎÒÃÇÐèÒªÔöÇ¿com.systemmanagement.cpumonitorÕâ¸öBundleµÄ¹¦ÄÜ£¬ÈÃÆäÌṩ¸ü¶àµÄCPUÐÅÏ¢£¬ÎÒÃÇ¿ÉÒÔÐÞ¸ÄÆäÖеÄCpuMonitor.javaÀ࣬ÈçÏÂËùʾ£º

´úÂëÇåµ¥11:CpuMonitor.java

package com.systemmanagement.cpumonitor.impl;
import com.systemmanagement.services.monitor.MonitorService;

public class CpuMonitor implements MonitorService {
public String getMonitorMessage() {
return "CPU--ζȣº40¶È£¬µçѹ:1.4v£¬CPUÕ¼ÓÃÂÊ:20%";
}
}

ÔÙ½«Õâ¸öBundle export³ÉÒ»¸öjarÎļþ£¬·Åµ½e:\system_management\pluginsĿ¼ÏÂ,²¢ÔÚOSGi¿ØÖÆÌ¨ÖÐʹÓÃupdateÃüÁî¸üÐÂÕâ¸öBundle,ÎÒÃÇ·¢ÏÖÊä³öµÄCPU¼àÊÓÐÅÏ¢ÂíÉϸıäÁË£¬ÈçÏÂͼËùʾ£º

¸üÐÂBundle

¶ÁÕß»¹¿ÉÒÔÔÚOSGi¿ØÖÆÌ¨Öг¢ÊÔʹÓÃstart,stopµÈÃüÁîÆô¶¯ºÍֹͣһЩBundle£¬¹Û²ìÊä³öÐÅÏ¢µÄ¸Ä±ä£¬ÓÉ´ËÀ´ÌåÑéÒ»ÏÂOSGiµÄ¶¯Ì¬ÐÔ¡£

ÓÉÓÚ»ùÓÚOSGiµÄÓ¦ÓóÌÐò¾ßÓи߶ȵÄÄ£¿é»¯ºÍ¶¯Ì¬ÐÔµÄÌØµã£¬Ê¹µÃÒª¶ÔÆä½øÐÐÀ©Õ¹Ò²±äµÃ·Ç³£µÄ·½±ã:Ò»°ãÀ´Ëµ£¬À©Õ¹¾ÍÊÇÔö¼ÓеÄBundle,¶ÔÆäËüBundle»ù±¾ÎÞÓ°Ï죬ÈçÉÏÃæµÄÀý×ÓËùʾ£¬ÎÒÃǺܷ½±ãµØÎªÓ¦ÓóÌÐòÔö¼ÓÁËÐµĹ¦ÄÜ£¬¸üÐÂÁËËüÒÑÓеŦÄÜ£¬¶øÕû¸öÓ¦ÓóÌÐòÉõÖÁ¶¼²»ÐèÒªÖØÆô¡£Equinoxͬʱ»¹½èÓÃÁËEclipseÖеÄÀ©Õ¹µãµÄ»úÖÆ£¬ÀûÓÃÀ©Õ¹µã£¬¿ÉÒÔ·½±ãµÄΪÒÑÓеÄBundleÀ©Õ¹¹¦ÄÜ£¬µ«À©Õ¹µãÕâÒ»Ì×»úÖÆÄ¿Ç°»¹²»ÊÇOSGi¹æ·¶Öж¨ÒåµÄÌØÐÔ£¬½öÊÇEquinoxÕâһʵÏÖÆ½Ì¨À©Õ¹³öÀ´µÄ¹¦ÄÜ£¬Ê¹ÓÃÁËÀ©Õ¹µãµÄBundle½«ÓпÉÄܲ»ÄÜÔÚÆäËüµÄOSGiʵÏÖ¿ò¼ÜÖÐÕý³£ÔËÐУ¬ÕâÐèÒª¿ª·¢ÕßȨºâÑ¡Ôñ¡£

Æß£®·¢²¼Ó¦ÓóÌÐò

ÔÚÉÏÒ»½ÚÖÐÎÒÃÇÔÚOSGi¿ØÖÆÌ¨ÖÐÔËÐÐÎÒÃǵÄϵͳ¹ÜÀí³ÌÐò£¬ÆäÖл¹ÐèÒªÊÖ¹¤install, start¸÷¸öBundle,ÏÔÈ»ÕâºÜÂé·³£¬²»Ì«ÏóÒ»¸öÕæÕýµÄÓ¦ÓóÌÐò£¬±¾½Ú½«½éÉÜÈçºÎ¹¹Ôì³öÒ»¸öÍêÕûµÄ»ùÓÚOSGiµÄÓ¦ÓóÌÐò¡£

Ê×ÏÈ£¬EquinoxÌṩÁËÔÚÆô¶¯¿ò¼Üʱ×Ô¶¯°²×°BundleÒÔ¼°Æô¶¯BundleµÄ¹¦ÄÜ£¬ÕâÊÇͨ¹ý¶¨Òåconfig.iniÎļþÀ´ÊµÏֵģ¬Ó¦ÓóÌÐòµÄĿ¼½á¹¹ÈçÏ£º

E:\SYSMGT_APP1
©¦ run.bat
©¦ org.eclipse.osgi_3.2.0.v20060601.jar
©À©¤configuration
©¦ config.ini
©¸©¤plugins
com.systemmanagement.console_1.0.0.jar
com.systemmanagement.cpumonitor_1.0.0.jar
com.systemmanagement.services_1.0.0.jar

config.iniÎļþµÄÄÚÈÝÈçÏ£º

osgi.bundles=plugins/com.systemmanagement.cpumonitor_1.0.0.jar@1:start, 
plugins/com.systemmanagement.console_1.0.0.jar@2:start,
plugins/com.systemmanagement.services_1.0.0.jar

ÆäÖеÄ@1,@2ÓÃÓÚÖ¸¶¨BundleµÄStart Level, start±íʾµ±OSGi¿ò¼ÜÆô¶¯ºó¼´×Ô¶¯Æô¶¯´ËBundle¡£¶ørun.batÊÇÒ»¸öÅú´¦Àí³ÌÐò£¬ÆäÄÚÈÝÈçÏ£º

java ¨Cjar org.eclipse.osgi_3.2.0.v20060601.jar  -console

ÏÖÔÚÖ»ÐèÔËÐÐrun.bat¼´¿ÉÔËÐÐÎÒÃǵÄϵͳ¹ÜÀíÓ¦ÓóÌÐòÁË¡£

EclipseÖл¹ÌṩÁËÁ½¸öBundle, org.eclipse.equinox.commonºÍorg.eclipse.update.configurator£¬¿ÉÓÃÓÚ×Ô¶¯·¢ÏֺͰ²×°Ö¸¶¨Ä¿Â¼ÏÂÐÂÔö¼ÓµÄBundle¡£ ÎÒÃÇͬÑù¿ÉÒÔÔÚEclipseµÄpluginsĿ¼ÖÐÕÒµ½ÕâÁ½¸öBundle²¢½«ËüÃÇ¿½µ½E:\SYSMGT_APP1\pluginsĿ¼Ï£¬²¢ÐÞ¸Äconfig.iniÎļþµÄÄÚÈÝÈçÏÂËùʾ£º

osgi.bundles=plugins/org.eclipse.equinox.common_3.2.0.v20060603.jar@1:start,
plugins/org.eclipse.update.configurator_3.2.0.v20060605.jar@2:start,
plugins/com.systemmanagement.cpumonitor_1.0.0.jar@2:start,
plugins/com.systemmanagement.console_1.0.0.jar@3:start

ÕâÑù£¬µ±org.eclipse.update.configurator BundleÆô¶¯Ê±£¬Ëü»áÈ¥×Ô¶¯·¢ÏֺͰ²×°pluginsĿ¼ÐÂÔöµÄBundle£¬µ«Ðè×¢Ò⣬ Ëü²¢²»ÄÜ×Ô¶¯Æô¶¯ÕâЩBundle£¬OSGiЭÒéĿǰҲûÓÐÌṩÕâÑùµÄ±ê×¼·þÎñÀ´×Ô¶¯°²×°£¬¹ÜÀíºÍÆô¶¯Bundle£¬ ÎÒÃÇ¿ÉÒÔʹÓÃÈçϵÄһЩ½â¾ö·½°¸À´¸üºÃµØ¹ÜÀíºÍ·Ö·¢Bundle:

ÀûÓÃEclipseµÄUpdate Manager£ºEclipse Update ManagerÌṩÁËÒ»ÅúAPIÓÃÓÚ¹ÜÀí£¬ÏÂÔØ£¬Éý¼¶£¬°²×°Feature£¬Ò»¸öFeatureÊÇÒ»ÅúBundleµÄ¼¯ºÏ, ÊÇÏÂÔØºÍ°²×°µÄ×îСµ¥Î»¡£µ«FeatureÊÇEclipse¶¨ÒåµÄ£¬²»ÊÇOSGiЭÒéÖж¨ÒåµÄÌØÐÔ¡£

ʹÓÃFileInstall Bundle,Õâ¸öBundle¿ÉÒÔ¼àÊÓijһ¸öĿ¼£¬Èç¹ûÕâ¸öĿ¼ÖÐÐÂÔö¼ÓÁËBundle,Ëü»á×Ô¶¯½«Æäinstall,Èç¹ûÓÐBundle±»¸üÐÂÁË£¬ Ëü»á×Ô¶¯½«Æäupdate£¬Èç¹ûÓÐBundle´Ó´ËĿ¼±»ÒÆ×ߣ¬Ëü»á×Ô¶¯½«Æäuninstall¡£¿Éµ½ http://www.aqute.biz/Code/FileInstallÏÂÔØÕâ¸öBundle£¬Ëü¿ÉÒÔÔËÐÐÓÚÈκÎOSGi¿ò¼ÜÖС£

ÔÚEquinox·õ»¯Æ÷(incubator)ÖÐÓÐÒ»¸öorg.eclipse.equinox.simpleconfigurator£¬¿ÉÓÃÓÚ¹ÜÀíºÍ¿ØÖÆÒѰ²×°µÄBundle, °üÀ¨ÉèÖÃÆô¶¯¼¶±ð²¢×Ô¶¯Æô¶¯ËüÃÇ¡£¿É·ÃÎÊhttp://www.eclipse.org/equinox/incubator²¢µ½ÆäCVS¿âÖÐÏÂÔØ

°Ë. С½á

±¾ÎĽéÉÜÁË»ùÓÚOSGi¿ª·¢Ò»¸öÓ¦ÓóÌÐòµÄÍêÕûÁ÷³Ì£¬°üÀ¨Ä£¿é»®·Ö£¬BundleµÄÉè¼ÆÓ뿪·¢£¬²¿ÊðÓë²âÊÔ£¬·¢²¼Ó¦ÓóÌÐòµÈ£¬²¢ÑÝʾÁË»ùÓÚOSGi±à³ÌËù¾ßÓеÄÄ£¿é»¯£¬ÃæÏò·þÎñ£¬¶¯Ì¬ÐÔ£¬Ò×À©Õ¹µÈÓŵ㡣»ùÓÚ×é¼þ»ò¹¹¼þ±à³ÌÊÇѧÊõ½çÌáÁ˶àÄêµÄ˼Ï룬±ÊÕßÈÏΪOSGiÊÇÒ»¸ö±È½Ï³¹µ×µØÌåÏÖÕâÖÖ˼ÏëµÄ±à³ÌÄ£ÐÍ£¬»ùÓÚOSGi±à³Ì½«´øÀ´Èí¼þÉè¼ÆÒÔ¼°¿ª·¢·½Ê½µÄ¸Ä±ä²¢ÓÉ´Ë´øÀ´Èí¼þÉú²úЧÂʵļ«´óÌáÉý¡£

   
3130 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

¶àά·½·¨À´¿ª·¢ÓлúµÄÒµÎñÁ÷³Ì¼Ü¹¹
SCA Ó¦ÓóÌÐò¿ª·¢
BPM ºÍ SOA ÐÔÄÜ×î¼Ñʵ¼ù
ʵÏÖÆóÒµ·þÎñ×ÜÏßģʽ
Ïà¹ØÎĵµ

SCA½éÉܼ°Ó¦ÓÃʵÀý
»ùÓÚSOA¼Ü¹¹µÄESBƽ̨£ºInfomagic
SCA¼Ü¹¹
SOAµÄ»ù±¾¸ÅÄî
Ïà¹Ø¿Î³Ì

ÃæÏòÓ¦Óõļܹ¹Éè¼ÆÊµ¼ù
µ¥Ôª²âÊÔ+ÖØ¹¹+Éè¼ÆÄ£Ê½
Èí¼þ¼Ü¹¹Ê¦¡ª¸ß¼¶Êµ¼ù
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

»ùÓÚSOAµÄ¹¤×÷Á÷£¨WF£©ÕûºÏ
SOA 100ÎÊ - ÎÊÓë´ð
SOAP Ó¦ÓÃģʽ:´¦ÀíÓëÐÔÄÜ
ESB¼Ü¹¹Ö®Æóҵʵʩ°¸Àý
»ùÓÚSOA¼Ü¹¹µÄÆóÒµ¼¯³Éϵͳ
»ùÓÚSOAµÄÌåϵ¼Ü¹¹Éè¼Æ


ÃæÏòÓ¦Óõļܹ¹Éè¼ÆÊµ¼ù
µ¥Ôª²âÊÔ+ÖØ¹¹+Éè¼ÆÄ£Ê½
Èí¼þ¼Ü¹¹Ê¦¡ª¸ß¼¶Êµ¼ù
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ¡ª¸ß¼¶Êµ¼ù
SOAÌåϵ½á¹¹Êµ¼ù


ijµÚÈý·½µç×ÓÖ§¸¶ÆóÒµ SOA¼Ü¹¹Éè¼Æ
ijµç×ÓÆóÒµ SOAÓ¦ÓÃ
ÖйúÒÆ¶¯ SOAÅàѵ
±±¾©´óѧ SOA¼Ü¹¹Éè¼ÆÊµ¼ù
ÓѰÏÕ SOA¼Ü¹¹Éè¼Æ
ÉϺ£ SOA¼Ü¹¹Êµ¼ù
ɽ¶«Òƶ¯Í¨ÐÅ SOAÌåϵ½á¹¹Êµ¼ù