OSGi-val való további ismerkedés keretében csináltam egy remek Jabber / XMPP OSGI kozol bundle-t. A lényege, hogy nem csak op rendsze parancssorából indított OSGi framework konzoljából pásztorolhatjuk a framework konzolját, hanem Jabberen keresztül is. (Bundle-k listázása, leállítása, stb.)
Egy érdekes dolog, hogy konzolos parancsokhoz nincs szabványos OSGi interface, ezért az összes framework külön talált rá megoldást (én eddig a Felix és az Equinox alá implementáltam a bundlet). Ebben az a szép, hogy a pluginem kódja, az Equinox és a Felix bizonyos osztályaitól is függ fordítás szinten, de futás szinten csak akkor fog ráfutni olyan kódra, ahol Felix specifikus osztályokat használok, ha létezik olyan beregisztrált service (a servicek String névre vannak regisztrálva, a létezés az osztály nélkül is ellenőrizhető). Azt kell mondjam, az OSGi koncepció működik.
Fejlesztéshez a pax-construct maven plugint használtam (Ami használja a Felix bundle plugin-t is). Viszonylag kis szívás volt vele, csak egyszer kezdtem el debugolni, de akkor is kiderült, hogy felesleges volt, a Felix bundle dokumentációját kellett volna jobban átnyálazni. A fenti Classloader-es trükhöz kell ugyanis finomhangolt Import-Package leírót gyártatni, hogy a framework függőségek csak opcionálisak legyenek.
(Zárójeles megjegyzés: amilyen csapnivaló volt a NetBeans 6.1 Beta Maven pluginje, a végleges annyira meggyőző. Pl. most már olyat is tud, hogy ha egy ismeretlen osztályt lát, akkor egy klikkre felajánlja a központi repository-ból azokat az artifactokat, amik tartalmaznak ilyen nevű osztályokat. És mivel már a Glassfish 3 TP és az OpenESB 3 fejlesztés is Maven-be megy, úgy hogy a NetBeans Maven támogatás csak jobb lesz ennél.)
Szóval jó kis játék volt, lehet hogy feltolom Google Code alá. Szinte ugyanannyi ott projektet létrehozni, mint a saját szerveren belőni SVN-t.
Egy érdekes dolog, hogy konzolos parancsokhoz nincs szabványos OSGi interface, ezért az összes framework külön talált rá megoldást (én eddig a Felix és az Equinox alá implementáltam a bundlet). Ebben az a szép, hogy a pluginem kódja, az Equinox és a Felix bizonyos osztályaitól is függ fordítás szinten, de futás szinten csak akkor fog ráfutni olyan kódra, ahol Felix specifikus osztályokat használok, ha létezik olyan beregisztrált service (a servicek String névre vannak regisztrálva, a létezés az osztály nélkül is ellenőrizhető). Azt kell mondjam, az OSGi koncepció működik.
Fejlesztéshez a pax-construct maven plugint használtam (Ami használja a Felix bundle plugin-t is). Viszonylag kis szívás volt vele, csak egyszer kezdtem el debugolni, de akkor is kiderült, hogy felesleges volt, a Felix bundle dokumentációját kellett volna jobban átnyálazni. A fenti Classloader-es trükhöz kell ugyanis finomhangolt Import-Package leírót gyártatni, hogy a framework függőségek csak opcionálisak legyenek.
(Zárójeles megjegyzés: amilyen csapnivaló volt a NetBeans 6.1 Beta Maven pluginje, a végleges annyira meggyőző. Pl. most már olyat is tud, hogy ha egy ismeretlen osztályt lát, akkor egy klikkre felajánlja a központi repository-ból azokat az artifactokat, amik tartalmaznak ilyen nevű osztályokat. És mivel már a Glassfish 3 TP és az OpenESB 3 fejlesztés is Maven-be megy, úgy hogy a NetBeans Maven támogatás csak jobb lesz ennél.)
Szóval jó kis játék volt, lehet hogy feltolom Google Code alá. Szinte ugyanannyi ott projektet létrehozni, mint a saját szerveren belőni SVN-t.
6 megjegyzés:
Ezen a konzol cmd kezelesen en is jol meglepodtem a heten.
Ami nagyon fura meg, hogy maga a konzol sem standart sehol. Mondjuk a 4.1-es OSGi doksi sem viszi tulzasba ezt a reszt.
(104.5.5.1 Configuring A Console Bundle + 104.6.5 Multiple Consoles Example)
Ja es hajra Google Code, kivancsi vagyok nagyon mit alkottal. :)
Két osztály az egész nem nagy truváj. Inkább játszani jó vele.
És felfogom rakni, de most már megint 2 óra van, és holnap reggel megyek a gyárba debugolni.
Ide alakul a dolog
http://code.google.com/p/osgixmppconsole
Tényleg primitív, azért lett belőle projekt, hogy a maven distributionManagement-ben is legyen egy kis gyakorlatom :)
:) lassuklassuk.
Mokas, ez a jabber dolog eszembe sem jutott. Nalam most egy SSL Telnet konzol van osszedobalva, de egyenlore csak equinoxra.
Most jelent meg az ops4j wikijeben:
http://wiki.ops4j.org/confluence/display/ops4j/Pax+Jabber+Console
Megjegyzés küldése