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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
OSGiÄ£¿é»¯¿ò¼ÜÏê½â
 
×÷Õßêdzƣº¼Ü¹¹Ê¦Ö®µß
  2275  次浏览      29
 2021-3-23
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½éÉÜOSGiÊÊÓó¡¾°,JavaÄ£¿é»¯µÄһЩÄѵãºÍÒ»Ð©ÖØÒª¸ÅÄBundle£¬,Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚËѺüÍø£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼­¡¢ÍƼö¡£

OSGiÄ£¿é»¯¿ò¼ÜÊǺÜÔç¾Í³öÀ´µÄÒ»¸ö²å¼þ»¯¿ò¼Ü£¬×îÔçEclipseÓÃËü¶ø³öÃû£¬µ«ÕâЩÄêҲûÓдóÈÈËäÈ»OSGiÒѾ­·¢²¼ÁË °æ±¾1µ½°æ±¾5¡£ÏÖÔÚÓõÄ×î¶àµÄ£¬Ò²ÊDZ¾ÎĽ²Êö»ùÓÚµÄÊÇEquinoxµÄOSGiʵÏÖ£¬Í¬Ê±Ò²ÊÇEclipseºËÐÄ£¬Spring Dynamic ModuleÒ²ÊÇ»ùÓÚEquinox¡£OSGi¿ò¼ÜΪjavaϵͳÌṩÁËÒ»¸öͨÓõÄÈÝÆ÷£¬¸ÃϵͳÖÐµÄ bundle£¬ÎÞÐèֹͣϵͳ£¬¼´¿ÉʵÏÖ bundle µÄ°²×°¡¢Ð¶ÔØ¡£OSGiÊÇJavaÖÐĿǰΨһµÄÒ»¸öÄ£¿é»¯¡¢¶¯Ì¬»¯µÄ¹æ·¶¡£ÔÚÄ£¿é»¯·½ÃæOSGiÁªÃËÒѾ­Ñо¿Á˺ܶàÄêÁË£¬Òò´ËOSGi¹æ·¶¶ÔÓÚÄ£¿éµÄÎïÀí¸ôÀ롢ģ¿éµÄ½»»¥¡¢¶à°æ±¾ÕâЩ·½Ãæ¶¼ÓÐÁ˷dz£ÍêÉÆµÄ»úÖÆ£¬²¢ÇÒÒ²µÃµ½ÁËÏÖÔÚ¼¸ºõËùÓеÄApp Server³§ÉÌ»ò¿ªÔ´ÉçÇøµÄÈϿɣ¬µ«ÖÁ½ñûÓб»JAVAÄÉÈëÓïÑÔ¼¶£¨Óдý¹Û²ì£©¡£OSGiµÄÍ»³öÌØµãÓУº

¿ÉÒÔ¶¯Ì¬¼ÓÔØ¡¢¸üкÍÐ¶ÔØÄ£¿é¶ø²»ÓÃÍ£Ö¹·þÎñ

ʵÏÖϵͳµÄÄ£¿é»¯¡¢°æ±¾»¯£¬ÔÊÐí¶à°æ±¾bunduleͬʱ·þÎñ

Service modelÔÊÐíÄ£¿é/²å¼þÏ໥ÒÀÀµµ«ËÉñîºÏ£¬·ÖÏí·þÎñ¸ü¼òµ¥

OSGiÔËÐÐÔÚJVMÖ®ÉÏ£¬Æä¼Ü¹¹Í¼ÈçÏÂͼËùʾ£º

OSGiÊÊÓó¡¾°

ºÜ¶àÈË´íÎóµÄʹÓÃÁËOSGi, Ì×ÓÃÁËOSGi¼Ü¹¹°Ñϵͳ¸´ÔÓ»¯¡£ÔÚÎÒ¿´À´£¬OSGiµÄÓô¦ÔÚÓÚ¡°Ä£¿é»¯¡±ºÍ¡°ÈȲå°Î¡±¡£Ä£¿é»¯°üÀ¨Ä£¿é»¯¡¢°æ±¾»¯ºÍÃæÏò·þÎñµÄÉè¼Æ¡£ÈȲå°ÎÒ²¾ÍÊÇ˵ģ¿é/bundleµÄÈȲå°Î£¬Ëü¿ÉÒÔʵÏÖ¸üкÍÉý¼¶Ä£¿é/bundle£¨¼´ÏµÍ³µÄÒ»²¿·Ö£©¶øÎÞÐèÖØÆôÕû¸öϵͳ¡£

Èç¹ûÄãµÄϵͳÌ×ÓÃÁËOSGi¼Ü¹¹£¬bundleµÄÏ໥ÒÀÀµ¹ØÏµ¸´ÔÓ£¬ÓÖûÓÐbundle¶¯Ì¬¼ÓÔØ¡¢¶¯Ì¬¸üС¢¶¯Ì¬Ð¶ÔغͶ¯Ì¬¼àÌýµÄ»úÖÆ£¬¶¼ÊǾ²Ì¬Æô¶¯ËùÓÐbundle£¬ÄǾÍÊÇΪÁËOSGi¼Ü¹¹¶øOSGi¼Ü¹¹£¬°ÑÎÊÌ⸴ÔÓ»¯ÁË¡£Æä´ú¼ÛÒ²ÊǺܴóµÄ£¬ÒòΪԭÀ´ÄãµÄjar°üÓÃmavenÀ´´¦ÀíÒÀÀµ¹ØÏµºÍ×Ô¶¯¸üÐÂÒ²ºÜ·½±ã£¬¶øÓÉÓÚÕû¸öϵͳ½¨Á¢ÔÚOSGi¹æ·¶ÉÏ£¬ÄãµÄÓ¦ÓÃËùÒÀÀµµÄÆäËû×é¼þÒ²¡°²»µÃ²»¡±Ç¨ÒƵ½OSGIÉÏÀ´£¬ÔÙ¼ÓÉÏOSGI¶ÀÌØµÄClassLoaderÉè¼Æ£¬Ê¹bundle¼äµÄÀ໥Ïà·ÃÎÊÊܵ½Ò»¶¨µÄÔ¼Êø£¬Ò»Çж¼ÐèÒªÇ¨ÒÆµ½OSGiµÄÔ¼ÊøÉÏÀ´¡£

¾Ù¸öÀý×ÓÀ´Ëµ£¬¾ÍÏñEclipseÌṩÁ˶¯Ì¬¼ÓÔØ¡¢¸üкÍɾ³ý²å¼þµÄ»úÖÆ£¬ÒòΪËüÀïÃæÓÐÒ»¸ö²å¼þ×¢²áºÍ·´×¢²áµÄ½Ó¿ÚºÍ²å¼þ¼ÓÔØ¡¢¸üкÍɾ³ýµÄ¼àÌýỊ̈߳¬ÕâÑùÔÊÐíÄ㶯̬¼ÓÔØ¡¢¸üкÍɾ³ýEclipse²å¼þ¶øÎÞÐèÖØÆôEclipse¡£µ±È»£¬Èç¹ûÄ㵱ǰ½ø³Ìµ÷ÓÃÁËij²å¼þ£¬±ÈÈçjsÓï·¨¸ßÁÁ£¬¶øÄ³²å¼þ¸üÐÂÁË£¬ÄÇôµ±Ç°µÄjsʵÀý»¹ÊÇÐèÒªÖØÐ´ò¿ªµÄ¡£µ«Õû¸öEclispeÎÞÐèÖØÆô¡£

JavaÄ£¿é»¯µÄÄѵã

OSGiµÄÒ»¸öÖØÒªÌØÐÔ¾ÍÊÇÄ£¿é»¯£¬OSGiÌṩÁËÒ»Ì×Ä£¿é»¯µÄÌåϵ£¬ÕâÆäÖÐÔò»áÓÐÃ÷È·µÄÄ£¿éÖ®¼ä½Ó¿Ú±©Â¶ÒÔ¼°ÒÀÀµµÄ¶¨Ò壬Òò´ËÄܹ»¸üºÃµÄʵÏÖ¸ßÄھۺ͵ÍñîºÏ¡£ÄÇô£¬JavaÄ£¿é»¯ÄѵãÔÚÄÄ£¿Ä£¿éµÄʵÏֺʹ«Í³µÄ±à³Ì·½·¨È·ÊµÓÐһЩ²î±ð£¬Ö÷ÒªÌåÏÖÔÚÄ£¿éÖ®¼äÀà·ÃÎʵĸôÀë¡¢°æ±¾Ñ¡ÔñÕâÁ½¸ö·½Ãæ¡£ÈçÏ£Íû¸üºÃµÄÉè¼ÆÄ£¿é»¯µÄϵͳ£¬¿ª·¢ÕßÐèÒªÕÆÎÕClassLoader»úÖÆ¡¢Ä£¿éÖ®¼äÀàµÄ½»»¥·½·¨£¨Õâ°üÀ¨ÁËÄ£¿éÔõôÑù¶ÔÍâÌṩ¿É·ÃÎʵÄpackage¡¢ÔõôÑù·ÃÎÊÆäËûÄ£¿éÌṩµÄpackage¡¢ÈçºÎÑ¡ÔñÊʺϰ汾µÄpackageµÈ£©¡£Èç¹û²»¶®ÒÔÉÏÕâЩ£¬Ã³È»Ì×ÓÃOSGi¿ò¼Ü»áÎóÈëÆç;¡£

ÖØÒª¸ÅÄBundle

Bundle ¡ª A bundle is a JAR file with special OSGi entries in its manifest and containing classes, resources, and other JARs¡£Bundle£¬¿ÉÒÔ½«ÆäÀí½âΪ×ÔÃèÊöµÄ JAR Îļþ¡£BundleÔÚOSGiÖÐÊDz¿ÊðµÄ×îСµ¥Î»£¬Òò´Ë£¬¿ÉÒÔ°ÑËüÀí½âΪģ¿é¡£ÔÚ bundle µÄ manifest ÎļþÖУ¬»áÓжԱ¾ bundle µÄ±êʶ¡¢ÌṩµÄ¹¦ÄÜ (Export-package) ¼°ÒÀÀµÐÔ (Import-Package/Require-Bundle) µÄ¶¨Ò塣ÿ¸ö bundle ÔÚÔËÐÐʱ×Ô¼ºµÄÀà¼ÓÔØÆ÷ (Class Loader)£¬ÕâÑù¿ÉÒÔ×öµ½Ò»·½Ãæ°Ñ²»Í¬µÄ bundle ÀïÃæµÄÀàÇø±ð¿ªÀ´£¬µ± bundle ±»Ð¶ÔØÊ±£¬Ö»ÓÐÕâ¸ö bundle µÄÀà¼ÓÔØÆ÷ÖеÄÐÅÏ¢»á¶ªÊ§£»ÁíÒ»·½Ã棬¿ÉÒÔÔÚ×Ô¼ºµÄ bundle ÄÚ²¿³ä·ÖÀûÓà Java µÄ³ÉÔ±·ÃÎÊ¿ØÖÆ»úÖÆ¡£

Bundleͨ¹ýMANIFEST.MF½øÐÐ×ÔÃèÊö£¬ÏÂÃæÊÇÒ»¸öÀý×Ó£º

Manifest-Version: 1.0

Bundle-ManifestVersion: 2

Bundle-Name: Popup Plug-in

Bundle-SymbolicName: com.example.myosgi; singleton:=true

Bundle-Version: 1.0.0

Bundle-Activator: com.example.myosgi.Activator

Require-Bundle: org.eclipse.ui,

org.eclipse.core.runtime

Bundle-ActivationPolicy: lazy

Bundle-RequiredExecutionEnvironment: JavaSE-1.6

BundleÀà¸ôÀë»úÖÆ

ÿ¸öBundle¾ùΪ¶ÀÁ¢µÄClassLoader£¬ÊÇjava¶¯Ì¬»¯ÊµÏֵĻù´¡¡£Ä¬ÈÏÇé¿öÏÂÓÐBoostrap classLoader (jre/lib/classes)¡¢Extension classloader (jre/lib/ext)¡¢ System classloader (classpathÖ¸¶¨)£¬Ó¦ÓÿÉÒÔ×ÔÐÐʵÏÖclassloader¼°¶¯Ì¬µÄ¼ÓÔØÀ࣬»ò¼ÓÔØÌØ¶¨Ä¿Â¼ÏµÄÀà¡£

BundleµÄÉúÃüÖÜÆÚ

Lifecycle ¡ª A lifecycle is the sequence of states a bundle goes through: uninstalled, installed, resolved, starting, stopping, active. ÉúÃüÖÜÆÚͼÈçÏÂËùʾ£º

ҪעÒâµÄÊÇ£ºbundle״̬±äΪResolved²¢²»±íʾÄÜÌṩ·þÎñ£¬ËùÒÔÆô¶¯ËùÓеÄbundle²»±íʾÀà¶¼ÒѾ­¼ÓÔØµ½ÄÚ´æÁË¡£Resolve bundle×öÒÔÏµļ¸¼þÊÂÇ飺ѰÕÒbundleÒÀÀµµÄ°üÊÇ·ñ´æÔÚÒÔ¼°±»resolve£¬Ñ°ÕÒÆ¥ÅäµÄimport package£¬required bundle£¬ÈçѰÕÒÔò½øÈë¼ì²é£¬¼ì²éûÓгåÍ»¾ÍÐγɰ󶨹ØÏµ£¬ÒÔ±ã¼ÓÔØÀàµÄʱºòÄÜÖ±½Ó¼ÓÔØ£¨µ«½ö½öResolved£¬²»´ú±íÀà±»¼ÓÔØÁË£©¡£ÔÚ´ËÎÒÏò´ó¼ÒÍÆ¼öÒ»¸ö¼Ü¹¹Ñ§Ï°½»Á÷Ⱥ¡£½»Á÷ѧϰȺºÅ£º948368769ÀïÃæ»á·ÖÏíһЩ×ÊÉî¼Ü¹¹Ê¦Â¼ÖƵÄÊÓÆµÂ¼Ïñ£ºÓÐSpring£¬MyBatis£¬NettyÔ´Âë·ÖÎö£¬¸ß²¢·¢¡¢¸ßÐÔÄÜ¡¢·Ö²¼Ê½¡¢Î¢·þÎñ¼Ü¹¹µÄÔ­Àí£¬JVMÐÔÄÜÓÅ»¯¡¢·Ö²¼Ê½¼Ü¹¹µÈÕâЩ³ÉΪ¼Ü¹¹Ê¦±Ø±¸µÄ֪ʶÌåϵ¡£»¹ÄÜÁìÈ¡Ãâ·ÑµÄѧϰ×ÊÔ´£¬Ä¿Ç°ÊÜÒæÁ¼¶àÈç¹ûÄãµÄBundleActivationPolicyÊÇLAZY¶èÐÔ¼ÓÔØ£¬bundle.loadClass()µ÷ÓòŻᵽ´ïActive״̬¡£Èç¹ûÄãµÄbundleµÄMANIFEST.MFÖÐÅäÖõÄBundle-activator´æÔÚ£¬ÄǾ͵÷ÓÃÆästart·½·¨£¬´Óstarting½øÈëactive״̬¡£

osgi> ss

"Framework is launched."

id State Bundle

15STARTING com.example.serviceconsumer_1.0.0.X

16RESOLVED com.example.serviceprovider_1.0.0.X

---------------------

ÏÂÃæµÄͼ¸üÏêϸµÄ½âÊÍÁËÕâÒ»µã£º

OSGi Service

Service ¡ª A service is an object instance exposed under the one or more interfaces that it implements and a map of properties. ¼òµ¥À´Ëµ£¬Service modelÔÊÐíÿ¸öbundle¶ÔÍâ·ÖÏíÒ»×é·þÎñ£¬ÆäËüµÄbundle¶¼¿ÉÒÔµ÷ÓÃÕâЩ½Ó¿ÚµÄ·þÎñ¡£ÕâÒ²¾ÍÊÇOSGi bundleÖ®¼äµ÷Óõķ½Ê½¡£Service¿ÉÒÔÓÃÀ´£º

Export functionality from a bundle to other bundles

Import functionality from other bundles

Register listeners for events from other bundles

Expose external devices, such as UPnP devices or even hardware, to other OSGi bundles. See theDeviceandUPnPAPIs

Expose java code running in OSGI to an external network, e.g. via the UPnP orSOAPprotocols.

Bundle configuration, using theConfiguration Manager

ʵ¼Ê×ö·¨À´¿´£¬Í¨³£»á°Ñ½Ó¿ÚºÍʵÏÖ·Ö¿ª¡£½Ó¿Ú·Åµ½Ò»¸öbundleÀïÃæ¡£ÊµÏÖ£¨service)·Åµ½ÁíÍâÒ»¸öbundleÀïÃæ£¬ÀàËÆÏÂÃæµÄͼʾÖУ¬bundle AºÍBÊÇService£¬Æäinterface·Åµ½Bundle C£º

Ò²¿ÉÒÔÊÇÌṩһ¸öjar°ü£¬ÀïÃæ¶¨ÒåÁËÀ©Õ¹½Ó¿Ú£¬È»ºó¹æ¶¨ÐµÄÀ©Õ¹bundle±ØÐëʵÏÖ¸Ãjar°üÀïÃæ¶¨ÒåµÄinterface¡£ÊµÏÖʾÒâͼÈçÏÂËùʾ£¨OsgiCommand½Ó¿Ú¶¨ÒåÔÚÀ©Õ¹µãjar°üÀïÃæ£¬ÐµÄbundle±ØÐë°üº¬£©£º

BundleµÄServiceÖ®¼ä½»»»·½Ê½ºÍ×¢²á·½Ê½£º

ͨ¹ýbundleContext.registerService×¢²á·þÎñ£¬È»ºóͨ¹ýbundleContext.getServiceReference»ñÈ¡·þÎñ£¨²»ÍƼö£©

ʹÓüàÌýÆ÷listeners

ServiceListenerºÍServiceTrackerÌṩbundleºÍserviceµÄ¶¯Ì¬¼àÌý£¬ServiceTracker¿ÉÒÔ¶¯Ì¬¼àÌýδÀ´µÄbundleºÍservice£¨OSGi Release 2ÌṩµÄServiceTracker£¬Ò»°ãÍÆ¼ö£©

ͨ¹ýDeclarative Service(OSGiDS£¬»òÕßSpring Dynamic Module(DM))µÄ·½Ê½£¨OSGi Release 4¿ªÊ¼£¬ÖصãÍÆ¼ö£¡£©

µÚ¶þÖÖͨ¹ýServiceTrackerÀ´²éѯ»òÕìÌý·þÎñ×¢²áºÍ×¢ÏúµÄÀý×Ó´úÂ룺

package com.ibm.osg.example.mygetservice;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.util.tracker.ServiceTracker;
import com.ibm.osg.example.mtservice.MyTestService;
public class MyBundleActivator
implements BundleActivator, Runnable
{ private boolean done=false;
private ServiceTracker testServiceTracker;
// Bundle Activator Start Method
public void start(BundleContext context)
{
/* Here we initialize and open our ServiceTracker.
It will track any service registering under
the "com.ibm.osg.example.mtservice.MyTestService"
interface.
*/
testServiceTracker =
new ServiceTracker(context,
"com.ibm.osg.example.mtservice.MyTestService",
null);
testServiceTracker.open();
// Here we start a thread that will continue
// to use our service until
// the bundle is stopped.
Thread t = new Thread(this);
t.setName("mygetservice thread");
t.start();
}
/*Bundle Activator Stop Method -- here we stop
the thread and close the
ServiceTracker*/
public void stop(BundleContext context)
{
done=true;
testServiceTracker.close();
}
//Here is a method that uses the service
//we are tracking. First we get
//the service
//from the tracker, then we call its printMessage
//method.
public void useService(String message){
MyTestService testService = (MyTestService)
testServiceTracker.getService();
if( testService != null )
{
// If the service is available then use it.
testService.printMessage(message);
}
else{
// If the service is not available then perform an acceptable action
// Here we just print the message to standard out and indicate the service
// was not available.
System.out.println("No MyTestService available - " + message)
}
}
// Simply continues to use the test service
// every second until the done flag is set.
public void run(){
int i = 0;
done = false;
while (!done) {
useService("message from test " + i++);
try{
Thread.sleep(1000);
}
catch( InterruptedException ie ){
}
}>
}<

}

OSGi¼òµ¥Æð²½

´ÓEclipse´´½¨OSGiµÄbundleÊǷdz£¼òµ¥µÄ

Slideshare: OSGiÀíÂÛÓëʵս

OSGi¶¯Ì¬¼ÓÔØÉ¾³ýbundle

ʹÓüàÌýÆ÷listeners

ServiceListenerºÍServiceTrackerÌṩbundleºÍserviceµÄ¶¯Ì¬¼àÌý£¬ServiceTracker¿ÉÒÔ¶¯Ì¬¼àÌýδÀ´µÄbundleºÍservice£¨OSGi Release 2ÌṩµÄServiceTracker£¬Ò»°ãÍÆ¼ö£©ÔÚ´ËÎÒÏò´ó¼ÒÍÆ¼öÒ»¸ö¼Ü¹¹Ñ§Ï°½»Á÷Ⱥ¡£½»Á÷ѧϰȺºÅ£º948368769ÀïÃæ»á·ÖÏíһЩ×ÊÉî¼Ü¹¹Ê¦Â¼ÖƵÄÊÓÆµÂ¼Ïñ£ºÓÐSpring£¬MyBatis£¬NettyÔ´Âë·ÖÎö£¬¸ß²¢·¢¡¢¸ßÐÔÄÜ¡¢·Ö²¼Ê½¡¢Î¢·þÎñ¼Ü¹¹µÄÔ­Àí£¬JVMÐÔÄÜÓÅ»¯¡¢·Ö²¼Ê½¼Ü¹¹µÈÕâЩ³ÉΪ¼Ü¹¹Ê¦±Ø±¸µÄ֪ʶÌåϵ¡£»¹ÄÜÁìÈ¡Ãâ·ÑµÄѧϰ×ÊÔ´£¬Ä¿Ç°ÊÜÒæÁ¼¶à

ͨ¹ýDeclarative Service(OSGiDS£¬»òÕßSpring Dynamic Module(DM))µÄ·½Ê½£¨OSGi Release 4¿ªÊ¼£¬ÖصãÍÆ¼ö£¡£©

¾ßÌåʵÏÖ£º

¶ÔÓÚDS£¬<Define a declarative OSGi Service>, <IBM: Declaring your services to OSGi Declarative Services>£¬<java OSGI Declarative Services Component bundles Example>¡£

¶ÔÓÚSpring DM£¬<OSGI and Spring Dynamic Modules ¨C Simple Hello World>, <Hello, OSGi, Part 2: Introduction to Spring Dynamic Modules>

·Ö²¼Ê½OSGi£¨Distributed OSGi£©

OSGiÈÝÆ÷¿ÉÒÔ°üº¬¼¸Ç§¸öbundlueûÓÐÎÊÌ⣬µ«ÈçºÎÓ¦¶Ô¼¸Ê®Íò¸öµÄÇé¿ö£¿ÈçºÎÏñEJB3Ò»Ñù¾ßÓзֲ¼Ê½²¿ÊðºÍ±ãЯÐÔÄØ£¿ÓÐÒ»¸öOSGiµÄ×ÓÏîÄ¿:·Ö²¼Ê½OSGi£¨Distributed OSGi£©¡£

ÉÏͼÊÇÒ»¸ödemoÑÝʾ£¬Á½¸ö·Ö²¼Ê½OSGi Container£¬¶¼²¿ÊðÁËGreeter½Ó¿Úbundle£¬¶¼»ùÓÚ·Ö²¼Ê½OSGiʵÏÖ£¬ÄÜʵÏÖ·Ö²¼Ê½µ÷ÓÃOSGi Service¡£·Ö²¼Ê½OSGi£¨Distributed OSGi£©»¹¿ÉÒÔÓëRESTful Service (JAX-RS / JSR-339)ÕûºÏ¡£·Ö²¼Ê½OSGiÓм¸Ê®Íò¸öbundleÔõô¹ÜÀí£¬ÕâÊǸöÂé·³£¬¶øÇÒÈçºÎÆô¶¯Í£Ö¹£¬Æô¶¯Ë³ÐòÔõôÑù£¿¿É¹ÜÀíÐÔÊǸöÂé·³£¬ACEÏîÄ¿ÊÔͼ½â¾öÕâ¸öÊÂÇé¡£

DOSGiµÄÔ­Àí£¨ÓÉDistribution providerÀ´¸øOSGi Service´´½¨Endpoint£¬Ê¹ÕâЩServiceÔÚOSGi ContainerÍⲿ¿É·ÃÎÊ£¬ÁíÍâÒ»¶ËÔò´´½¨´úÀí£»´ËÍ⣬ÓмàÌýÆ÷À´ÕìÌýOSGi ServiceµÄ´´½¨ºÍÆôÍ£µÈ£©£º

·Ö²¼Ê½OSGiÓëZooKeeper

ZooKeeperÊÇHadoopµÄÒ»¸ö×ÓÏîÄ¿£¬ËüÊÇÒ»¸öÕë¶Ô´óÐÍ·Ö²¼Ê½ÏµÍ³µÄ¿É¿¿Ð­µ÷ϵͳ£¬ÌṩµÄ¹¦ÄܰüÀ¨£ºÅäÖÃά»¤¡¢Ãû×Ö·þÎñ¡¢·Ö²¼Ê½Í¬²½¡¢×é·þÎñµÈ¡£ZooKeeperµÄÄ¿±ê¾ÍÊÇ·â×°ºÃ¸´ÔÓÒ׳ö´íµÄ¹Ø¼ü·þÎñ£¬½«¼òµ¥Ò×ÓõĽӿںÍÐÔÄܸßЧ¡¢¹¦ÄÜÎȶ¨µÄϵͳÌṩ¸øÓû§¡£

·Ö²¼Ê½OSGi£¨Distributed OSGi£©ÔÚDiscoveryÕâÒ»¿éʹÓÃÁËZooKeeper¡£ËùνDiscoveryÄ£¿é¾ÍÊÇÓÃÀ´·¢ÏÖºÍÕìÌý·Ö²¼Ê½µÄÔ¶¶ËµÄ¿ÉÓõÄEndpoints¡£Discovery Ditributed with ZookeeperµÄ¼Ü¹¹Í¼£º

 
   
2275 ´Îä¯ÀÀ       29
Ïà¹ØÎÄÕÂ

Java΢·þÎñÐÂÉú´úÖ®Nacos
ÉîÈëÀí½âJavaÖеÄÈÝÆ÷
JavaÈÝÆ÷Ïê½â
Java´úÂëÖÊÁ¿¼ì²é¹¤¾ß¼°Ê¹Óð¸Àý
Ïà¹ØÎĵµ

JavaÐÔÄÜÓÅ»¯
Spring¿ò¼Ü
SSM¿ò¼Ü¼òµ¥¼òÉÜ
´ÓÁ㿪ʼѧjava±à³Ì¾­µä
Ïà¹Ø¿Î³Ì

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
JavaÐéÄâ»ú¼Ü¹¹
JVM¡ª¡ªJavaÐéÄâ»ú¼Ü¹¹
JavaÈÝÆ÷Ïê½â
Java½ø½×--ÉîÈëÀí½âArrayListʵÏÖÔ­Àí
Java²¢·¢ÈÝÆ÷£¬µ×²ãÔ­ÀíÉîÈë·ÖÎö
×îпγÌ
java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
SpringBoot&Cloud¡¢JavaSSM¿ò¼Ü
Spring Boot Åàѵ
³É¹¦°¸Àý
¹úÄÚÖªÃûÒøÐÐ Spring+SpringBoot+Cloud+MVC
±±¾© Java±à³Ì»ù´¡ÓëÍøÒ³¿ª·¢»ù´¡
±±¾© Struts+Spring
»ªÏÄ»ù½ð ActiveMQ Ô­Àí
ijÃñº½¹« Java»ù´¡±à³Ìµ½Ó¦Óÿª·¢