Eclipse の更新マネージャーを使用すると、予測可能な方法で Eclipse 更新サイトを表示したり、 ブラウズしたりすることができます。 更新サイトではツリー・ビューにカテゴリーを含めることが可能で、 このカテゴリーにはフィーチャーが含まれます。 フィーチャーは更新マネージャー内の「プレビュー」ビューで調べることができます。 フィーチャーがインストール可能である場合、「すぐにインストール」ボタンが表示され、 これにより Eclipse インストール・ウィザードが起動します。 インストール・タスクが完了すると、フィーチャーが製品の一部になります。
インストールのためにフィーチャーを表示するこの標準的な方法は、唯一の方法ではありません。 プロバイダーは更新マネージャーから表示、登録、検索、およびその他のタスクを引き継ぐことができ、 実際にフィーチャーを Eclipse 製品にインストールするときのみ制御を戻します。
更新マネージャーは Web ページからの要求を受け入れるサーブレットを実行することができます。 この機能は自動ではありません。「設定」>「インストール/更新」>「Web トリガー更新」ページで活動化してください。 「OK」を押すと、更新マネージャーが、着信要求を処理するアプリケーション・サーバーを活動化します。 この後、更新マネージャー内から開かれたすべての URL はコールバック URL 情報を使用してエンコードされます。 初期 URL が通常の Web ページである場合、エンコードされた URL には Eclipse を呼び出すために使用するコールバック URL を追加した照会部分があります。
http://acme.com/myApplication.html
上記の URL は、次のようになります。
http://acme.com/myApplication.html?updateURL=<localhost>:<localport>?org.eclipse.update/install
「localhost」はご使用のローカル・マシンで稼働している Eclipse サーバーのアドレスです。 ローカル・ポートはサーバーが開始されたときに動的に選択されます。照会とは要求を処理する Eclipse Web アプリケーション名およびサーブレット名です。
オリジナル URL がすでに照会である場合:
http://acme.com/myApplication/myServlet?arg1=value1&arg2=value2
エンコードされた URL にこちらの情報が別のパラメーターとして追加されます。
http://acme.com/myApplication/myServlet?arg1=value1&arg2=value2&updateURL=<localhost>:<localport>?org.eclipse.update/install
通常の Web ページおよび照会においてはエンコードは無視されますので、それが何らかの問題を起こしたり、表示に影響を与えたりすることはありません。 エンコードはそれを認識するページによって使用される情報を追加するだけです。
Web ページは更新マネージャーから起動する必要があるため、 更新ビュー内のサイト・ブックマークは Web ブックマークとして作成することができます。 更新マネージャーは必要に応じてこのブックマークを使用し、ブックマーク上でダブルクリックすると URL をブラウザー上に開きます (オペレーティング・システムおよびウィンドウ操作システムのバージョンで組み込みブラウザーが使用可能な場合、 直接更新マネージャー内で開きます。そうでない場合、常駐ブラウザー・ウィンドウで開きます)。
プロバイダーは更新 Web ページを希望の様式でセットアップできます。 データベースに支援される入り組んだ Web アプリケーションを使用することもできますし、 単純な静的 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 の役割は、Web ページが制御を Eclipse に戻すのを許可することです。 ユーザーがインストールするフィーチャーを選択すると、インストールを完了するために Eclipse に戻らなければなりません。 Web トリガー更新の役割は、更新サイトを廃止させないことです。 そのサイトは今後も必要ですが、このシナリオ内では単にフィーチャーが物理的に保管されるロケーションとして使用されるだけです。 Web ページはある時点で Eclipse にコールバックし、選択済みフィーチャーの ID およびバージョンだけでなく、 更新サイト URL を渡す必要があります。 この情報は、オリジナルのコールバック URL を使用して引数を追加し、照会の書式を設定することによってエンコードされます。
コールバック照会の引数は次の通りです。
ユーザーが Web ページ内でのすべての選択を終了したときに 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 サーブレットを呼び出します。 Eclipse サーブレットは照会を処理し、プロバイダー更新サイト (この場合 "http://acme.com/updateSite/") に接続して、提供された ID およびバージョンのフィーチャーの位置を指定します。 すべての処理が成功すると、Eclipse ウィンドウが前面に表示され、通常のインストール・ウィザードが開きます。 この時点で Eclipse に戻り、インストールを通常通りに終了することができます。
コールバック URL をエンコードすることは、全体の機構ではきわめて重大です。 「ダウンロード」リンクまたはボタンが含まれているページが Web サイト・マップ内で数レベル深い位置にある場合、 (更新マネージャーから起動される) ルート Web ページで、 そのページ内から開かれたすべてのページにコールバック URL が確実に渡されるようにしなければなりません。 これはさまざまな方法 (ページ内で直接エンコードする、一時 cookie を保管する、 サイトからページを呼び出すサーブレット内に保管するなど) で行うことができます。 .