איר שוין האָבן דיין ווייכווארג אין פּלאַץ, אָבער איר נאָך דאַרפֿן אַ מער עפעקטיוו אופֿן צו געבן דיין טעכניש ניצערס צו יקספּאַנד די פּלאַטפאָרמע.
כאָטש OSGi איז באַוווסט פֿאַר רובֿ Java דעוועלאָפּערס, ינאַגרייטינג עס אין דיין פּראָדוקט קען ויסקומען ווי אַ דאָנטינג אַרבעט. די פעלן פון קלעריטי וועגן OSGi ס גענוי ווערקינגז ווייַטער מאַדדאַלז די וועג פאָרויס.
אין קאַנטראַסט צו עפּעס זיי וואָלט ווי צו עקספּערימענט מיט, OSGi פילז מער ווי טריינג צו זעגל די ברייט ים צו פילע Java דעוועלאָפּערס.
דער אַרטיקל וועט באַקענען איר מיט די OSGi Felix פרילינג טוטאָריאַל מיט אַ פּשוט פּראָגראַם און דורכגיין די אַדוואַנטידזשיז און אנדערע וויכטיק דעטאַילס.
אַזוי וואָס איז OSGi?
שאפן און דיסטריביוטינג מאַדזשולז און קאַמפּאָונאַנץ איז מעגלעך דורך די Java פריימווערק באַוווסט ווי OSGi (Open Service Gateway Initiative).
עס עמפאַסייזיז פונקציע ענקאַפּסולאַטיאָן און פרייַ קאַפּלינג, וואָס אָפפערס עטלעכע אַדוואַנטידזשיז צו דעוועלאָפּערס, אַרייַנגערעכנט מאַדזשאַלער פאַנגקשאַנאַליטי וואָס איז גרינג טראַנספעראַבאַל צווישן מקור קאָודז און טעסטינג וואָס טוט נישט דאַרפֿן אַנענדינג דיפּענדאַנסיז.
ווי אַרבעט OSGi?
א דינאַמיש קאָמפּאָנענט סיסטעם פֿאַר Java איז דיפיינד דורך אַ סכום פון ספּעסאַפאַקיישאַנז גערופן OSGi. די ספּעקס געבן אַ אַנטוויקלונג צוגאַנג ווו אַ אַפּלאַקיישאַן איז געבויט פון אַ נומער פון פּאַרץ און דעמאָלט פּאַקידזשד אין באַנדאַלז.
לאקאלע און נעץ-באזירט באַדינונגס זענען געניצט דורך די קאַמפּאָונאַנץ צו יבערגעבן. דער ציל איז צו מאַכן די האַרץ קאָד פון די פּראָגראַם ווי סאָליד ווי מעגלעך. הויך קאַפּלינג צווישן דעם קאָד און עטלעכע קאַמפּאָונאַנץ איז מעגלעך.
די ריוזאַבאַל בנין עלעמענטן פון די אַפּלאַקיישאַן זענען גערופֿן קאַמפּאָונאַנץ. טראַכטן וועגן פֿעיִקייטן ווי אַ שאַפּינג וואָגן פֿאַר דיין E- האַנדל וועבזייטל אָדער אַ פּייראָול אַפּלאַקיישאַן פֿאַר דיין שטעקן פאַרוואַלטונג סיסטעם.
קאַמפּאָונאַנץ קענען נוצן OSGi צו באַהאַלטן זייער ימפּלאַמאַנץ פון אנדערע קאַמפּאָונאַנץ און בלויז צושטעלן די נייטיק דאַטן צו זיי דורך באַדינונגס.
דאָס פּריווענץ קאַמפּאָונאַנץ פון אַנינטענשאַנאַל טשאַנגינג דאַטן וואָס זיי זאָל נישט האָבן צוטריט צו און מאַנידזשיז דיפּענדאַנסיז.
כל קאַנעקשאַנז צווישן קאַמפּאָונאַנץ אין אַן OSGi אַפּלאַקיישאַן זענען געמאכט דורך באַדינונגס אין אַן אידעאל וועלט. א Java פּעקל כּולל די API וואָס איז ספּעסיפיעד פֿאַר סערוויסעס.
די מיטאַרבעט צווישן סערוויס פּראַוויידערז און קאַסטאַמערז ריקווייערז די נוצן פון קלאסן און / אָדער ינטערפייסיז, וואָס מאַכן די API.
אַלע די OSGi קאַמפּאָונאַנץ זענען פּאַקידזשד צוזאַמען אין באַנדאַלז, יעדער פון וואָס כולל די רעסורסן זיי דאַרפן צו פונקציאָנירן. בונדלעס זענען גאַנץ קלאָר וועגן וואָס זיי דאַרפֿן פון די סוויווע און וואָס זיי זענען טויגעוודיק פון.
בענעפיץ
- OSGi אַפּלאַקיישאַנז האָבן אַקסעס צו פונדרויסנדיק פּעקל ריפּאַזאַטאָריז.
- די פריימווערק אַלאַוז דינסט-אָריענטיד פּלאַן אויף די מאָדולע מדרגה.
- עס מאכט עס מעגלעך צו פירן די ווערסיעס און דיפּענדאַנסיז פון אַפּלאַקיישאַן באַנדאַלז אין אַדישאַן צו סטאַנדערדייזינג און מאַכן עס גרינגער צו ויסשטימען דריט-פּאַרטיי לייברעריז.
- אַפּפּליקאַטיאָנס זענען מער אַדאַפּטאַבאַל צו טשאַנגינג פאדערונגען, מער פּאָרטאַטיוו און פאַסטער צו ריינדזשינג.
- A וועב אַפּלאַקיישאַן קענען זיין דיפּלויד ווי אַ גרופּע פון ווערסיעס פון OSGi באַנדאַלז מיט אַ דינאַמיש לעבן דאַנק צו די ינאַגריישאַן פון די פריימווערק מיט די Java EE פּראָגראַממינג מאָדעל.
- אַנשטאָט צו זיין אינסטאַלירן ווי אַ דריט-פּאַרטיי ביבליאָטעק ווי אַ טייל פון דער אַפּלאַקיישאַן, די פריימווערק גיט די דעקלאַראַטיווע פֿאַרזאַמלונג און סטרימליינד אַפּאַראַט טעסטינג פון די ספּרינג פראַמעוואָרק אין אַ סטאַנדערדייזד פאָרעם וואָס איז צוגעשטעלט ווי אַ טייל פון די אַפּלאַקיישאַן סערווער רונטימע.
- די פריימווערק אָפפערס אפגעזונדערטקייט פֿאַר פֿירמע אַפּלאַקיישאַנז וואָס זענען קאַמפּרייזד פון עטלעכע ווערסיעס פון באַנדאַלז מיט דינאַמיש ליפעסייקאַלז.
- עס כּולל אַ ינאַגרייטיד פּעקל ריפּאַזאַטאָרי וואָס קענען קראָם שערד פּראָסט און ווערסיע פון באַנדאַלז געניצט דורך עטלעכע אַפּלאַקיישאַנז, פּרעווענטינג יעדער אַפּלאַקיישאַן פון דיפּלייינג אַ באַזונדער קאָפּיע פון יעדער שערד ביבליאָטעק.
אָנהייב מיט OSGi Felix פרילינג
באַקומען די רעסורסן
דורך דאַונלאָודינג די לעצטע ווערסיע פון Apache Karaf פֿון דעם פּלאַץ, מיר קענען אָנהייבן אונדזער OSGi פּאַסירונג.
באַזירט אויף Apache Felix, די Apache ימפּלאַמענטיישאַן פון די OSGi באַשרייַבונג, Apache Karaf גיט אַ פּלאַטפאָרמע פֿאַר OSGi-באזירט אַפּלאַקיישאַנז.
קאַראַפ פּראָווידעס פאַרשידן נוציק פֿעיִקייטן אויף שפּיץ פון Felix וואָס וועט העלפֿן אונדז צו באַקענען זיך מיט OSGi, אַזאַ ווי אַ באַפֿעל שורה צובינד וואָס וועט לאָזן אונדז צו יבערגעבן מיט די פּלאַטפאָרמע.
פּאָזיציע פונט פֿאַר בונדלעס
אַ אַפּלאַקיישאַן מוזן זיין פּאַקידזשד ווי אַ OSGi פּעקל איידער עס קענען זיין לויפן אין אַ OSGi סוויווע. אַדדיטיאָנאַללי, די אַפּלאַקיישאַן פּאָזיציע פונט מוזן זיין ספּעסיפיעד; עס איז נישט די סטאַנדאַרט עפנטלעך סטאַטיק פּאָסל הויפּט (סטרינג [] אַרגס) פֿונקציע.
לאָמיר אָנהייבן מיט שאַפֿן אַ "העלא וועלט” אַפּלאַקיישאַן באזירט אויף OSGi.
מיר אָנהייבן מיט גרינדן אַ יקערדיק OSGi API דעפּענדענסי:
די OSGi רונטימע וועט האָבן אַקסעס צו די דעפּענדענסי, דעריבער דער פּעקל דאַרף עס נישט אַנטהאַלטן. דעריבער, עס איז אנגעצייכנט ווי סאַפּלייד.
איצט לאָזן אונדז מאַכן די סטרייטפאָרווערד HelloWorld קלאַס:
קלאסן וואָס שפּילן ווי פּאָזיציע פונקטן פֿאַר באַנדאַלז מוזן ינסטרומענט די OSGi-צוגעשטעלט BundleActivator צובינד.
ווען דער פּעקל מיט דעם קלאַס איז לאָנטשט, די OSGi פּלאַטפאָרמע רופט די אָנהייב () פֿונקציע. אויף די אנדערע זייַט, באַלד איידער די פּעקל איז סטאַפּט, די פֿונקציע סטאָפּ () איז גערופן.
לאָמיר נישט פאַרגעסן אַז יעדער פּעקל קענען בלויז האָבן איין BundleActivator. ביידע וועגן קענען יבערגעבן מיט די OSGi רונטימע ניצן די BundleContext כייפעץ וואָס איז געגעבן.
שאַפֿן אַ פּעקל
מאַכן די pom.xml אַ אמת אָסגי פּעקל דורך מאַכן די נייטיק ענדערונגען.
מיר מוזן ערשטער אויסדריקן קלאר אַז אונדזער ציל איז צו פּראָדוצירן אַ פּעקל.
דערנאָך, מיר נוצן די מאַווען-בונדלע-פּלוגין צו פּעקל די HelloWorld קלאַס ווי אַ OSGi פּעקל, העפלעכקייַט פון די Apache Felix קהל:
די וואַלועס פון די OSGi כעדערז וואָס מיר וועלן צו אַרייַננעמען אין די MANIFEST טעקע פון דעם פּעקל זענען ספּעסיפיעד אין די ינסטראַקשאַנז אָפּטיילונג.
Bundle-Activator איז טאַקע די רעכט קוואַלאַפייד נאָמען פון די BundleActivator לייזונג וואָס וועט זיין געוויינט צו אָנהייבן און האַלטן דעם פּעקל. עס איז קאַמפּאַטאַבאַל מיט די פּונקט באשאפן קלאַס.
כאָטש עס איז נישט אַן OSGi כעדער, די פּריוואַט פּאַקקאַגע כעדער ינסטראַקץ די פּלוגין צו לייגן דעם פּעקל צו די פּעקל אָבער נאָר נישט מאַכן עס צוטריטלעך פֿאַר אנדערע פּלוגינס. די mvn install באַפֿעל זאָל זיין געניצט צו שאַפֿן דעם פּעקל.
ינסטאַלירן און לויפן די פּעקל
לאָמיר אָנהייבן Karaf דורך לויפן דעם באַפֿעל:
ווו "KARAF HOME" רעפערס צו דער טעקע ווו קאַראַף איז געווען שטעלן אַרויף. מיר קענען נוצן די פאלגענדע באַפֿעל צו ינסטאַלירן דעם פּעקל ווען די קאַראַף קאַנסאָול פּינטלעך אויס:
ניצן די היגע Maven ריפּאַזאַטאָרי איז ווי Karaf איז געזאָגט צו לאָדן דעם פּעקל.
קערענדי ק ד י נומעריק ע ײד ן פו ן בינטל , שרײב ט קאראף . דער שייַן קען זיין אַנדערש דיפּענדינג אויף ווי פילע באַנדאַלז האָבן שוין אינסטאַלירן. דער פּעקל איז איצט הצלחה אינסטאַלירן, און דער באַפֿעל צו קאַטער עס איז ווי גייט:
דער מאָמענט איר קאַטער דעם פּעקל, "העלא וועלט דורך דזשיי" דיספּלייז. מיר קענען איצט האַלטן און באַזייַטיקן דעם פּעקל ניצן:
די קאַנסאָול דיספּלייז "זייַעד וועלט דורך דזשיי."
סאָף
דעוועלאָפּערס קענען לייכט לייגן נייַ פאַנגקשאַנאַליטי צו אַ יגזיסטינג וועב אַפּלאַקיישאַן בשעת זיי האַלטן עס זיכער און אפגעזונדערט פון אנדערע קאַמפּאָונאַנץ פון די הויפּט פּראָגראַם מיט OSGi.
מיר האָבן געלערנט וועגן OSGi אין דעם פּאָסטן, אַרייַנגערעכנט ווי עס פאַנגקשאַנז, זייַן אַדוואַנטידזשיז און אַ סטרייטפאָרווערד פּראָגראַם. עס איז נישט שווער צו ינקאָרפּערייט OSGi אין דיין אייגענע אַפּלאַקיישאַן.
גליקלעך קאָדירונג!
לאָזן אַ ענטפֿערן