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
потребность, которая будет предоставлена универсально (то есть, предоставленный всем источникам кода).
ExecPermission
ExecPermission
класс представляет разрешение для rmid
выполнить определенную команду, чтобы запустить группу активации. Синтаксис
Имя ExecPermission
путь команды, чтобы предоставить rmid
разрешение, чтобы выполниться. Путь, который заканчивается в "/*", указывает на все файлы, содержавшиеся в том каталоге (где "/" символ разделителя файлов, File.separatorChar
). Путь, который заканчивается "/-", указывает на все файлы и подкаталоги, содержавшиеся в том каталоге (рекурсивно). Путь, состоящий из специального маркера" <<ВСЕ ФАЙЛЫ>>", соответствует любой файл.
Отметьте: путь, состоящий из сингла "*", указывает на все файлы в текущем каталоге, в то время как путь, состоящий из сингла "-", указывает на все файлы в текущем каталоге и (рекурсивно) все файлы и подкаталоги, содержавшиеся в текущем каталоге.
ExecOptionPermission
ExecOptionPermission
класс представляет разрешение для rmid
использовать определенный параметр командной строки, запуская группу активации. Имя ExecOptionPermission
значение параметра командной строки. Синтаксис
Опции поддерживают ограниченную подстановочную схему. Звездочка показывает подстановочное соответствие, и это может появиться как имя опции непосредственно (то есть, это соответствует любую опцию), или звездочка может появиться в конце имени опции, только если звездочка следует или "." или "=".
Например: "*" или "-Dfoo. *" или "-Da.b.c = *" допустимо, "*foo", или "-Da*b" или "ab *" не.
rmid
rmid
разрешение, чтобы выполнить различные команды и опции, полномочия 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
, имя класса, чей checkExecCommand
метод выполняется, чтобы проверить команды, которые будут выполняться rmid.
policyClassName определяет общедоступный класс с общедоступным, конструктором без параметров и реализацией следующего 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