Карта сайта сервера обновления
В качестве сервера обновления Eclipse по умолчанию допустим любой сервер, к которому
можно обратиться с помощью URL. Реализация по умолчанию предполагает сервер с фиксированным
размещением файлов. Содержимое сервера (список доступных комплектов и модулей)
описывается в файле карты сайта site.xml. Этот файл настраивается вручную, либо
создается сервером в динамическом режиме.
Карта сайта
URL сервера обновления можно указать в качестве полного URL файла карты сайта, либо URL
каталога, содержащего файл карты сайта (аналогично принципу обработки файла index.html). Формат
файла site.xml описывается в следующем определении типа документа:
<?xml encoding="UTF-8"?>
<!ELEMENT site (description?, feature*, archive*, category-def*)>
<!ATTLIST site
type
CDATA #IMPLIED
url
CDATA #IMPLIED
mirrorURL CDATA #IMPLIED
availableLocales CDATA #IMPLIED
digestURL CDATA #IMPLIED
associateSitesURL CDATA #IMPLIED
pack200 CDATA #IMPLIED
>
<!ELEMENT description (#PCDATA)>
<!ATTLIST description
url
CDATA #IMPLIED
>
<!ELEMENT feature (category*)>
<!ATTLIST feature
type
CDATA #IMPLIED
id
CDATA #IMPLIED
version
CDATA #IMPLIED
url
CDATA #REQUIRED
patch
(false | true) false
os CDATA #IMPLIED
nl CDATA #IMPLIED
arch CDATA #IMPLIED
ws
CDATA #REQUIRED
>
<!ELEMENT archive EMPTY>
<!ATTLIST archive
path
CDATA #REQUIRED
url
CDATA #REQUIRED
>
<!ELEMENT category EMPTY>
<!ATTLIST category
name
CDATA #REQUIRED
>
<!ELEMENT category-def (description?)>
<!ATTLIST category-def
name
CDATA #REQUIRED
label
CDATA #REQUIRED
>
Ниже приведены определения элементов и атрибутов:
- <site> - задает карту сайта
- type - необязательная спецификация типа сайта. Значение указывает на тип,
зарегистрированный с помощью точки расширения среды установки. Если значение не
указано, применяется тип сайта Eclipse по умолчанию (указанный в этом документе).
- url - необязательный URL, определяющий базовый URL сайта обновления (применяется для
определения расположения отдельных <комплектов> и <архивов>). URL может быть как
полным, так и относительным. В последнем случае URL указывается относительно
файла site.xml. Если значение не указано, по умолчанию применяется URL файла site.xml.
- mirrorsURL - необязательный URL, определяющий файл с адресами зеркальных сайтов
обновления. URL может быть как абсолютным, так и относительным. Файл с адресами зеркальных сайтов описан
в этом документе далее.
- availableLocales - необязательный список локалей, для которых добавлено краткое описание
- digestURL - необязательный URL каталога, содержащего краткое описание. В каталоге, указанном в digestURL, с помощью того же алгоритма,
что применяется для выбора свойств в классе java.util.ResourceBundle, будет динамически выбрано краткое описание из списка availableLocales. Файлам краткого описания нужно присвоить название digest<локаль>.zip, где локаль - либо пустая строка
(краткое описание по умолчанию), либо сведения о локали, указанные в файле java.util.Locale.
- associateSitesURL - необязательный адрес URL файла xml, где перечислены сайты, открывающиеся одновременно с этим сайтом
- pack200 - С помощью этого атрибута администратор обновлений определяет, есть ли упакованное содержимое, которое нужно загрузить вместо
обычного файла jar. Если этот атрибут не задан, администратор обновлений не будет искать упакованное содержимое и всегда будет загружать
обычный файл jar. Перед загрузкой файла jar с сайта обновлений, в котором указано значение pack200="true", администратор обновлений будет
искать файл pack.gz, расположенный рядом с искомым файлом jar. Например, перед загрузкой файла foo.jar администратор обновлений будет искать файл
foo.jar.pack.gz. Если файл pack.gz существует, он будет загружен вместо файла jar.
После загрузки файл pack.gz будет распакован, в результате чего будет получен исходный файл jar.
Если файл pack.gz на сайте обновлений не существует, будет загружен обычный файл jar.
- <description> - краткое текстовое описание. Предназначено для перевода.
- url - необязательный URL полного описания в формате HTML. Можно указать как абсолютный,
так и относительный URL. В последнем случае URL указывается относительно
файла site.xml.
Обратите внимание, что обработка национальных языков предусматривает разделение URL.
Такой подход позволяет указать альтернативные URL для каждого национального языка.
- <feature> - задает архив комплекта
- type - необязательная спецификация типа комплекта. Значение указывает на тип,
зарегистрированный с помощью точки расширения среды установки. Если значение не указано,
применяется тип комплекта по умолчанию. Если указан тип сайта Eclipse по умолчанию, то в
качестве типа комплекта по умолчанию применяется тип упакованного комплекта (указанный в
этом документе).
- id - необязательный идентификатор комплекта. Данная информация позволяет повысить
эффективность поиска комплектов. Идентификатор должен совпадать со значением,
указанным в файле feature.xml связанного архива (атрибут url).
Этот атрибут указывается совместно с атрибутом version.
- version - необязательная версия комплекта. Данная информация позволяет повысить
эффективность поиска комплектов. Версия должна совпадать со значением,
указанным в файле feature.xml связанного архива (атрибут url).
Этот атрибут указывается совместно с атрибутом id.
- url - обязательный URL, указывающий на расположение архива комплекта. URL может быть как
полным, так и относительным. В последнем случае URL указывается относительно расположения файла site.xml.
Примечание: реализация сайта по умолчанию позволяет обращаться к комплектам без
явного объявления с помощью записи <feature>. По умолчанию необъявленная ссылка на комплекты интерпретируется как "features/<ИД>_<версия>.jar". Примечание: для повышения эффективности поиска рекомендуется всегда указывать атрибуты id и version.
- patch - необязательный атрибут, объявляющий исправление (специальный тип комплекта).
Примечание: для повышения эффективности поиска рекомендуется всегда указывать
этот атрибут.
- os - необязательная спецификация операционной системы. Представляет собой список обозначений операционных систем, поддерживаемых Eclipse (см. документацию по Java для org.eclipse.core.runtime.Platform). В качестве разделителя применяется запятая.
Указывает, что комплект предназначен для установки только в перечисленных операционных системах. Если этот атрибут не задан, комплект допускает установку во всех
системах (переносимая реализация). В процессе установки или обновления
данная информация рассматривается в качестве подсказки (т.е. пользователь может
принудительно выполнить установку, независимо от значения этого атрибута).
- arch - необязательная спецификация архитектуры системы. Список
обозначений архитектур, поддерживаемых Eclipse (см. документацию по Java для
org.eclipse.core.runtime.Platform). В качестве разделителя применяется запятая.
Указывает, что комплект предназначен для установки только в перечисленных системах. Если этот атрибут не задан, комплект допускает установку во всех
системах (переносимая реализация). В процессе установки или обновления
данная информация рассматривается в качестве подсказки (т.е. пользователь может
принудительно выполнить установку, независимо от значения этого атрибута).
- ws - необязательная спецификация системы организации окон. Представляет собой список обозначений оконных систем, поддерживаемых Eclipse (см. документацию по Java для org.eclipse.core.runtime.Platform). В качестве разделителя применяется запятая.
Указывает, что комплект предназначен для установки только в перечисленных системах организации окон. Если этот атрибут не задан, комплект допускает установку во всех
системах (переносимая реализация). В процессе установки или обновления
данная информация рассматривается в качестве подсказки (т.е. пользователь может
принудительно выполнить установку, независимо от значения этого атрибута).
- nl - необязательная спецификация локали. Список обозначений локалей Java, разделенный
запятыми. Указывает, что комплект предназначен для установки в системе, поддерживающей
совместимую локаль (применяются правила сравнения локалей Java). Если этот атрибут не
задан, комплект допускает установку во всех системах (реализация, независимая от языка). В процессе установки или обновления данная информация рассматривается в качестве
подсказки (т.е. пользователь может принудительно выполнить установку, независимо от
значения этого атрибута).
- <archive> - задает связанный архив данных (фактические файлы,
представленные в манифесте комплекта с помощью элементов <plugin> и <data>). Сайт управляет архивами путем преобразования путей в URL. Реализация
сайта Eclipse по умолчанию не требует добавления раздела <archive> в карту сайта
(site.xml). Все ссылки на архивы, которые явным образом не указаны в разделе
<archive>, преобразуются в URL формата "<archivePath>" относительно
расположения файла site.xml.
- path - обязательный идентификатор пути к архиву. Значение определяется комплектом при
обращении к архиву и используется сайтом только в качестве маркера поиска.
- url - обязательный URL, указывающий на расположение архива. URL может быть как
полным, так и относительным. В последнем случае URL указывается относительно расположения
файла site.xml.
- <category-def> - необязательное определение категории, позволяющей в ходе установки
или обновления организовать комплекты в иерархическую структуру
- name - имя категории. Указывается в качестве пути, состоящего из маркеров имени, разделенных символом '/'
- label - отображаемая метка. Предназначена для перевода.
- <category> - спецификация фактической категории, связанной с записью комплекта
Обратите внимание на то, что в документах манифеста feature.xml следует применять кодировку UTF-8. Например:
<?xml version="1.0" encoding="UTF-8"?>
Переводимый текст, содержащийся в файле site.xml, можно распределить по файлам
site<_локаль>.properties в соответствии с соглашениями о комплектах свойств Java.
Обратите внимание, что переведенные строки применяются в ходе установки (без помощи
динамического механизма фрагментов модулей). Комплекты свойств расположены относительно файла site.xml.
Размещение файлов по умолчанию
<корневой каталог сайта>/
site.xml
features/
архивы комплектов
(например, org.eclipse.javatools_1.0.1.jar)
<featureId>_<featureVersion>/
(необязательно)
файлы комплекта, не относящиеся к модулю
plugins/
plug-in archives
(например, org.eclipse.ui_1.0.3.jar)
Файл зеркальных сайтов
Файл зеркальных сайтов обновления (определяется элементом mirrorsURL атрибута
<site>) определяет зеркальные сайты обновления. Формат файла:
<?xml encoding="UTF-8"?>
<!ELEMENT mirrors (mirror*))>
<!ELEMENT mirror EMPTY>
<!ATTLIST mirror
url
CDATA #REQUIRED
label
CDATA #REQUIRED
>
- <mirrors> - определяет доступные зеркальные сайты обновлений
- <mirror> - определяет зеркальный сайт
- url - URL зеркального сайта
- label - отображаемая метка. Предназначена для перевода.
Файл краткого описания
Файл краткого описания (указанный в атрибуте digestURL элемента <site>) - упакованный файл в формате xml, определяемый следующим
определением типа документа:
<?xml encoding="UTF-8"?>
<!ELEMENT digest (feature*)>
Здесь под определением компонента понимается манифест компонента.
Файл связанных сайтов
Файл связанных сайтов (указанный в атрибуте associateSitesURL элемента <site>) содержит определение связанных сайтов. Формат
файла:
<?xml encoding="UTF-8"?>
<!ELEMENT associateSites (associateSite*)>
<!ELEMENT associateSites EMPTY>
<!ATTLIST associateSite
url
CDATA #REQUIRED
label
CDATA #REQUIRED
>
- <associateSites> - определяет сайты, связанные с этим сайтом обновлений
- <associateSite> - определяет связанный сайт
- url - адрес URL связанного сайта
- label - отображаемая метка. Предназначена для перевода.
Управление доступом
В реализации сайта Eclipse по умолчанию предусмотрена поддержка доступа по протоколу HTTP с простой идентификацией пользователей (ИД пользователя и пароль).
Дополнительные функции управления доступом можно добавить в Eclipse одним из приведенных ниже способов:
-
установив на сервере обновлений соответствующую логику (например, реализовав сервлеты,
вычисляющие карту site.xml и управляющие доступом к отдельным архивам в соответствии с
заданными критериями пользователей)
-
указав настроенную реализацию объекта сайта (устанавливается в системе клиента;
сервер обновления указывается как <site type="">).
Совместное применение настроенной пользовательской реализации сайта и логики сервера
позволяет реализовать поддержку необходимых функций управления доступом.
Вместе с платформой Eclipse поставляется пример, демонстрирующий реализацию
функции управления доступом на основе файлов ключей комплектов.