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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
OSGiÈëÃÅÆª£º·þÎñ²ã
 
×÷Õß ÕÅÏþÄþ£¬»ðÁú¹ûÈí¼þ    ·¢²¼ÓÚ 2014-10-13
  2474  次浏览      27
 

ǰÑÔ

µ½ÏÖÔÚΪֹ£¬ÎÒÃÇÒѾ­Á˽âÁËOSGi¿ò¼ÜµÄÏÂÃæÁ½²ã£¬¶ø×÷ΪOSGi¿ò¼ÜÖÐ×îÉÏÃæµÄÒ»²ã£¬·þÎñ²ã´ø¸øÁËÎÒÃǸü¶àµÄ¶¯Ì¬ÐÔ£¬²¢ÇÒʹÓÃÁË´ó¼Ò»ò¶à»òÉÙ¶¼ÔøÁ˽â¹ýµÄÃæÏò·þÎñ±à³ÌÄ£ÐÍ£¬ÆäºÃ´¦ÊÇÏÔ¶øÒ×¼ûµÄ¡£

ÕâÀïÎÒÃÇÒÀÈ»»á½²½âʲôÊÇ·þÎñ²ãºÍ·þÎñ²ã¶ÔÓÚOSGi¿ò¼ÜµÄÒâÒ壬´ËÍ⣬»¹½«¸æËß´ó¼ÒʲôʱºòÓ¦¸ÃʹÓ÷þÎñ£¬Ê²Ã´Ê±ºò²»Ó¦¸ÃʹÓá£×îºó½«»áÊÇOSGi·þÎñ²ãµÄһЩ»ù´¡£¬°üÀ¨ÈçºÎ¶¨Òå¡¢×¢²áºÍ·¢ÏÖ·þÎñ¡£

1 ʲôÊÇ·þÎñ

¼òµ¥µÄ˵£¬·þÎñ¾ÍÊÇ¡°Îª±ðÈËËù×öµÄ¹¤×÷¡±£¬±ÈÈçÁ½¸ö¶ÔÏó»¥Ïàµ÷Ó÷½·¨£¬ÄÇô±»µ÷ÓÃÕß¾ÍÊÇÔÚΪµ÷ÓÃÕß×ö¹¤×÷¡£ Ò²ÐíÓеÄÈË»á¾õµÃ·þÎñÊÇ´ÓÍøÂçÉÏ»ñÈ¡µÄ£¬µ«ÊǾ­µäµÄ¿´·¨Æäʵ²¢Ã»ÓÐÕâ¸öÏÞÖÆ£¬ÓÐʱºò¼´Ê¹ÊÇÍêÈ«±¾µØµÄÓ¦Óã¬Ò²ÄÜ´ÓÃæÏò·þÎñµÄ±à³ÌÖеõ½ºÃ´¦¡£

ÄÇôÈçºÎ½«·þÎñºÍÒ»´ÎÆÕͨµÄ·½·¨µ÷ÓÃÇø±ð¿ªÀ´ÄØ£¿Æäʵһ¸ö·þÎñ¿ÉÒÔ¿´×÷ÊÇÔÚ·þÎñµÄÌṩÕߺÍʹÓÃÕßÖ®¼äµÄÒ»¸öÆõÔ¼¡£Ê¹ÓÃÕßÒ»°ã²»¹ØÐÄÆäʵÏÖµÄϸ½Ú£¬ÉõÖÁÁ¬Ë­ÌṩµÄ¶¼²»ÏëÖªµÀ£¬Ö»ÒªÂú×ãÕâ¸öÆõÔ¼£¨·þÎñÓ¦¸ÃÌṩʲô¹¦ÄÜ£¬Âú×ãʲô¸ñʽ£©¾ÍºÃÁË¡£Ê¹Ó÷þÎñµÄ¹ý³ÌÒ²°üº¬ÁË·¢ÏÖ·þÎñºÍ´ï³ÉЭÒéµÄÐÎʽ£¬Ò²¾ÍÊÇ˵ÎÒÃÇÐèҪͨ¹ý·þÎñµÄ±êÖ¾ÐÔÌØÕ÷À´ÕÒµ½¶ÔÓ¦µÄ·þÎñ¡£

Æäʵ£¬JavaµÄ½Ó¿Ú¿ÉÒÔ˵ÌṩÁËÒ»ÖÖÆõÔ¼µÄÌṩ·½Ê½£¬ÎÒÃÇÄÜͨ¹ýÐÞ¸ÄclasspathÀ´Ìæ»»½Ó¿ÚµÄ²»Í¬µÄ¾ßÌåʵÏÖ¡£µ«ÊÇOSGiÄܹ»ÎªÕÒµ½·þÎñÌṩ¸ü¼Ó¸ß²ãµÄ³éÏó²¢ÇÒÔÚÓ¦ÓõÄÖ´ÐÐʱ¶¯Ì¬Ìæ»»·þÎñµÄʵÏÖ£¬ÕâÐ©ÌØÐÔÔÚÉԺ󽫻áÌáµ½¡£

2 ΪʲôҪʹÓ÷þÎñ

·þÎñ£¨¸ü׼ȷµÄ˵ÊÇÃæÏò·þÎñµÄ±à³ÌÄ£ÐÍ£©¸øÓèÁËÎÒÃÇÒ»ÖÖ¼´²å¼´ÓõÄÈí¼þ¿ª·¢·½·¨£¬ÒâζןüÇ¿µÄÁé»îÐÔ¡£ÕâÖÖÁé»îÐÔÊÇÈçºÎÌåÏÖµÄÄØ£¿

µÍñîºÏ£¬ÀûÓÚ×é¼þ¸´ÓãºÍ¨¹ý·þÎñÎÒÃÇÄܹ»ÇåÎúµÄ¶¨Òå×é¼þµÄ±ß½ç£¬´Ó¶ø½«·þÎñµÄʹÓÃÕߺÍÌṩÕßÖ®¼äµÄñîºÏ¶È½µµ½ºÜµÍ¡£

¸ü¼ÓÇ¿µ÷½Ó¿Ú¶ø²»ÊÇÔÚ¾ßÌåµÄʵÏÖ£ºJavaµÄinterfaceÌṩÁËÒ»ÖÖÐÎʽµÄÆõÔ¼£¬ÔÚOSGiµÄ·þÎñ²ãÖгä·ÖÀûÓÃÁ˽ӿÚÌØÐÔµÄÓÅÊÆ£¬ÕâÑùʹµÃÎÞÂÛÓжàÉÙ¸öÀàʵÏÖÁËÕâ¸ö½Ó¿Ú£¬Ö»ÒªÂú×ã¶ÔÕâ¸ö½Ó¿ÚµÄ¹¦ÄÜÐèÒª£¬¾Í¿ÉÒÔ±»Ê¹ÓÃÕßʹÓá£

¶ÔÓÚÒÀÀµÓбȽÏÇåÎúµØÃèÊö£ºµ¥Êǽӿڱ¾ÉíÖ»°üº¬·þÎñµÄÃû³ÆºÍ²ÎÊýÀàÐÍ£¬²¢²»×ãÒÔÇå³þµÄÃèÊö·þÎñµÄËùÓÐÌØÕ÷£¬¶øÃæÏò·þÎñµÄ±à³ÌÄ£ÐÍÖÐÒªÇóÁ˸ü¼ÓÇåÎúµÄÃèÊöʹµÃÕâÐ©ÌØÕ÷Äܹ»Î¨Ò»±êʶһ¸ö·þÎñ¡£

Ö§³Ö¶Ô¶à¸ö¾ºÕùʵÏÖ£¨¶à¸öʵÏÖͬһ¸ö½Ó¿ÚµÄÀࣩµÄɸѡ£º·þÎñ¿ò¼Ü»á°ïÖúÄã¼Ç¼·þÎñµÄÔªÊý¾Ý£¬¿ÉÒԾݴ˰ïÖúʹÓÃÕß²éѯºÍɸѡ·þÎñ£¬Ê¹ÓÃÕ߸ü¼ÓµÄÖ÷¶¯£¬ÕâÒ»µãºÍ´«Í³µÄÒÀÀµ×¢Èë¿ò¼Ü²»Í¬¡£

3 ʲôʱºòʹÓÃ/²»Ê¹Ó÷þÎñ

¿ÉÒÔ¿¼ÂÇʹÓõÄʱºò£º

µ±Äã³£³£ÏëÒª¶ÔÖ÷ÒªµÄ×é¼þ½øÐÐÌæ»»ºÍÉý¼¶¶ø²»ÏëÖØÐ´Ó¦ÓÃµÄÆäËû²¿·Ö£¬»òÕßµ±ÄãÔÚ³ÌÐòÖÐÏëÒª²éÕÒºÍÑ¡Ôñ²»Í¬µÄ½Ó¿ÚʵÏÖµÄʱºò¡£

²»Ó¦¸ÃʹÓõÄʱºò£º

·þÎñµÄ¼ÓÈëºÍά»¤ÍùÍù³ÖÐøµÄÔö¼Ó¿ò¼ÜµÄ¿ªÏú£¬ËùÒÔµ±Ä㿪·¢µÄ´úÂë¶ÔÐÔÄÜÐèÇóÃô¸ÐµÄʱºò£¬²»ÒªÊ¹Ó÷þÎñ¡£

ÏÔÈ»ËüÒ²²»Ó¦¸Ã³öÏÖÔÚÁ½¶Î¾­³£Ò»Æð¿ª·¢ºÍ¸üеĽôñîºÏ´úÂëÖ®¼ä£¬³ý·ÇÄãÕæµÄÐèÒªÔÚ×Ô¼ºÐ´µÄ´úÂëÖеõ½¡°Ò»¸ö½Ó¿Ú¶à¸öʵÏÖ¡±µÄÑ¡ÔñȨ¡£

×îºó£¬Èç¹û²»È·¶¨ÊÇ·ñÓ¦¸ÃʹÓ÷þÎñ£¬¿ÉÒÔÏÈÓÃÃæÏò½Ó¿ÚµÄ·½Ê½ÊµÏÖ£¬ÕâÖÁÉÙÊǺÍʹÓ÷þÎñºÜ½Ó½üÁË£¬²¢ÇÒËüÒ²Äܼò»¯ÄãµÄ¿ª·¢¡£Èç¹ûÄÄÌìÄã϶¨¾öÐÄÏë°ÑËûÃÇÒÆÖ²µ½·þÎñ²ãÁË£¬ÔÚÃæÏò½Ó¿ÚµÄ»ù´¡ÉÏÕâ¸öÒ»Ö±¹¤×÷Ò²»á±äµÃ·Ç³£ÈÝÒס£

4 OSGi·þÎñ²ã»ù´¡

Ê×ÏÈ£¬ÐèҪ˵Ã÷µÄÊÇ£¬OSGiµÄ·þÎñ²ã³ý¿ªÇ°ÃæÌáµ½µÄÃæÏò·þÎñµÄ±à³ÌÄ£ÐÍ£¬»¹ÓÐÒ»¸öÇø±ðÓÚÆäËûºÜ¶àÀàËÆÄ£Ð͵ÄÌØÐÔ£¬ÄǾÍÊÇ·þÎñµÄÍêÈ«¶¯Ì¬ÐÔ¡£Ò²¾ÍÊÇ˵£¬µ±Ò»¸öbundle·¢ÏÖ²¢¿ªÊ¼Ê¹ÓÃOSGiÖеÄÒ»¸ö·þÎñÁËÒÔºó£¬Õâ¸ö·þÎñ¿ÉÄÜÔÚÈκεÄʱºò¸Ä±ä»òÕßÊÇÏûʧ¡£Õâ·½ÃæµÄÄÚÈݽ«ÔÚÒÔºó¸ü¼ÓÉîÈëµÄ½²½â¡£

OSGi¿ò¼ÜÓÐÒ»¸öÖÐÐÄ»¯µÄ×¢²á±í£¬Õâ¸ö×¢²á±í×ñ´Ópublish-find-bindÄ£ÐÍ£º

Ò»¸öÌṩ·þÎñµÄbundle¿ÉÒÔ·¢²¼POJO×÷Ϊ·þÎñµÄʵÌ壻һ¸öʹÓ÷þÎñµÄbundle¿ÉÒÔͨ¹ýÕâ¸ö×¢²á±íÕÒµ½ºÍ°ó¶¨·þÎñ¡£

ÎÒÃÇ¿ÉÒÔͨ¹ýBundleContext½Ó¿ÚÀ´Íê³ÉÉÏÊöµÄ¹¤×÷£¬ÏÂÃæ¾ÍÊǺ¬ÓÐÕâ·½Ãæ¹¦ÄܵĽӿÚÁÐ±í£º

public interface BundleContext {  
...
void addServiceListener(ServiceListener listener, String filter) throws InvalidSyntaxException;
void addServiceListener(ServiceListener listener);
void removeServiceListener(ServiceListener listener);
ServiceRegistration registerService(String[] clazzes, Object service, Dictionary properties);
ServiceRegistration registerService(String clazz, Object service, Dictionary properties);
ServiceRegistration[] getServiceReferences(String clazz, String filter) throws InvalidSyntaxException;
ServiceRegistration[] getAllServiceReferences(String clazz, String filter) throws InvalidSyntaxException;
ServiceReference getServiceReference(String clazz);
Object getService(ServiceReference reference);
boolean ungetService(ServiceReference reference);
...
}

4.1 ·¢²¼·þÎñ

ΪÁËÈñðµÄbundleÄÜ·¢ÏÖÕâ¸ö·þÎñ£¬Äã±ØÐëÔÚ·¢²¼Ëü֮ǰ¶ÔÆä½øÐÐÌØÕ÷ÃèÊö¡£ÕâÐ©ÌØÕ÷°üÀ¨½Ó¿ÚµÄÃû×Ö£¨¿ÉÒÔÊÇÃû×ÖµÄÊý×飩£¬½Ó¿ÚµÄʵÏÖ£¬ºÍÒ»¸ö¿ÉÑ¡µÄjava.util.DictionaryÀàÐ͵ÄÔªÊý¾ÝÐÅÏ¢¡£ÏÂÃæÊÇÒ»¸öÀý×Ó£º

String[] interfaces =  new String[]{StockListing.class.getName(), StockChart.class.getname()};  
Dictionary metadata = new Properties();
metadata.setProperty(¡°name¡±, ¡°LSE¡±);
metadata.setProperty(¡°currency¡±, Currency.getInstance(¡°GBP¡±));
metadata.setProperty(¡°country¡±, ¡°GB¡±);
ServiceRegistration registration = bundleContext.registerService(interfaces, new LSE(), metadata);

ÔÚÉÏÃæµÄ´úÂëÖУ¬ÎÒÃǵõ½ÁËServiceRegistration¶ÔÏó£¬ÎÒÃÇ¿ÉÒÔÓÃÕâ¸ö¶ÔÏóÀ´¸üзþÎñµÄÔªÊý¾Ý£º

registration.setProperties(newMetadata);

Ò²¿ÉÒÔÖ±½Ó¾Í°ÑÕâ¸ö·þÎñÒÆ³ý£º

registration.unregister();

ÐèҪעÒâµÄÊÇÕâ¸ö¶ÔÏó²»ÄÜºÍÆäËûBundles¹²Ïí£¬ÒòΪËüºÍ·¢²¼·þÎñµÄbundleµÄÉúÃüÖÜÆÚÏ໥ÒÀ´æ£¬Ò²¾ÍÊÇ˵£¬Èç¹ûÕâ¸öbundleÒѾ­²»ÔÚ¿ò¼ÜÖ´Ðл·¾³ÖдæÔÚ£¬ÄÇôÕâ¸ö¶ÔÏóÒ²²»Ó¦¸Ã´æÔÚÁË£¬¡°Æ¤Ö®²»´æÃ«½«Ñɸ½¡±¾ÍÊÇÕâ¸öµÀÀí¡£

ÊÔÏëÈç¹ûÕâ¸öServiceRegistration¹²Ïí¸øÁËÆäËûµÄbundle£¨¾ßÌåµÄ˵¾ÍÊÇÆäËûbundleÖдæÔÚ¶ÔÕâ¸ö¶ÔÏóµÄÒýÓã©£¬ÄÇô·¢²¼·þÎñµÄÄǸöbundle¼´Ê¹±»ÒƳýÁË£¬ÓÉÓÚÆäËûbundleÖеÄÒýÓÃÒÀÈ»´æÔÚ£¬ÄÇôÀ¬»ø´¦Àí»úÖÆ²»»áĨȥÕâ¸ö¶ÔÏó£¬ÕâÑù²»µ«ÓÚÀí²»ºÏ£¬¶øÇÒʵ¼ÊÉÏÕâ¸ö¶ÔÏóÒ²ÊDz»¿ÉÓõģ¬ÒòΪÕâ¸ö¶ÔÏóËùÒÀ´æµÄbundleÒѾ­²»ÔÚÁË¡£

´úÂëÖеIJÎÊýnew LSE()ÊÇÒ»¸öPOJO£¬Õâ¸ö¶ÔÏó²»ÐèҪʵÏÖÈκÎOSGiÀàÐÍ»òÕßʹÓñê×¢£¬Ö»ÒªÂú×ã·þÎñÔ¼¶¨£¨ÕâÀï¾ÍÊǽӿڣ©¾Í¿ÉÒÔÁË¡£

´ËÍ⣬Èç¹ûÔÚɾ³ý·¢²¼µÄ·þÎñ֮ǰbundleÍ£Ö¹ÁË£¬¿ò¼Ü»á°ïÖúÄãɾ³ýÕâЩ·þÎñ¡£

4.2 ·¢ÏֺͰ󶨷þÎñ

ÉÏһС½ÚÎÒÃÇ˵Ã÷ÁËÈçºÎÃèÊöºÍ·¢²¼Ò»¸ö·þÎñ£¬ÄÇôÏÖÔÚÎÒÃÇ¿ÉÒÔ¸ù¾Ý·þÎñÔ¼¶¨´Ó×¢²á±íÖÐÕÒµ½ÕýÈ·µÄ·þÎñ¡£
ÏÂÃæÊÇ·¢ÏÖ·þÎñ²¢»ñµÃÆäÒýÓõĽӿڣº

ServiceReference reference =  
bundleContext.getServiceReference(StockListing.class.getName());

ÕâÊǸù¾ÝʵÏֵĽӿÚÃû³Æ»ñµÃµÄ·þÎñ£¬Ò²ÊÇ×î¼òµ¥µÄ·½·¨¡£

×¢ÒâÕâÀïµÄreferenceÊÇ·þÎñ¶ÔÏóµÄ¼ä½ÓÒýÓ㬿ÉÊÇΪʲôҪÓüä½ÓÒýÓöø²»Ö±½Ó·µ»ØÄǸöʵ¼ÊµÄ·þÎñ¶ÔÏóÄØ£¿Êµ¼ÊÉÏÊÇΪÁ˽«·þÎñµÄʹÓúͷþÎñµÄʵÏÖ½øÐнâñ½«·þÎñ×¢²á±í×÷ΪÁ½ÕßµÄÖмäÈË£¬´ïµ½¸ú×ٺͿØÖÆ·þÎñµÄÄ¿µÄ£¬Í¬Ê±»¹¿ÉÒÔÔÚ·þÎñÏûʧÁËÒÔºó֪ͨʹÓÃÕß¡£

Õâ¸ö·½·¨µÄ·µ»ØÀàÐÍÊÇServiceReference£¬Ëü¿ÉÒÔÔÚbundleÖ®¼ä»¥Ïí£¬ÒòΪËüºÍʹÓ÷þÎñµÄbundleµÄÉúÃüÖÜÆÚÎ޹ء£

4.2.1 Ñ¡Ôñ×îÊʺÏÄãµÄ·þÎñ

ÔÚgetServiceReferenceÕâ¸ö·½·¨ÖУ¬Ñ¡ÔñserviceµÄĬÈÏÓÅÏȼ¶ÊÇÏÈÑ¡Ôñservice.rank×î¸ßµÄ£¬ÔÚrankÏàµÈµÄÇé¿öÏÂÑ¡Ôñ×îÔçÔÚ¿ò¼ÜÖÐ×¢²áµÄ¡£³ýÁËÕâ¸öĬÈϵĹæÔò£¬ÎÒÃÇ»¹¿ÉÒÔÔÚ getServiceReferencesÖÐͨ¹ýÌí¼Ó¹ýÂ˲ÎÊý£¨×÷Ϊµ÷Óø÷½·¨µÄµÚ¶þ¸ö²ÎÊý£©À´×öһЩɸѡ¡£

ServiceReference[] references = 
bundleContext.getServiceReferences(StockListing.class.getName(), ¡°(&(currency=GBP)(objectClass=org.example.StockChart))¡±);

ÔÚÕâÀïµÄÆ¥Åä²ÎÊýÊÇÒ»¸ö×Ö·û´®£¬Õâ¸ö×Ö·û´®µÄ¸ñʽÊôÓÚLDAP²éѯ¸ñʽ£¬ÔÚRFC 1960±ê×¼ÖÐÓÐÍêÕûµÄÃèÊö¡£

ÉÏÃæµÄ×Ö·û´®ÖеȺÅ×ó±ßµÄÄÚÈݾÍÊÇÇ°ÃæÌáµ½µÄÔªÊý¾Ý£¨Dictionary£©ÖеÄ×óÖµ£¬Í¨¹ýÕâ¸ö×óÖµ¶ÔÓ¦µÄÓÒÖµÀ´Óë·þÎñËù´øÓеÄÔªÊý¾Ý½øÐÐÆ¥Å䡣һЩ¼òµ¥µÄÆ¥ÅäʾÀýÈçÏ£º

ÊôÐÔÆ¥Åä:

(name=John Smith)

(age>=20)

(age<=65)

Ä£ºýÆ¥Åä:

(name~=johnsmith)

ͨÅä·ûÆ¥Åä:

(name=Jo*n*Smith*)

ÅжÏij¸öÊôÐÔÊÇ·ñ´æÔÚ:

(name=)

Ìõ¼þÓë:

(&(name=John Smith)(occupation=doctor))

Ìõ¼þ»ò:

(|(name~=John Smith)(name~=Smith John))

*Ìõ¼þ·Ç: **

(!(name=John Smith))

4.2.2 °ó¶¨ºÍʹÓ÷þÎñ

ÔÚÄã·¢ÏÖÁË·þÎñÖ®ºó£¬Ê¹Ó÷þÎñ֮ǰ£¬Äã±ØÐë´Ó×¢²á±íÖаó¶¨ÊµÏֵķþÎñ¡£

StockListing listing = 
(StockListing) bundleContext.getService(reference);

Õâ¸ö·½·¨·µ»ØµÄPOJOʵÀýºÍ֮ǰÔÚ×¢²á±íÖÐ×¢²áµÄʵÀýÊÇͬһ¸ö¡£

ÿ´ÎʹÓÃgetService·½·¨µÄʱºò£¬×¢²á±í»á½«¶ÔÓ¦·þÎñµÄʹÓôÎÊý¼Ó1£¬Í¬Ê±»á¼Ç¼˭ÔÚʹÓÃÕâ¸ö·þÎñ¡£ËùÒÔµ±Äã²»ÔÚÏëʹÓÃÕâ·þÎñµÄʱºò£¬×îºÃ¸æËß×¢²á±íÒ»Éù¡£

bundleContext.ungetService(reference);  
listing = null;

¸ø³öµÚ¶þÌõÓï¾äµÄÄ¿µÄ²¢²»ÊÇΪÁË֪ͨע²á±í£¬¶øÊÇΪÁËÈÃjavaµÄÀ¬»ø´¦Àí»úÖÆ°²È«ÔË×÷¡£ÒòΪÕâÀïÎÒÃÇÓÃÁËÒ»¸ö¾Ö²¿±äÁ¿listingÀ´×÷Ϊ·þÎñ¶ÔÏóµÄÒ»¸öÒýÓ㬣¨²»·Á¼ÙÉèlistingÊÇ×îºóÒ»¸öÒýÓÃÕâ¸ö¶ÔÏóµÄ±äÁ¿£©£¬Èç¹ûÎÒÃDz»ÉèΪnull£¬ÄÇôÔÚÕâ¸ölistingÏûÍö֮ǰ£¬ÄǸö·þÎñ¶ÔÏóÓпÉÄܲ»»á±»À¬»ø´¦Àíµô£¨¼´Ê¹ÔÚ³ÌÐòÂß¼­ÉÏÕâ¸ö·þÎñ¶ÔÏóÒѾ­ÊÇ¡°À¬»ø¡±ÁË£©£¬Õâ¿ÉÄÜ»áÒý·¢Ò»Ð©ÎÊÌâ¡£

²»¹ý£¬ÕâÖÖÓþֲ¿±äÁ¿ÒýÓ÷þÎñ¶ÔÏóµÄ·½Ê½±¾À´¾Í²»¶Ô¡£Ò»°ãÀ´Ëµ£¬»¹ÊÇÓ¦¸ÃÔÚÿ´ÎÐèҪʹÓõÄʱºòÁÙʱ´ÓServiceReference»ñµÃ£¬²¢ÇÒÒª¿¼Âǵ½Õâ¸ö·þÎñÔÚÈκÎʱºò¶¼ÓпÉÄÜÏûÍö¡£

5 ×ܽá

ÖÁ´Ë£¬Èý¸ö²ã´ÎµÄ»ù´¡ÐÔ½²½âÒѾ­È«²¿½áÊøÁË¡£ÈýƪÈëÃż¶ÎĵµÒÔºó£¬ÏàÐŶÁÕß¶ÔOSGi¿ò¼ÜÒѾ­ÓÐÁËÒ»¸ö´óÖµÄÁ˽⣬½ÓÏÂÀ´½¨Òé´ó¼ÒÅäºÏ¡¶OSGi¿ª·¢»·¾³µÄ½¨Á¢ºÍHelloWorld¡·ÕâÆªÎĵµ×Ô¼ºÊµ¼Ê²Ù×÷Ò»ÏÂ֮ǰ½²µ½µÄһЩÄÚÈÝ£¬¹®¹ÌÒ»ÏÂÕâ¸öϵÁеÄ֪ʶ£¬Îª½ÓÏÂÀ´µÄ½ø½×ƪÄÚÈÝ×öºÃ×¼±¸¡£

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

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 ÖеÄÖÐÎıàÂëÎÊÌâ
Java»ù´¡ÖªÊ¶µÄÈýÊ®¸ö¾­µäÎÊ´ð
Íæ×ª Java Web Ó¦Óÿª·¢
ʹÓÃSpring¸üºÃµØ´¦ÀíStruts
ÓÃEclipse¿ª·¢iPhone WebÓ¦ÓÃ
²å¼þϵͳ¿ò¼Ü·ÖÎö


Struts+Spring+Hibernate
»ùÓÚJ2EEµÄWeb 2.0Ó¦Óÿª·¢
J2EEÉè¼ÆÄ£Ê½ºÍÐÔÄܵ÷ÓÅ
Java EE 5ÆóÒµ¼¶¼Ü¹¹Éè¼Æ
Javaµ¥Ôª²âÊÔ·½·¨Óë¼¼Êõ
Java±à³Ì·½·¨Óë¼¼Êõ


Struts+Spring+Hibernate/EJB+ÐÔÄÜÓÅ»¯
»ªÏÄ»ù½ð ActiveMQ Ô­ÀíÓë¹ÜÀí
ijÃñº½¹«Ë¾ Java»ù´¡±à³Ìµ½Ó¦Óÿª·¢
ij·çµç¹«Ë¾ Java Ó¦Óÿª·¢Æ½Ì¨ÓëÇ¨ÒÆ
ÈÕÕÕ¸Û J2EEÓ¦Óÿª·¢¼¼Êõ¿ò¼ÜÓëʵ¼ù
ij¿ç¹ú¹«Ë¾ ¹¤×÷Á÷¹ÜÀíJBPM
¶«·½º½¿Õ¹«Ë¾ ¸ß¼¶J2EE¼°ÆäÇ°ÑØ¼¼Êõ