xml version="1.0" encoding="utf-8"? >
rmid 로 기동 시스템 demon를 개시하면(자), 객체를 Java 가상 머신 (JVM)에 등록해 기동할 수 있게 됩니다.
rmid [options]
rmid 툴은, 기동 시스템 demon를 개시합니다. 기동 시스템 demon를 개시하지 않으면, 기동 가능 객체를 기동 시스템에 등록하거나 JVM 내에서 기동하거나 할 수가 없습니다. 기동 가능한 원격 객체를 사용한 프로그램의 작성 방법의 자세한 것은,「RMI 스펙」 및「기동의 튜토리얼」을 참조해 주세요.demon를 기동하려면 , 다음과 같이, 시큐리티 정책 파일을 지정해
rmid커멘드를 실행합니다.rmid -J-Djava.security.policy=rmid.policy주:
rmid의 Sun 의 구현을 실행하는 경우, 디폴트에서는, 시큐리티 정책 파일을 지정할 필요가 있습니다. 그것은, 기동 그룹용으로 JVM 를 기동하기 위해서 각ActivationGroupDesc내의 정보를 사용할 수 있을지 어떨지를rmid를 검증할 수 있도록(듯이) 하기 (위해)때문에입니다. 특히,ActivationGroupDesc의 생성자 에게 건네지는CommandEnvironment나 임의의Properties에 의해 지정되는 커멘드 및 옵션은,rmid의 시큐리티 정책 파일 중(안)에서 명시적으로 허가하는 것이 필요하게 되었습니다.sun.rmi.activation.execPolicy프로퍼티의 값은, 기동 그룹용으로 JVM 를 기동하기 위해서ActivationGroupDesc내의 정보를 사용할 수 있을지 어떨지를 판단할 때rmid가 사용하는 정책를 결정합니다.
rmid를 디폴트 설정으로 실행하면(자), 다음과 같은 처리를 합니다.레지스트리에 다른 포트를 지정하려면 ,
- activator를 기동해, 디폴트 포트 1098 으로 내부 레지스트리를 기동한다
- 이 내부 레지스트리 중(안)에서,
ActivationSystem를java.rmi.activation.ActivationSystem라는 이름에 바인드 한다rmid의 기동시에-port옵션을 지정하지 않으면 안됩니다. 다음에 예를 나타냅니다.rmid -J-Djava.security.policy=rmid.policy -port 1099이 커멘드는, 기동 시스템 demon를 개시해, 레지스트리의 디폴트 포트 1099 로 레지스트리를 개시합니다.
- -C<someCommandLineOption>
rmid의 child process (기동 그룹)가 작성되었을 때에, 각각의 child process에 커멘드행 인수로서 건네받는 옵션을 지정합니다. 예를 들어, 다음과 같이 지정하면(자), 기동 시스템 demon에 의해 생성되는 각 Java 가상 머신에 프로퍼티을 건네줄 수가 있습니다.rmid -C-Dsome.property=value커멘드행 인수를 child process에 건네주는 기능은, 디버그를 실시하는 경우에 편리합니다. 예를 들어, 다음과 같은 커멘드를 실행할 수 있습니다.rmid -C-Djava.rmi.server.logCalls=true이 커멘드에 의해, 모든 아이 JVM 로 서버 호출의 로그가 작성되게 됩니다.- -J<someCommandLineOption>
rmid를 실행하고 있는javainterpreter에 건네주는 옵션을 지정합니다. 예를 들어,rmid가rmid.policy라는 이름의 정책 파일을 사용하도록(듯이) 지정하려면 ,rmid의 커멘드행으로-J옵션을 사용해,java.security.policy프로퍼티을 정의합니다. 다음에 예를 나타냅니다.rmid -J-Djava.security.policy=rmid.policy- -J-Dsun.rmi.activation.execPolicy=<policy>
- 기동 그룹이 실행되게 되는 JVM 의 기동에 사용하는 커멘드 및 커멘드행 옵션을 체크하기 위해서,
rmid가 채용하는 정책를 지정합니다. 이 옵션은, RMI 기동 demon의 Sun 의 구현인 만큼 존재하는 것에 주의해 주세요. 커멘드행에 이 프로퍼티을 지정하지 않는 경우, 결과는-J-Dsun.rmi.activation.execPolicy=default를 지정했을 경우와 같게 됩니다. <policy> 로 지정 가능한 값은,default,<policyClassName> , 또는none입니다. 각각의 값에 대해, 이후에 설명합니다.
- default (또는, 이 프로퍼티이 「지정되어 있지 않다」경우)
디폴트의
execPolicy의 경우,rmid를 실행할 수 있는 것은,rmid가 사용하는 시큐리티 정책 파일 중(안)에서, 실행하는 권한이rmid에게 줄 수 있고 있는 커멘드 및 커멘드행 옵션 뿐입니다. 「디폴트」의 실행 정책로 사용할 수 있는 것은, 디폴트의 기동 그룹 구현 뿐입니다.
rmid는, 기동 그룹용의 JVM 를 기동할 경우에, 그 그룹에 대해 등록된 기동 그룹 기술자인ActivationGroupDesc내의 정보를 사용합니다. 그룹 기술자는,ActivationGroupDesc.CommandEnvironment를 지정합니다 (생략 가능). 이것에는, 기동 그룹을 개시하는 「커멘드」라고, 그 커멘드행에 추가할 수 있는 커멘드행 「옵션」이 포함되어 있습니다. 디폴트에서는,rmid는,java.home에 있는java커멘드를 사용합니다. 그룹 기술자에게는, 옵션으로서 커멘드행에 추가되는 「프로퍼티」오버라이드(override)도 포함되어 있습니다. 이 프로퍼티은, 다음과 같이 정의합니다.-D<property>=<value>액세스권
com.sun.rmi.rmid.ExecPermission를 사용하면(자), 그룹 기술자의CommandEnvironment으로 지정된 커멘드를 실행해 기동 그룹을 개시하는 권한을,rmid에 대해서 허가할 수가 있습니다. 액세스권com.sun.rmi.rmid.ExecOptionPermission를 사용하면(자), 그룹 기술자로 프로퍼티 오버라이드(override)로서 지정된 커멘드행 옵션, 또는CommandEnvironment로 옵션으로서 지정된 커멘드행 옵션을, 기동 그룹을 개시할 경우에rmid를 사용할 수 있게 됩니다.
rmid에 다양한 커멘드 및 옵션을 실행하는 권한을 허가하는 경우는, 액세스권ExecPermission및ExecOptionPermission를 범용적으로 허가할 필요가 있습니다. 즉, 모든 코드 소스에 대해서 허가합니다.
ExecPermissionExecPermission클래스는, 기동 그룹을 개시하기 위해서rmid가 특정의 「커멘드」를 실행하는 권한을 나타냅니다.구문
ExecPermission의 「이름」은,rmid에 실행을 허가하는 커멘드의 경로명입니다. 「\*」으로 끝나는 경로명은, 그 디렉토리에 포함되는 모든 파일을 나타냅니다 ( 「\」은 파일 단락 문자File.separatorChar). 「\-」으로 끝나는 경로명은, 그 디렉토리에 포함되는 모든 파일과 서브 디렉토리 (재귀적으로)를 나타냅니다. 경로명에 특별한 토큰 「<<ALL FILES>>」를 지정했을 경우는,임의의파일을 나타냅니다.주:「*」을 1 개(살) 지정했을 뿐의 경로명은, 현재의 디렉토리내의 모든 파일을 나타냅니다. 또, 「-」을 1 개(살) 지정했을 뿐의 경로명은, 현재의 디렉토리내의 모든 파일과 현재의 디렉토리에 포함되는 모든 파일과 서브 디렉토리 (재귀적으로)를 나타냅니다.
ExecOptionPermission
ExecOptionPermission클래스는, 기동 그룹을 개시할 경우에rmid가 특정의 커멘드행 「옵션」을 사용할 수 있는 권한을 나타냅니다.ExecOptionPermission의 「이름」은, 커멘드행 옵션의 값입니다.구문
옵션에서는, 와일드 카드가 한정적으로 지원됩니다. asterisk는, 와일드 카드 매치를 나타냅니다. asterisk는, 옵션명 그 자체로서 사용할 수 있습니다. 즉, 임의의 옵션을 나타낼 수가 있습니다. 또, 옵션명의 말미에 사용할 수도 있습니다. 다만, 「.」인가 「=」의 직후에 asterisk를 지정할 필요가 있습니다.예를 나타냅니다. 「*」, 「-Dfoo. *」, 「-Da.b.c=*」는 유효합니다만, 「*foo」, 「-Da*b」, 「ab*」는 무효입니다.
rmid의 정책 파일rmid에 다양한 커멘드 및 옵션을 실행하는 권한을 허가하는 경우는, 액세스권ExecPermission및ExecOptionPermission를 범용적으로 허가할 필요가 있습니다. 즉, 모든 코드 소스에 대해서 허가합니다. 이러한 액세스권을 체크하는 것은rmid만일 수 있는이므로, 이러한 액세스권을 범용적으로 허가해도 안전합니다.
rmid에 각종의 실행 권한한을 허가하는 정책 파일의 예를, 다음에 나타냅니다.grant { permission com.sun.rmi.rmid.ExecPermission "c:\\files\\apps\\java\\jdk1. 2.2\\win\\bin\\java"; permission com.sun.rmi.rmid.ExecPermission "c:\\files\\apps\\java\\jdk1. 2.2\\win\\bin\\java_g"; permission com.sun.rmi.rmid.ExecPermission "c:\\files\\apps\\rmidcmds\\*"; permission com.sun.rmi.rmid.ExecOptionPermission "-Djava.security.policy=c:\\files\\policies\\group.policy"; permission com.sun.rmi.rmid.ExecOptionPermission "-Djava.security.debug=*"; permission com.sun.rmi.rmid.ExecOptionPermission "-Dsun.rmi. *"; };최초의 2 개의 부여되고 있는 액세스권은,rmid에 대해, 경로명에 의해 명시적으로 지정되는java커멘드 및java_g커멘드의 1.2. 2 버젼의 실행을 허가합니다. 디폴트에서는,java.home에 있는 버젼의java커멘드 (rmid가 사용하는 것과 같은 버젼)가 사용되기 (위해)때문에, 그 커멘드는, 정책 파일로 지정할 필요는 없습니다. 3 번째의 액세스권은,rmid에 대해서, 디렉토리c:\files\apps\rmidcmds\내의 임의의 커멘드의 실행을 허가하고 있습니다.4 번째의 액세스권
ExecOptionPermission는,rmid에 대해서, 시큐리티 정책 파일을c:\files\policies\group.policy로서 정의하고 있는 기동 그룹의 기동을 허가하고 있습니다. 5 번째의 액세스권은, 기동 그룹이java.security.debug프로퍼티을 사용하는 것을 허가하고 있습니다. 마지막 액세스권은, 기동 그룹이sun.rmi라고 하는 프로퍼티명의 계층내의 임의의 프로퍼티을 사용하는 것을 허가하고 있습니다.정책 파일을 지정해
rmid를 기동하려면 ,rmid의 커멘드행으로java.security.policy프로퍼티을 지정할 필요가 있습니다. 다음에 예를 나타냅니다.rmid -J-Djava.security.policy=rmid.policy- <policyClassName>
디폴트의 동작으로는 충분한 유연성을 얻을 수 없는 경우, 관리자는,
rmid의 기동시에,checkExecCommand메소드가 소속하는 클래스의 이름을 지정해, rmid 가 실행하는 커멘드를 체크할 수가 있습니다.policyClassName 에는, 인수 없음의 생성자 을 가져, 다음과 같은
checkExecCommand메소드를 구현하고 있는 public 클래스를 지정합니다.public void checkExecCommand(ActivationGroupDesc desc, String[] command) throws SecurityException;기동 그룹을 개시하기 전에,rmid는, 정책의checkExecCommand메소드를 호출합니다. 이 때, 기동 그룹의 기술자와 기동 그룹을 개시하기 위한 완전한 커멘드를 포함한 배열을 그 메소드에 건네줍니다.checkExecCommand가SecurityException를 throw 하면(자),rmid는 그 기동 그룹을 개시하지 않고, 객체의 기동을 시행하고 있는 호출 측에는ActivationException가 throw 됩니다.- none
sun.rmi.activation.execPolicy프로퍼티의 값이 「none」의 경우,rmid는, 기동 그룹을 개시하는 커멘드를 전혀 검증하지 않습니다.- -log dir
- 기동 시스템 demon가 데이타베이스 및 관련 정보를 기입하는데 사용하는 디렉토리의 이름을 지정합니다. 디폴트에서는,
rmid커멘드를 실행한 디렉토리에,log라고 하는 로그 디렉토리가 작성됩니다.- -port port
rmid의 레지스트리가 사용하는 포트를 지정합니다. 기동 시스템 demon는, 이 레지스트리 중(안)에서,java.rmi.activation.ActivationSystem라는 이름으로ActivationSystem를 바인드 합니다. 따라서, 로컬 머신상의ActivationSystem는, 다음과 같이Naming.lookup메소드를 호출하는 것에 의해 취득할 수 있습니다.import java.rmi. *; import java.rmi.activation. *; ActivationSystem system; system = (ActivationSystem) Naming.lookup("//:port/java.rmi.activation.ActivationSystem");- -stop
-port옵션에 의해 지정된 포트의, 현재의rmid호출을 정지합니다. 포트가 지정되어 있지 않은 경우는, 포트 1098 으로 실행되고 있는rmid를 정지합니다.
- CLASSPATH
- 사용자 정의 클래스에의 패스를 시스템으로 지정합니다. 디렉토리는, UNIX 와 Macintosh 에서는 구두점으로 단락지어, Windows 95 에서는 세미콜론으로 단락짓습니다. 예를 나타냅니다.
. ;C:\usr\local\java\classes
rmic ,CLASSPATH ,java
|
Copyright © 2003-2006 Sun Microsystems, Inc. All Rights Reserved. |
Java Software |