/ / Interakcia Non osgi s osgi zväzkami - struts2, osgi, bundles

Interakcia s Non osgi s osgi zväzkami - struts2, osgi, zväzky

Používam struts2 pre svoju webovú aplikáciu a ichcú používať architektúru osgi pre služby a vrstvu dao. Teraz už nechcem zabaliť svoje akcie struts2 ako zväzky osgi, ale chcem, aby služba a vrstva dao boli balené ako zväzky. Teraz mi môže niekto povedať, ako moje non-osgi akcie môžu spotrebovávať osgi zväzky (služba a vrstva dao). A v tomto prípade chcem nasadiť svoju webovú aplikáciu struts2 vo webovom kontajneri tak, ako bude webový kontajner interagovať s kontajnerom osgi (kde je nasadená moja služba a dao). Prosím pomôžte .

odpovede:

5 pre odpoveď č. 1

Potrebujete tzv. „Most“ medzi webovým kontajnerom a prostredím OSGi. Felix aj Equinox majú túto schopnosť, ale pre mňa bola implementácia Felix omnoho lepšia.

V podstate by ste chceli urobiť:

  • Pridajte poslucháča kontextu do svojho ServletContext
  • Spustením OSGi pri spustení ServletContext ho zastavte, keď dôjde k zničeniu ServletContext.
  • Odošlite ServletContext do kontextu OSGi jeho registráciou ako služby
  • Uložte objekt rámca OSGi do ServletContext tak, že ho zaregistrujete ako atribút.

Takže pre prístup do webového kontextu z OSGi: Vyhľadajte službu ServletContext a choďte odtiaľ.

Prístup k OSGi z webcontext: Načítajte rámec OSGi z atribútu ServletContext a choďte odtiaľ.

Skontrolovať Dokumentácia Felix, tiež som si nejaký čas urobil príklad GitHub


-1 pre odpoveď č. 2

Toto určite nebude fungovať. Prečo si myslíte, že by bolo dobré presunúť polovicu svojej žiadosti do OSGi? Mali by ste presunúť všetko alebo nič.

Možno budete môcť umiestniť vrstvu vzpery dovojnový súbor a prístup k službám OSGi. Myslím si, že je to možné vo Virgo a Apache Karaf. Znamená to posilniť vojnu so štruktúrami OSGi. Napríklad v Karafe môžete použiť súbor wab, ktorý je vojnovým súborom s manifestom.