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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
OSGi¿ò¼Ü
 
×÷Õßêdzƣºthankjj20160909
  3919  次浏览      30
 2021-3-24 
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½éÉÜÁËOSGi¿ò¼ÜÊÇʲôÒÔ¼°Ò»¸ö¼òµ¥µÄ°¸Àý¡£
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼­¡¢ÍƼö¡£

1.¼ò½é

1.1 what

Open Service Gateway Initiative£¨OSGi·þÎñƽ̨ServicePlatform£©

Ò»¸öJava¿ò¼Ü£¬¿ÉÀ©Õ¹²¿ÊðºÍÏÂÔØµÄÓ¦ÓóÌÐò£¨bundle£©¡£Ä£¿é»¯£¬¿É²å°Î£¬¿É¶¯Ì¬¸Ä±äÐÐΪ£¬

1.2 advance

Javaƽ̨µÄ¶ÀÁ¢ÐԺͶ¯Ì¬´úÂë¼ÓÔØÄÜÁ¦

1.3 parts

1.3.1 °²È«²ã

¶¨ÒåÁËÈçºÎÇ©ÃûºÍÑéÖ¤Ò»¸öBundle

1.3.2 Ä£¿é²ã

OSGIµÄºËÐIJã´Î£¬¶¨ÒåÁËBundleÄ£ÐÍ£¬BundleÈçºÎImportºÍExport´úÂ룬ÒÔ¼°ÈçºÎ¶¨ÒåºÍ½âÎöBundleÖ®¼äµÄÒÀÀµ¹ØÏµ

1.3.3 ÉúÃüÖÜÆÚ²ã

¶¨ÒåÁËBundleµÄÉúÃüÖÜÆÚ°üÀ¨µÄ״̬ÒÔ¼°×´Ì¬Ö®¼äÈçºÎת»»£¬²¢ÇÒ¶¨ÒåÁ˽ӿÚÖ§³ÖBundleµÄÉúÃüÖÜÆÚ²Ù×÷£¬°üÀ¨Install, start, stop, updateºÍuninstall¡£OSGiÌṩÁËBundle¿â£¨BundleRepository£©

1.3.4 ·þÎñ²ã

¶¨ÒåÁËÈçºÎ½«Ò»¸öJava¶ÔÏó×¢²á·¢²¼ÔÚij¸ö/ijЩ½Ó¿ÚÏÂÃæ³ÉΪÓÉÕâЩ½Ó¿Ú±íʾµÄ·þÎñ£¬»ñÈ¡·þÎñ£¬ÒÔ¼°¼àÌýijЩ·þÎñµÄÆô¶¯ºÍֹͣʼþµÈ

1.4 application

1.4.1 Ó¦ÓÃÒ»

Ò»¸ö·þÎñ¿ÉÒÔÊÇÒ»¸öÍøÂçÖеÄÉ豸£¬Èç¹ûÒ»¸öÉ豸±»¼à²âµ½£¬Ôò·þÎñ¿ÉÒÔ¶¯Ì¬×¢²á£»Èç¹ûÉ豸±»ÒƳý£¬Ôò·þÎñÄܹ»¶¯Ì¬×¢Ïú¡£ÔÚÕâÑùµÄÓ°Ïì»·¾³»ã×ܱà³Ì½«ºÄ·Ñ´óÁ¿¿ªÏúÀ´´¦Àí¶¯Ì¬ÐÔ£¬µ«ÊÇOSCi°ïÖú¿ª·¢Õß´¦ÀíÁ˾ø´ó¶àÊý¶¯Ì¬ÐÔ·½ÃæµÄ¹¤×÷¡£

1.4.2 Ó¦Óöþ

Óû§µÇ¼Ñé֤ģ¿é£ºÒªÇó¿É¶¯Ì¬µÄÌæ»»£¨ÏµÍ³ÔËÐÐÆÚ£©Óû§µÇ¼ÑéÖ¤µÄ·½Ê½¡£

ÀýÈçĿǰÓÐÈýÖÖÑéÖ¤·½Ê½£ºLDAPÑéÖ¤£¬DBÑéÖ¤ÒÔ¼°ÅäÖÃÎļþÑéÖ¤£»Í¬ÊÂÒªÇó¿ÉËæÊ±Ôö¼ÓеÄÑéÖ¤·½Ê½£¬ÈçCAÑéÖ¤·½Ê½µÈ¡£

1.5 ÖªÃûOSGi¿ò¼Ü

Equinox£¬³É¹¦°¸ÀýÊÇEclipse IDE£¬»¹ÓÐOscar£¨²»»îÔ¾£©£¬Knopflerfish

2.Hello World

2.1 New¹¤³Ì

¸½£ºÕâÊÇÉÔ΢¸´ÔÓÒ»µãµÄÓ¦ÓÃ

Zzhello£º

public interface Hello {
public void syaHello();
}

public class HelloImpl implements Hello{
final String helloString;

public HelloImpl(String helloString) {
this.helloString = helloString;
}

@Override
public void syaHello() {
System.out.println(this.helloString);
}

}

 

Export-Package: zzhello;version="1.0"

public class Activator implements BundleActivator {

private List<ServiceRegistration> r egistrations =
new ArrayList<>();

public void start (BundleContext context) throws Exception {
registrations.add(context.registerService(Hello.class.getName(),
new HelloImpl ("Hello, OSGi"), null));
System.out.println ("OSGi-·þÎñ×¢²á³É¹¦");
}

public void stop (BundleContext context) throws Exception {
for (ServiceRegistration registration: registrations){
registration.unregister();
System.out.println ("È¡Ïû·þÎñ×¢²á:"+registration);
}
}

}

ZzhelloClient:

Bundle-Activator: zzhelloclient.HelloUser
Import-Package: org.osgi.framework;version ="1.3.0",
zzhello;version="1.0.0"

public class HelloUser implements BundleActivator{
@Override
public void start (BundleContext ctx) throws Exception {
ServiceReference reference = ctx.getServiceReference (Hello.class.getName());
if (reference != null) {
Hello hello = null;
try {
hello = (Hello)ctx.getService(reference);
if(hello != null)
hello.syaHello();
else
System.out.println ("Services:Hello---object null");
} catch (Exception e) {
e.printStackTrace();
}finally {
ctx.ungetService (reference);
hello = null;
}
}else {
System.out.println ("Service:Hello---not exists");
}
}

@Override
public void stop (BundleContext arg0) throws Exception {

}

2.2 Debug»·¾³ConfigurationÉèÖã¨È«Ñ¡µÄ»°»á±¨´í£©

2.3 ½á¹û

ÀàËÆµÄÃüÁÓÐinstall£¬uninstallµÈ

3.Bundle

OSGiÖÐËùÓÐÄ£¿éµÄ²¿Êð¶¼±ØÐëÒÔBundle·½Ê½À´½øÐв¿Êð£¬BundleÒÔjar°üÐÎʽ´æÔÚµÄÒ»¸öÄ£¿é»¯ÎïÀíµ¥Ôª£¬ÀïÃæ°üº¬ÁË´úÂë¡¢×ÊÔ´ÎļþºÍÔªÊý¾Ý£¨metadata£©£¬²¢ÇÒjar°üµÄÎïÀí±ß½çҲͬʱÊÇÔËÐÐʱÂß¼­Ä£¿éµÄ·â×°±ß½ç¡£

Õâ¸öjarºÍÆÕͨjarΨһ²»Í¬µã¾ÍÊÇMANIFEST.MF£¬¹ØÓÚBundleµÄËùÓÐÐÅÏ¢¶¼ÔÚÆäÀïÃæ½øÐÐÁËÃèÊö£¨ÈçBundleÃû³Æ¡¢ÐèÒªµ¼ÈëµÄ°ü£¬Êä³öµÄ°üµÈ£©£¬¹Ù·½³ÆÎªbundleµÄÔªÊý¾Ý¡£

3.1 Àà¼ÓÔØ»úÖÆ

ÔÚʹÓÃÒ»¸öbundle֮ǰ£¬±ØÐë¶Ô¹²ÏíµÄ°üÖ®¼äµÄÔ¼Êø¹ØÏµ½øÐнâÎö¡£½âÎö¹ý³Ì¾ÍÊÇÈ·¶¨µ¼Èë°üÈçºÎÁ¬½Óµ½µ¼³ö°ü¡£½âÎö¹ý³Ì±ØÐëÔÚbundleÖÐÈκδúÂë¼ÓÔØ»òÔËÐÐ֮ǰ¡£

ÔÚ¶àÊýJavaÓ¦ÓÃÖУ¬Í¨³£ÊÇÓÉÒ»¸öClass LoaderÀ´¼ÓÔØËùÓеÄÀàºÍ×ÊÔ´Îļþ£¬¶øÔÚOSGiÄ£¿é²ãÖУ¨Ò»¸öÄ£¿é¾ÍÊÇÒ»¸öBundle£©ÔòΪÿ¸öÄ£¿éÌṩÁ˸÷×ÔµÄClass Loader£¬´Ó¶ø±£Ö¤ÁËÄ£¿éµÄ±ÕºÏ£¬Í¬Ê±ÎªÄ£¿éµÄ¹ØÁªÌṩ¿ØÖÆ

3.2 ÉúÃüÖÜÆÚ

Bundleͨ¹ýʵÏÖBundleActivator½Ó¿ÚÈ¥¿ØÖÆÆäÉúÃüÖÜÆÚ

3.2.1 BundleÁùÖÖ״̬

1£©installed£ºBundleÒѾ­³É¹¦°²×°

2£©resolved£ºBundleËùÐèÒªµÄÀà¶¼ÒѾ­¿ÉÓÃÁË£¬¸Ã״̬±íÃ÷BundleÒѾ­×¼±¸ºÃÁËÓÃÓÚÆô¶¯»òÕß˵BundleÒѾ­±»Í£Ö¹

3£©starting£ºBundleÕýÔúÆðÆô¶¯ÖУ¬BundleActivatorµÄstart·½·¨ÒѾ­±»µ÷Óò»¹ý»¹Ã»·µ»Ø

4£©active£ºBundleÒÑÆô¶¯£¬²¢ÔÚÔËÐÐÖÐ

5£©stopping£ºBundleÕýÔÚÍ£Ö¹ÖУ¬BundleActivatorµÄstop·½·¨ÒѾ­±»µ÷Ó㬲»¹ý»¹Ã»·µ»Ø

6£©uninstalled£ºBundleÒѾ­±»Ð¶ÔØÁË

APIÓÉÒÔÏÂÈý¸öºËÐĽӿÚ×é³É

1£© BundleActivator£º²¶×½µ½bundleµÄstartºÍstopʼþ

2£© BundleContext£ºÒ»¸öbundleÔÚ¿ò¼ÜÖеÄÖ´ÐÐʱÉÏÏÂÎÄ£¬µ±Æô¶¯»òÍ£Ö¹Ò»¸öbundleµÄʱºò£¬¿ò¼Ü½«Ëü·¢Ë͵½Ò»¸öbundleµÄ¼¤»îÆ÷

3£© Bundle£º°üº¬bundle»ù±¾ÐÅÏ¢ºÍbundleÉúÃüÖÜÆÚµÄ¿ØÖƽӿÚ

3.3 BundleÒýÓÃ

BundleÊǸö¶ÀÁ¢¸ÅÄÔÚOSGi¿ò¼ÜÖжÔÓÚÿ¸öBundle²ÉÓõÄÊǶÀÁ¢µÄclassloader»úÖÆ£¬ÕâÒ²¾ÍÒâζ×Ų»ÄܲÉÓô«Í³µÄÒýÓÃÆäËûBundle¹¤³ÌÀ´ÊµÏÖBundle¼äµÄЭ×÷£¬

3.1.1 ¶¨ÒåÊä³öµÄ°üÒÔ¼°ÒýÓõİü

ÿ¸öBundle¿ÉÒÔ¶¨ÒåÊä³öµÄ°üÒÔ¼°ÒýÓõİü£¬ÕâÑùÔÚBundle¼ä¾Í¿ÉÒÔ¹²Ïí°üÖеÄÀ࣬µ«ÔÚOSGi¡¢¿ò¼ÜÖиüÍÆ¼ö²ÉÓÃService·½Ê½¡£

3.1.2 Service·½Ê½

Bundleͨ¹ýBundleContext×¢²á¶ÔÍâÌṩµÄ·þÎñ£¬Í¬ÊÂÒ²¿ÉÒÔͨ¹ýBundleContextÀ´»ñµÃÐèÒªÒýÓõķþÎñ¡£

3.1.3 BundleÏ໥µ÷ÓÃ

Á½¸öbundle»¥ÏàÒýÓöԷ½µÄ°ü»á±¨´í£¨Ñ­»·ÒýÓã©£¬ÏîÄ¿»á³öÏÖºìÉ«¸Ð̾ºÅ

3.4 ÈýÖÖÌØÊâµÄBundle

3.4.1 Require Bundles

²¢²»ÌØÊ⣬ֻÊÇ¿ÉÒÔÖ±½Ó±»ÆäËûBundleͨ¹ýRequire-BundleÀ´Ê¹ÓõÄBundle

3.4.2 Fragment Bundles

±¾Éí²»ÓµÓжÀÁ¢µÄclassloader£¬¿ÉÒÔ¿´³ÉÊÇBundleµÄÒ»ÖÖ¸½Êô£¬Æ¬¶Î¡£Æ¬¶ÎµÄ¹Ø¼üÓÃ;ÊÇÌṩ²»Í¬ÇøÓòµÄ·­ÒëÎļþ£¬ÕâÑù¾Í¿ÉÒÔʵÏÖ·­ÒëÎļþ´ÓÖ÷ÒªÓ¦ÓõÄbundleÖжÀÁ¢³öÀ´¡£¿ÉÒÔÓÃÀ´¿äÕÅhost bundleµÄ¹¦ÄÜ£¬×öһЩbundleµÄÒÀÀµÀà

--> New Fragment Project

Æô¶¯ºó»á·¢ÏÖÆ¬¶Î²»Äܹ»×Ô¼ºÆô¶¯

Ö÷Bundle´úÂ룺


public class Activator implements BundleActivator {
// È¥¶ÁÅäÖÃÎļþ£¬Ä¬ÈϾÍÊǶÁÖ÷°¡£¬ÎªÊ²Ã´ÍøÉÏ»á˵´Ó»á¸²¸ÇµôÖ÷ÄØ£¿£¿£¿
public void start (BundleContext context) throws Exception {
InputStream is = Activator.class.getResourceAsStream ("/META-INF/ myConfig.properties");
Properties properties = new Properties();
properties.load(is);
System.out.println ("name"+properties.getProperty ("name"));
}

public void stop (BundleContext context) throws Exception {
System.out.println ("Goodbye World!!");
}
}

 
   
3919 ´Îä¯ÀÀ       30
Ïà¹ØÎÄÕÂ

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»ù´¡±à³Ìµ½Ó¦Óÿª·¢