Eclipse Update Manager를 사용하면 예측 가능한 방식으로 Eclipse 갱신 사이트를 표현하거나 찾아볼 수 있습니다. 갱신 사이트는 트리 보기에 표시되는 카테고리를 포함할 수 있으며, 이 카테고리에는 다시 기능이 포함됩니다. 기능은 Update Manager 내의 미리보기 보기에서 검사할 수 있습니다. 기능이 올바른 설치 후보이면, Eclipse 설치 마법사를 실행할 "설치 시작" 단추를 포함하게 됩니다. 설치 타스크가 완료되면 기능은 제품의 일부가 됩니다.
이러한 표준 방법은 설치할 기능을 표시하기 위한 유일한 방법이 아닙니다. 제공자는 Update Manager에서 프리젠테이션, 등록, 검색 및 기타 타스크를 수행하고 실제로 Eclipse 제품에 기능을 설치할 시간이 된 경우에만 제어를 리턴할 수 있습니다.
Update Manager는 웹 페이지의 요청을 허용할 수 있는 Servlet을 실행할 수 있습니다. 이러한 기능은 자동으로 수행되지 않으므로, 환경 설정>설치/갱신>웹 트리거 갱신 페이지에서 활성화해야 합니다. 확인을 누르면, Update Manager는 수신되는 요청을 처리할 수 있는 응용프로그램 서버를 활성화합니다. 그러면 Update Manager 내에서 열린 모든 URL이 콜백 URL 정보를 사용하여 인코딩됩니다. 초기 URL이 일반 웹 페이지일 경우, 인코딩된 URL은 Eclipse를 호출하기 위해 사용할 다음의 콜백 URL을 추가하는 조회 파트를 갖게 됩니다.
http://acme.com/myApplication.html
위의 URL은 다음과 같이 됩니다.
http://acme.com/myApplication.html?updateURL=<localhost>:<localport>?org.eclipse.update/install
여기서 'localhost'는 로컬 시스템에서 실행 중인 Eclipse 서버의 주소이고, 로컬 포트는 서버가 시작될 때 동적으로 선택되며, 요청을 처리하는 Servlet의 이름과 Eclipse 웹 응용프로그램 이름이 조회됩니다.
원래의 URL을 이미 조회 중인 경우,
http://acme.com/myApplication/myServlet?arg1=value1&arg2=value2
인코딩은 간단히 정보를 다른 매개변수로 추가합니다.
http://acme.com/myApplication/myServlet?arg1=value1&arg2=value2&updateURL=<localhost>:<localport>?org.eclipse.update/install
인코딩은 일반 웹 페이지 및 조회에서 무시되므로 문제점을 야기하거나 프리젠테이션에 영향을 주지 않습니다. 인코딩은 인코딩을 인식하는 페이지에서 사용할 수 있는 정보를 추가하기만 합니다.
웹 페이지는 Update Manager를 통해 실행해야 하므로, 갱신 보기에 있는 사이트 책갈피를 웹 책갈피로 작성할 수 있습니다. Update Manager는 이러한 책갈피를 적절하게 처리하고 사용자가 두 번 클릭하면 브라우저에서 URL을 엽니다. (임베드한 브라우저를 운영/창 시스템 버전에서 사용 가능하면 직접 Update Manager 내에서 열고 그렇지 않으면 상주하는 브라우저 창에서 엽니다.)
제공자는 원하는 어떤 방식으로든지 갱신 웹 페이지를 설정할 수 있습니다. 데이터베이스의 지원을 받는 정교한 웹 응용프로그램을 사용하거나 단순한 정적 HTML을 사용할 수 있습니다. 더욱 복잡한 아키텍처를 사용하면 제공자는 더 많은 값을 사용자에게 제공할 수 있습니다. 새 기능, 갱신사항 및 e-fix에 대한 복잡한 검색, 선택한 기능의 풍부한 비주얼 프리젠테이션, 해당 기능에 관한 기사, 여러 가지의 유용한 링크, '가장 인기 있는 기능' 투표가 가능한 것 중 일부입니다. 또한 제공자는 인증을 사용 가능하게 하여 기능 중 일부로 액세스를 제한하거나 사용자 등록 등을 요구할 수 있습니다.
인코딩된 정보를 추출하는 방법은 여러 가지입니다. 매우 간단한 방법은 아래에 표시된 것처럼 Java 스크립트 기능을 사용하는 것입니다.
<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>
위의 기능은 현재 페이지의 URL을 구문 분석하고 조회 인수를 배열로 리턴합니다.
콜백 URL의 역할은 웹 페이지가 제어를 다시 Eclipse에 리턴하도록 허용하는 것입니다. 사용자가 설치할 기능을 선택했으면, 기능은 다시 Eclipse로 리턴하여 완료해야 합니다. 웹 트리거 갱신의 역할은 갱신 사이트가 무효화되지 않도록 하는 것입니다. 갱신 사이트는 계속 필요하지만 이 시나리오에서는 단지 기능이 물리적으로 저장되는 위치로만 사용됩니다. 웹 페이지는 일부 지점에서 Eclipse로 콜백하여 갱신 사이트 URL과 선택한 기능 ID 및 버전을 전달해야 합니다. 이 정보는 원래의 콜백 URL을 사용하고 인수를 추가한 다음 조회를 형성하여 인코딩됩니다.
콜백 조회의 인수는 다음과 같습니다.
Eclipse로의 콜백은 사용자가 웹 페이지에서 모든 선택을 완료하고 '다운로드' 단추나 하이퍼링크와 같은 것을 누르는 것만 남았을 때 수행해야 합니다. 이 기능의 간단한 구현은 다음과 같습니다.
<input type="button" name="Download" value="Download" onClick="javascript:download('com.example.root', '1.0.0')">
위의 코드에서 기능 ID와 버전은 단추 태그에 하드 코드됩니다.
다운로드 기능은 다음과 같이 구현할 수 있습니다.
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; } }
위의 JavaScript 기능에서, 처음부터 페이지 URL에 인코딩된 콜백 URL이 조회 형성에 사용됩니다. 조회가 작성되면, 브라우저는 이를 열 것인지 묻습니다. 이 단계는 브라우저가 조회를 처리할 Eclipse Servlet을 호출하고, 제공자 갱신 사이트(이 경우 "http://acme.com/updateSite/")에 연결한 후 제공된 ID와 버전을 갖는 기능을 찾도록 합니다. 모든 것이 제대로 수행되면, Eclipse 창이 맨 위에 표시되고 익숙한 설치 마법사가 열립니다. 이 때, Eclipse로 돌아가서 일반적인 설치를 완료할 수 있습니다.
콜백 URL을 인코딩하는 것은 전체 메커니즘에 있어 중요합니다. '다운로드' 링크나 단추를 포함하는 페이지가 웹 사이트 맵에서 몇 개의 레벨을 가지고 있으면, 루트 웹 페이지(Update Manager에서 실행된 웹 페이지)는 모든 페이지에 전달된 콜백 URL이 해당 페이지에서 열렸는지 확인해야 합니다. 이는 다양한 방법으로 수행할 수 있습니다(페이지에 직접 인코딩하거나, 임시 쿠키를 저장하거나, 사이트에서 페이지를 제공하는 Servlet에 이를 저장하는 등).