Vra

Wat maak'n module/diens/bietjie van die aansoek funksionaliteit'n besonder goeie kandidaat vir'n OSGi module?

Ek is geïnteresseerd in die gebruik van OSGi in my aansoeke.Ons is'n Java winkel en ons gebruik Lente redelik omvattend, so ek leun die rigting van die gebruik van Lente Dinamiese Modules vir OSGi(tm) Diens Platforms.Ek is op soek na'n goeie manier om te neem'n bietjie van die OSGi in'n aansoek om so'n verhoor.Het iemand hier gebruik hierdie of'n soortgelyke OSGi tegnologie?Is daar enige slaggate?

@Nicolas - Dankie, ek het gesien dat een.Dit is'n goeie handleiding, maar ek is op soek na meer vir idees oor hoe om dit te doen my eerste "regte" OSGi bundel, eerder as om'n Hello World voorbeeld.

@david - Dankie vir die link!Ideaal gesproke, met'n greenfield app, wil ek ontwerp om die hele ding te wees dinamiese.Wat ek soek vir nou, al is, is om dit te stel in'n klein stukkie van'n bestaande aansoek.Die veronderstelling ek kan haal'n stuk van die app, wat is'n paar faktore om te oorweeg wat sal maak dat die stuk beter of slegter as'n OSGi guinee vark?

Was dit nuttig?

Oplossing

Goed, want jy kan nie een deel OSGi en een deel nie-OSGi sal jy nodig het om jou hele app OSGi.In sy eenvoudigste vorm jy'n enkele OSGi bundel uit jou hele aansoek.Dit is duidelik dat hierdie is nie'n beste praktyk, maar dit kan nuttig wees om'n gevoel te kry vir die implementering van'n bundel in'n OSGi houer (Equinox, Felix, Knoplerfish, ens).

Om dit te neem na die volgende vlak wat jy sal wil hê om te begin verdeel jou app in komponente, komponente moet gewoonlik'n stel van die verantwoordelikhede wat geïsoleer kan word van die res van jou aansoek deur middel van'n stel van koppelvlakke en klas afhanklikhede.Die identifisering van hierdie suiwer met die hand kan wissel van redelik eenvoudig vir'n goed ontwerpte hoogs samehangende maar losweg tesame aansoek om'n nagmerrie vir gevries bron-kode wat jy nie vertroud is met.

Sommige hulp kan kom van gereedskap soos JDepend wat kan wys dat jy die koppeling van Java pakkette teen ander pakkette/klasse in jou stelsel.'n pakket met'n lae efferente koppeling moet makliker wees om te onttrek in'n OSGi bundel as een met'n hoë efferente skakel.Selfs meer argitektoniese insig kan met pro tools soos Struktuur 101.

Suiwer op'n tegniese vlak, werk daagliks met'n aansoek dat die bestaan van 160 OSGi bundels en met behulp van die Lente DM ek kan bevestig dat die oorgang van die "normale" Lente tot die Lente DM is grootliks pyn gratis.Die ekstra namespace en die feit dat jy kan (en moet) isoleer jou OSGi spesifieke Lente opset in aparte lêers maak dit selfs makliker om beide met en sonder OSGi ontplooiing scenario's.

OSGi is'n diep en wye komponent model, dokumentasie ek beveel aan:

  • OSGi R4 Spesifikasie:Kry die PDFs van die Kern en Samevatting spesifikasie, hulle is die kanonieke, gesaghebbende en baie leesbare.'n kortpad na hulle handig te pas ten alle tye, jy sal raadpleeg hulle.
  • Lees op OSGi beste praktyke, daar is'n groot versameling van die dinge wat jy kan doen nie, maar'n ietwat kleiner stel van die dinge wat jy moet doen en daar is'n paar dinge wat jy moet nooit doen (DynamicImport:* vir voorbeeld).

'n paar skakels:

Ander wenke

Wanneer leer 'n nuwe tegnologie ryk gereedskap kry jy in dinge sonder groot hoofpyn. Op hierdie punt die gemeenskap by ops4j.org bied 'n ryk toolset genoem "PAX" wat sluit in:

  • Pax Runner : Begin en wissel tussen Felix, Equinox, Knopflerfish en Concierge maklik
  • Pax Konstrueer : Bou, Organiseer & Build OSGi projekte met Maven maklik
  • Pax Drone : Toets jou OSGi bundels met Junit terwyl raamwerk onafhanklike (gebruik PaxRunner)

Dan is daar baie implementering van OSGi versameling dienste:

  • Pax Teken (meld),
  • Pax Web (http diens),
  • Pax Web Uitgebreide (oorlog ondersteuning),
  • Pax Coin (opset),
  • Pax Shell (dop implementering, deel van die volgende OSGi release)
  • en nog baie meer.

.. en daar is 'n nuttige, raamwerk Independend gemeenskap, - maar dis nou advertensie ;-)

Dit antwoord kom byna 3 jaar na die vraag gevra, maar die skakel ek net gevind is regtig 'n goeie , veral vir beginners met behulp van Maven. 'N stap-vir-stap verduideliking.

Is jou bestaande aansoek monolitiese of toegeroep in aparte prosesse / lae?

As toegeroep, kan jy die middelste / app-vlak uit te voer in 'n OSGi houer sit.

In ondervinding my span se, het ons probeer om web-dinge doen in OSGi pynlik gevind. Ander pyn punte is Hibernate en Jakarta Commons Logging.

Ek vind die OSGi specs mooi leesbaar en ek beveel aan dat jy die druk van die vloeidiagram wat die algoritme vir klas laai toon. Ek sal verseker jy dat jy oomblikke van, het "hoekom kry ek 'n NoClassDefFoundError?":. Die vloeidiagram sal jou vertel hoekom

Probeer http://neilbartlett.name/blog/osgibook/ . Die boek het die hande aan voorbeelde met OSGi beste praktyke.

Probeer http://njbartlett.name/files/osgibook_preview_20091217.pdf

OR

http://www.manning.com/hall/

Die tweede is nie 'n boek wat ek het myself lees, maar ek het 'n goeie dinge gehoor oor dit.

Die eerste was baie nuttig vir my. Hy neem jou deur die argitektuur aanvanklik en dan is dit hande op OSGi.

Daar is 'n paar dink in gedagte te hou as jy begin met OSGi.

Soos elders genoem in hierdie draad, met die wete oor classloading is regtig belangrik. In my ervaring almal vroeër of later loop in probleme met dit.

Nog 'n belangrike ding om te onthou is: nooit verwysings hou! Het jy 'n blik op die witbord patroon waarop die dienste konsep van OSGi is bou (sien die skakel in een van die ander antwoorde).

In my ervaring wat jy moet nie probeer om 'n monolitic aansoek te omskep in 'n OSGi-gebaseerde een. Dit lei gewoonlik tot 'n swak en onbeheerbaar gemors. Begin van nuuts af.

Laai een van die vrylik beskikbaar losstaande OSGi implementering. Ek het gevind dat Knopflerfish eerder goeie en stabiele (ek gebruik dit in talle projekte). Dit kom ook met baie van die bron-kode. Jy kan dit hier vind: http://www.knopflerfish.org

Nog 'n goeie handleiding kan hier gevind word. https://pro40.abac.com/deanhiller/cgi-bin/ moin.cgi / OsgiTutorial

Peter Kriens van die OSGi Alliansie het 'n lekker onderhoud: http: // www. infoq.com/interviews/osgi-peter-kriens . Sy tuisblad en blog (wat altyd 'n goeie lees kan gevind word hier: http://www.aqute.biz

Ek het regtig soos die Apache Felix tutoriale . Maar ek dink in die algemeen benutting OSGi in jou aansoek is nie een van daardie "Kom ons gebruik hierdie raamwerk, want dit is hype" besluit. Dit is meer van 'n ontwerp vraag, maar dan is alles wat OSGi gee jou in terme van ontwerp, kan jy met vanielje Java hê.

As vir die runtime, jy kan nie net voeg 'n bestaande aansoek en maak dit OSGi aangeskakel. Dit moet wees ontwerp om dinamiese wees. Lente DM maak dit maklik om weg te steek wat van jou, maar dit is nog steeds daar en wat jy nodig het om bewus te wees van dit.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top