|
Spec-Zone .ru
спецификации, руководства, описания, API
|
rmid запускает системного демона активации, который позволяет объектам быть зарегистрированными и активированными в виртуальной машине (VM).
rmid [options]
rmid инструмент запускает системного демона активации. Системный демон активации должен быть запущен, прежде activatable объекты может быть или зарегистрирован в системе активации или активирован в VM. См. Java Спецификация RMI и учебные руководства по Активации для деталей о том, как записать программам то использование activatable удаленные объекты.
Демон может быть запущен, выполняясь rmid команда, и определение файла политики безопасности, следующим образом:
rmid -J-Djava.security.policy=rmid.policy
Отметьте: Когда реализация рабочего Sun rmid, по умолчанию Вы должны будете определить файл политики безопасности так, чтобы rmid может проверить действительно ли информация в каждом ActivationGroupDesc позволяется использоваться, чтобы запустить VM для группы активации. Определенно, команда и опции, определенные CommandEnvironment и любой Properties переданный к ActivationGroupDesc's конструктор должен теперь быть явно позволен в файле политики безопасности для rmid. Значение sun.rmi.activation.execPolicy свойство диктует политику это rmid использование, чтобы определить, действительно ли информацию в ActivationGroupDesc может использоваться, чтобы запустить VM для группы активации.
Выполнение rmid по умолчанию
ActivationSystem к имени java.rmi.activation.ActivationSystem в этом внутреннем реестре.Чтобы определить альтернативный порт для реестра, следует определить -port опция, запуская rmid. Например,
rmid -J-Djava.security.policy=rmid.policy -port 1099
запускает системного демона активации и реестр на порту значения по умолчанию реестра, 1099.
rmid от inetd/xinetdАльтернатива запуску rmid из командной строки должен сконфигурировать inetd (Солярис) или xinetd (Linux), чтобы запуститься rmid по требованию.
Когда rmid запускает, это пытается получить наследованный канал (наследованный от inetd/xinetd) вызывая System.inheritedChannel метод. Если наследованный канал null или не экземпляр java.nio.channels.ServerSocketChannel, тогда rmid предполагает, что это не было запущено inetd/xinetd, и это запускает как описано выше.
Если наследованный канал является a ServerSocketChannel экземпляр, тогда rmid использование java.net.ServerSocket полученный из ServerSocketChannel как сокет сервера, который принимает запросы на удаленные объекты, которые он экспортирует, а именно, реестр в который java.rmi.activation.ActivationSystem связывается и java.rmi.activation.Activator удаленный объект. В этом режиме, rmid ведет себя то же самое как тогда, когда оно запускается с командной строки, кроме:
System.err перенаправляется к файлу. Этот файл располагается в каталоге, определенном java.io.tmpdir системное свойство (обычно /var/tmp или /tmp) с префиксом "rmid-err" и суффикс "tmp".-port опция отвергается. Если эта опция определяется, rmid выйдет с сообщением об ошибке.-log опция требуется. Если эта опция не определяется, rmid выйдет с сообщением об ошибке.См. страницы справочника для inetd (Солярис) или xinetd (Linux) для деталей о том, как сконфигурировать службы, которые будут запущены по требованию.
rmid когда тот процесс создается. Например, Вы могли передать свойство к каждой виртуальной машине, порожденной системным демоном активации:
rmid -C-Dsome.property=value
Эта возможность передать параметры командной строки к дочерним процессам может быть полезной для отладки. Например, следующая команда:
rmid -C-Djava.rmi.server.logCalls=true
включит записи разговора клиента с оператором сервера во всем дочернем VMs.
java выполнение интерпретатора rmid. Например, чтобы определить это rmid используйте названный файл политики rmid.policy, -J опция может использоваться, чтобы определить java.security.policy свойство на rmid's командная строка, например:
rmid -J-Djava.security.policy=rmid.policy
rmid использует, чтобы проверить команды и параметры командной строки, используемые, чтобы запустить VM, в котором работает группа активации. Пожалуйста, отметьте, что эта опция существует только в реализации Sun Java демон активации RMI. Если это свойство не определяется на командной строке, результатом является то же самое как будто -J-Dsun.rmi.activation.execPolicy=default были определены. Возможные значения <политики> могут быть default, <policyClassName>, или none: Значение по умолчанию execPolicy позволяет rmid выполнить команды с определенными параметрами командной строки только если rmid был предоставлен разрешение, чтобы выполнить те команды и опции в файле политики безопасности это rmid использование. Только групповая реализация активации значения по умолчанию может использоваться с политикой выполнения значения по умолчанию.
rmid запускает VM для группы активации, использующей информацию в зарегистрированном групповом дескрипторе активации группы, ActivationGroupDesc. Групповой дескриптор определяет дополнительное ActivationGroupDesc.CommandEnvironment который включает команду, чтобы выполниться, чтобы запустить группу активации так же как любые параметры командной строки, которые будут добавлены к командной строке. По умолчанию, rmid использование java команда, найденная в java.home. Групповой дескриптор также содержит переопределения свойств, которые добавляются к командной строке как опции, определенные как:
-D<property>=<value>
Разрешение com.sun.rmi.rmid.ExecPermission используется, чтобы предоставить rmid разрешение, чтобы выполнить команду, определенную в групповом дескрипторе CommandEnvironment запустить группу активации. Разрешение com.sun.rmi.rmid.ExecOptionPermission используется, чтобы позволить rmid использовать параметры командной строки, определенные как свойства, переопределяет в групповом дескрипторе или как опции в CommandEnvironment, запуская группу активации.
Предоставляя rmid разрешение, чтобы выполнить различные команды и опции, полномочия ExecPermission и ExecOptionPermission потребность, которая будет предоставлена универсально (то есть, предоставленный всем источникам кода).
ExecPermissionExecPermission class представляет разрешение для rmid выполнить определенную команду, чтобы запустить группу активации. Синтаксис
Имя ExecPermission путь команды, чтобы предоставить rmid разрешение, чтобы выполниться. Путь, который заканчивается в "/*", указывает на все файлы, содержавшиеся в том каталоге (где "/" символ разделителя файлов, File.separatorChar). Путь, который заканчивается "/-", указывает на все файлы и подкаталоги, содержавшиеся в том каталоге (рекурсивно). Путь, состоящий из специального маркера" <<ВСЕ ФАЙЛЫ>>", соответствует любой файл.
Отметьте: путь, состоящий из сингла "*", указывает на все файлы в текущем каталоге, в то время как путь, состоящий из сингла "-", указывает на все файлы в текущем каталоге и (рекурсивно) все файлы и подкаталоги, содержавшиеся в текущем каталоге.
ExecOptionPermissionExecOptionPermission class представляет разрешение для rmid использовать определенный параметр командной строки, запуская группу активации. Имя ExecOptionPermission значение параметра командной строки. Синтаксис
Опции поддерживают ограниченную подстановочную схему. Звездочка показывает подстановочное соответствие, и это может появиться как имя опции непосредственно (то есть, это соответствует любую опцию), или звездочка может появиться в конце имени опции, только если звездочка следует или "." или "=".
Например: "*" или "-Dfoo. *" или "-Da.b.c = *" допустимо, "*foo", или "-Da*b" или "ab *" не.
rmidrmid разрешение, чтобы выполнить различные команды и опции, полномочия ExecPermission и ExecOptionPermission потребность, которая будет предоставлена универсально (то есть, предоставленный всем источникам кода). Безопасно предоставить эти полномочия универсально потому что только rmid проверки эти полномочия. Файл политики в качестве примера, который предоставляет различный, выполняет полномочия к rmid :
grant {
permission com.sun.rmi.rmid.ExecPermission
"/files/apps/java/jdk1.7.0/solaris/bin/java";
permission com.sun.rmi.rmid.ExecPermission
"/files/apps/rmidcmds/*";
permission com.sun.rmi.rmid.ExecOptionPermission
"-Djava.security.policy=/files/policies/group.policy";
permission com.sun.rmi.rmid.ExecOptionPermission
"-Djava.security.debug=*";
permission com.sun.rmi.rmid.ExecOptionPermission
"-Dsun.rmi.*";
};
Первое предоставленное разрешение позволяет rmid выполнить 1.7.0 версий java команда, определенная ее явным путем. Отметьте что по умолчанию, версия java команда, найденная в java.home используется (тот же самый это rmid использование), и не должен быть определен в файле политики. Второе разрешение позволяет rmid выполнить любую команду в каталоге /files/apps/rmidcmds. Третье предоставленное разрешение, ExecOptionPermission, позволяет rmid запустить группу активации, которая определяет файл политики безопасности, чтобы быть /files/policies/group.policy. Следующее разрешение позволяет java.security.debug свойство, которое будет использоваться группой активации. Последнее разрешение позволяет любому свойству войти sun.rmi иерархия имени свойства, которая будет использоваться группами активации.
Запускаться rmid с файлом политики, java.security.policy свойство должно быть определено на rmid's командная строка, например:
rmid -J-Djava.security.policy=rmid.policy
Если поведение значения по умолчанию не достаточно гибко, администратор может обеспечить, запускаясь rmid, имя class, чей checkExecCommand метод выполняется, чтобы проверить команды, которые будут выполняться rmid.
policyClassName определяет общедоступный class с общедоступным, конструктором без параметров и реализацией следующего checkExecCommand метод:
public void checkExecCommand(ActivationGroupDesc desc,
String[] command)
throws SecurityException;
Прежде, чем запустить группу активации, rmid вызывает политику checkExecCommand метод, передавая это групповой дескриптор активации и массив, содержащий полную команду, чтобы запустить группу активации. Если checkExecCommand броски a SecurityException, rmid не будет запускать группу активации и ActivationException будет брошен в вызывающую сторону, пытающуюся активировать объект.Если sun.rmi.activation.execPolicy значение свойства не "ни один", тогда rmid не будет выполнять проверки допустимости команд, чтобы запустить группы активации.
log, в том, каталоге, в который rmid команда выполнялась.rmid's использование реестра. Системный демон активации связывает ActivationSystem, с именем java.rmi.activation.ActivationSystem, в этом реестре. Таким образом, ActivationSystem на локальной машине может быть получен, используя следующий Naming.lookup вызов метода:
import java.rmi.*;
import java.rmi.activation.*;
ActivationSystem system; system = (ActivationSystem)
Naming.lookup("//:port/java.rmi.activation.ActivationSystem");
rmid, для порта, определенного -port опция. Если никакой порт не будет определен, то это остановится rmid работа порта 1098.
.:/usr/local/java/classes