Webes aktiválású frissítések

Az Eclipse frissítéskezelő az Eclipse frissítési helyek megjósolható módon végzett feldolgozására használható. Egy frissítési hely három nézetben megjelenített kategóriákat tartalmaz, ezek a kategóriák pedig szolgáltatásokat tartalmazhatnak. A szolgáltatások az Előkép nézetben vizsgálhatók a frissítéskezelőn belül. Ha a szolgáltatás érvényes jelölt a telepítésre, tartalmazni fog egy "Azonnali telepítés" gombot, amely elindítja az Eclipse telepítő varázslót. A telepítési feladat befejezésekor a szolgáltatás a termék része lesz.

A szolgáltatások telepítésre megjelenítésének ez a szabványos módja nem az egyetlen módszer. A szolgáltatók átvehetnek megjelenítési, regisztrációs, keresési és más feladatokat a frissítéskezelőtől, és megtehetik, hogy csak akkor adják vissza a vezérlést, amikor ténylegesen telepíteni kell egy szolgáltatást egy Eclipse termékbe.

A frissítéskezelő képes egy olyan kiszolgáló kisalkalmazás futtatására, amely el tudja fogadni a weboldalakról érkező kéréseket. Ez a lehetőség nem automatikus: aktiválni kell a Beállítások>Telepítés/frissítés >Webes aktiválású frissítések oldalon. Az OK gomb megnyomásakor a frissítéskezelő aktiválni fogja a bejövő kéréseket kezelő alkalmazáskiszolgálót. Ezután minden, a frissítéskezelőn belülről megnyitott URL-be belekódolásra kerül a visszahívási URL információ. Ha a kiinduló URL egy weboldal, a kóddal ellátott URL rendelkezni fog egy lekérdezési résszel, amely kiegészíti azt a visszahívási URL-címmel az Eclipse meghívásához:

A http://acme.com/myApplication.html

címből a következő lesz:

http://acme.com/myApplication.html?updateURL=<localhost>:<localport>?org.eclipse.update/install

(ahol a 'localhost' a helyi gépen futó Eclipse kiszolgáló címe, a 'localport' a kiszolgáló indításakor dinamikusan kiválasztott helyi port, a lekérdezés az Eclipse webalkalmazás neve és a kérést kezelő kiszolgáló kisalkalmazás neve.

Ha az eredeti URL már egy lekérdezés:

http://acme.com/myApplication/myServlet?arg1=value1&arg2=value2

a kód egyszerűen hozzáadja az Ön információját, mint egy másik paramétert.

http://acme.com/myApplication/myServlet?arg1=value1&arg2=value2&updateURL=<localhost>:<localport>?org.eclipse.update/install

A kódot a normál weboldalak és lekérdezések figyelmen kívül hagyják, az semmilyen problémát nem okoz és nem befolyásolja a megjelenítést. Ez mindössze információkat ad meg, amelyeket az erről tudó oldalak felhasználhatnak.

Mivel egy weboldalt a frissítéskezelőből kell indítani, a hely Frissítések nézetben látható könyvjelzői webes könyvjelzőkként hozhatók létre. A frissítéskezelő ennek megfelelően kezeli ezeket a könyvjelzőket, és amikor valamelyikre duplán rákattint, akkor megnyitja az URL-címet egy böngészőben (ha az operációs vagy ablakrendszer verzióban van beépített böngésző, akkor ez nyílik meg közvetlenül a frissítéskezelőn belül; ellenkező esetben a rezidens böngésző ablakát nyitja meg).

Weboldalon végrehajtható feladatok

A szolgáltatók bárhogy beállíthatják weboldalaikat, ahogy csak szeretnék: használhatnak gondosan kimunkált webalkalmazásokat, amelyek mögött adatbázisok állnak, vagy egyszerű, statikus HTML-t. Az összetettebb architektúrák használatával nagyobb értéket kínálhatnak a vásárlóknak. Az új szolgáltatások, frissítések, e-javítások összetett keresése, a kijelölt szolgáltatások vizuális megjelenítése, a funkcionalitásukról szóló cikkek, a különféle hasznos hivatkozások, a 'legnépszerűbb szolgáltatás' szavazások csak néhány a lehetőségek közül. Emellett a szolgáltatók engedélyezhetik a hitelesítést bizonyos szolgáltatások elérésének korlátozására, megkövetelhetik a felhasználói regisztrációt stb.

Az Eclipse meghívása egy weboldalról

Számos különféle módszer létezik a kódolt információk kinyerésére. Az egyik nagyon egyszerű az alább bemutatott Java parancsfájl használata:

<SCRIPT LANGUAGE="JavaScript">

function getArgs() {
   var args = new Object();
   var query = location.search.substring(1);
   var pairs = query.split("&");
   for (var i=0; i<pairs.length; i++) {
      var pos = pairs[i].indexOf('=');
      if (pos == -1) continue;
      var argname = pairs[i].substring(0, pos);
      var value = pairs[i].substring(pos+1);
      args[argname] = unescape(value);
   }
   return args;
}
</SCRIPT>

A fenti függvény értelmezi az aktuális oldal URL-címét, és visszaadja a lekérdezési paramétereket egy tömb formájában.

A visszahívási URL szerepe az, hogy használatával a weboldalak visszaadhatják a vezérlést az Eclipse-nek. Ha egyszer a felhasználó kijelölt egy szolgáltatást a telepítéshez, vissza kell adnia az Eclipse-nek a végrehajtást. A webes aktiválású frissítés nem teszi elavulttá a frissítési helyeket: ezekre továbbra is szükség van, de ebben a példahelyzetben egyszerűen csak a szolgáltatások fizikai tárolási helyeként szerepelnek. A weboldalaknak néhány ponton vissza kell hívniuk az Eclipse-be, és átadni a frissítési hely URL-jét, valamint a kijelölt szolgáltatásazonosítót és verziót. Ez az információ kódolásra kerül az eredeti visszahívási URL használatával és hozzáadódnak a paraméterek, így egy lekérdezést alakítva ki.

A visszahívási lekérdezés paraméterei:

Az Eclipse-be visszahívásnak már végre kellett hajtódnia, amikor a felhasználó befejezte a kijelöléseket a weboldalon, és már csak valamilyen 'Letöltés' gombra vagy hiperhivatkozásra kattintás marad hátra. Egy egyszerű implementáció lehet ezzel a képességgel a következő:

<input type="button" 	name="Download" value="Download" 
			onClick="javascript:download('com.example.root', '1.0.0')">

A fenti kódban a szolgáltatásazonosító és a verziók 'bele vannak drótozva' a gombcímkébe.

A letöltési szolgáltatások a következőképpen valósíthatók meg:

function download(id, version) {
   var args = getArgs();
   if (args.updateURL) {
      var updateURL = args.updateURL;
      var callback = updateURL+"?server=
      "+escape("http://acme.com/updateSite/")+
      "&feature="+escape(id+'_'+version)+"&backURL="+escape(location);
      location = callback;
   }
}

A fenti JavaScript szolgáltatásban az oldal URL-be kezdetektől bekódolt visszahívási URL használatával alakul ki a lekérdezés. Ha a lekérdezés létrejött, a böngésző felkérésre kerül annak megnyitására. Ez a lépés azt okozza, hogy a böngésző meghívja az Eclipse kiszolgáló kisalkalmazást, amely feldolgozza a lekérdezést, kapcsolódik a szolgáltató frissítési helyéhez (jelen esetben: "http://acme.com/updateSite/"), és megkeresi a megadott azonosítójú és verziójú szolgáltatást. Ha minden rendben megy, feljön az Eclipse ablaka és megnyílik az ismerős telepítővarázsló. Ezen a ponton Ön visszakerül az Eclipse-be, és a szokásos módon fejezheti be a telepítést.

Fontos rámutatni, hogy ennek a kódolt visszahívási URL-nek a megléte döntő fontosságú a teljes mechanizmus szempontjából. Ha a 'letöltési' hivatkozást vagy gombot tartalmazó oldal néhány szint mélységben helyezkedik el a webhelytérképen, a gyökér weboldalnak (a frissítéskezelőből elindítottnak) kell biztosítani, hogy a visszahívási URL minden, az abból az oldalból megnyitott oldalnak átadásra kerüljön. Ez többféle módon is megvalósítható (közvetlen kódolás az oldalon, ideiglenes cookie, tárolás egy kiszolgáló kisalkalmazásban, amely kiszolgálja az oldalakat a helyről stb.)..