Menedżer aktualizacji platformy Eclipse umożliwia wyświetlanie i przeglądanie serwisów aktualizacji platformy Eclipse w sposób przewidywalny. Serwis aktualizacji może zawierać kategorie (wyświetlane w widoku drzewa) zawierające składniki. Przeglądanie składników jest możliwe w widoku Podgląd w menedżerze aktualizacji. Jeśli składnik jest poprawnym elementem do zainstalowania, będzie zawierał przycisk "Install Now" (Instaluj teraz) umożliwiający uruchomienie kreatora instalacji platformy Eclipse. Po zakończeniu instalacji składnik będzie częścią produktu.
Ten standardowy sposób prezentowania składników dostępnych do instalacji nie jest jedyny. Dostawcy mogą przejąć od menedżera aktualizacji czynności związane z prezentowaniem, rejestrowaniem, wyszukiwaniem itp., a następnie zwracać mu kontrolę nad procesem instalacji w momencie rzeczywistej instalacji składnika dla produktu Eclipse.
Menedżer aktualizacji może uruchamiać serwlet akceptujący żądania stron sieci WWW. Ta możliwość nie jest aktywowana automatycznie. Należy ją aktywować na stronie Preferencje>Instalowanie/aktualizowanie>Aktualizacje wyzwalane z sieci WWW. Po kliknięciu przycisku OK menedżer aktualizacji aktywuje serwer aplikacji, który może obsługiwać żądania przychodzące. Od tej pory wszystkie adresy URL otwierane z poziomu menedżera aktualizacji będą kodowane z użyciem informacji o adresie URL wywołania zwrotnego. Jeśli początkowy adres URL dotyczy zwykłej strony WWW, zakodowany adres URL będzie uzupełniany o zapytanie z adresem URL wywołania zwrotnego, które pozwala wywołać platformę Eclipse:
http://acme.com/myApplication.html
jest przekształcany w
http://acme.com/myApplication.html?updateURL=<host_lokalny>:<port_lokalny>?org.eclipse.update/install
gdzie host_lokalny to adres serwera Eclipse działającego na danym komputerze, port_lokalny jest wybierany dynamicznie po uruchomieniu serwera, a zapytaniem jest nazwa aplikacji WWW Eclipse i nazwa serwletu obsługującego żądanie.
Jeśli oryginalny adres URL jest już zapytaniem:
http://acme.com/myApplication/myServlet?arg1=value1&arg2=value2
kodowanie spowoduje po prostu dodanie nowych informacji jako kolejnego parametru:
http://acme.com/myApplication/myServlet?arg1=value1&arg2=value2&updateURL=<localhost>:<localport>?org.eclipse.update/install
Kodowanie jest ignorowane przez normalne strony WWW i zapytania, nie powoduje żadnych problemów oraz nie ma wpływu na prezentację. Polega ono jedynie na dodaniu informacji, które mogą być użyteczne dla danej strony.
Ponieważ strona WWW musi być uruchomiona z poziomu menedżera aktualizacji, zakładki serwisów w widoku Aktualizacje mogą być tworzone w formie zakładek sieci WWW. Menedżer aktualizacji odpowiednio interpretuje takie zakładki, a po dwukrotnym kliknięciu jednej z nich otwiera dany adres URL w przeglądarce. Jeśli w przypadku danej wersji systemu operacyjnego i systemu okienkowego dostępna jest osadzona przeglądarka, adres URL zostanie otwarty bezpośrednio w menedżerze aktualizacji. W przeciwnym razie jest on otwierany w oddzielnym oknie przeglądarki.
Dostawcy mogą konfigurować swoje strony WWW aktualizacji w dowolny sposób. Mogą używać złożonych aplikacji WWW opartych na bazach danych lub prostego statycznego kodu HTML. Użycie bardziej złożonej architektury pozwala dostawcom oferować użytkownikom więcej możliwości. Na przykład mogą to być: funkcja zaawansowanego wyszukiwania nowych składników, aktualizacje i poprawki, atrakcyjne prezentacje wybranych składników, artykuły na temat ich funkcjonalności, różne przydatne odsyłacze, rankingi najbardziej popularnych składników itp. Dodatkowo dostawcy mogą włączyć mechanizm uwierzytelniania w celu ograniczenia dostępu do niektórych składników, wymuszania rejestracji użytkowników itd.
Zakodowane informacje można wyodrębnić na wiele różnych sposobów. Bardzo prostym sposobem jest użycie poniższej funkcji napisanej w języku JavaScript:
<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>
Powyższa funkcja analizuje adres URL bieżącej strony i zwraca argumenty zapytania jako tablicę.
Adres URL wywołania zwrotnego umożliwia stronom WWW przekazanie sterowania z powrotem do platformy Eclipse. Gdy użytkownik wybrał już składnik do zainstalowania, musi wrócić do platformy Eclipse w celu dokończenia procesu instalacji. Mechanizm aktualizacji wyzwalanych z sieci WWW nie powoduje, że serwisy aktualizacji są zbędne. W tej sytuacji są one nadal potrzebne, ponieważ używa się ich jako miejsc, w których składniki są fizycznie przechowywane. Strona WWW musi w pewnym momencie wywołać zwrotnie platformę Eclipse i przekazać jej adres URL serwisu aktualizacji razem z identyfikatorem oraz numerem wersji wybranego składnika. Informacje te są kodowane przy użyciu oryginalnego adresu URL wywołania zwrotnego, do którego dodaje się odpowiednie argumenty, tworząc w ten sposób zapytanie.
Argumenty zapytania wywołania zwrotnego:
Wywołanie zwrotne do platformy Eclipse powinno zostać wykonane w momencie, gdy użytkownicy zakończą wybieranie składników na stronie WWW i pozostaje im już tylko nacisnąć odsyłacz lub przycisk pobierania (np. Pobierz). Przykład prostej implementacji takiej funkcji:
<input type="button" name="Download" value="Download" onClick="javascript:download('com.example.root', '1.0.0')">
W powyższym kodzie identyfikator i numer wersji składnika są zapisane na stałe w znaczniku przycisku.
Funkcję pobierania można zaimplementować następująco:
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; } }
W powyższej funkcji JavaScript adres URL wywołania zwrotnego zakodowanego w adresie URL strony jest od początku używany przy tworzeniu zapytania. Po utworzeniu zapytania przeglądarka otrzymuje żądanie otwarcia go. W tym kroku przeglądarka wywoła serwlet platformy Eclipse, który przetworzy zapytanie, nawiąże połączenie z serwisem aktualizacji dostawcy (w tym przypadku jest to "http://acme.com/updateSite/") i odszuka w nim składnik o podanym identyfikatorze i numerze wersji. Jeśli te operacje zakończą się pomyślnie, zostanie wyświetlone okno platformy Eclipse z otwartym kreatorem instalacji. Od tego momentu sterowanie przejmuje platforma Eclipse, a instalację można dokończyć w zwykły sposób.
Należy przy tym pamiętać, że zakodowanie adresu URL wywołania zwrotnego ma kluczowe znaczenie dla całego tego mechanizmu. Jeśli strona zawierająca odsyłacz lub przycisk pobierania znajduje się na jednym z dolnych poziomów hierarchii mapy serwisu aktualizacji, główna strona WWW (czyli strona, do której pierwotnie odwołał się menedżer aktualizacji) musi przekazywać adres URL wywołania zwrotnego do wszystkich otwieranych w ramach niej stron. Można to osiągnąć na wiele różnych sposobów (bezpośrednie kodowanie w ramach strony, zapisywanie tymczasowych informacji cookie, przechowywanie adresu w serwlecie obsługującym strony serwisu itp.).