'\" t .\" Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. .\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. .\" .\" This code is free software; you can redistribute it and/or modify it .\" under the terms of the GNU General Public License version 2 only, as .\" published by the Free Software Foundation. .\" .\" This code is distributed in the hope that it will be useful, but WITHOUT .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or .\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License .\" version 2 for more details (a copy is included in the LICENSE file that .\" accompanied this code). .\" .\" You should have received a copy of the GNU General Public License version .\" 2 along with this work; if not, write to the Free Software Foundation, .\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. .\" .\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA .\" or visit www.oracle.com if you need additional information or have any .\" questions. .\" .\" Arch: generic .\" Software: JDK 8 .\" Date: 21 November 2013 .\" SectDesc: Remote Method Invocation (RMI) Tools .\" Title: rmid.1 .\" .if n .pl 99999 .TH rmid 1 "21 November 2013" "JDK 8" "Remote Method Invocation (RMI) Tools" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" rmid \- دیمن سیستم فعال‌سازی را راه‌اندازی می‌کند که امکان ثبت و فعال‌سازی اشیاء را در یک ماشین مجازی جاوا (JVM) فراهم می‌سازد\&. .SH "خلاصه دستور (SYNOPSIS)" .sp .nf \fBrmid\fR [\fIoptions\fR] .fi .sp .TP \fIoptions\fR گزینه‌های خط فرمان\&. بخش گزینه‌ها را ببینید\&. .SH "توضیحات (DESCRIPTION)" دستور \f3rmid\fR دیمن سیستم فعال‌سازی (activation system daemon) را راه‌اندازی می‌کند\&. دیمن سیستم فعال‌سازی باید پیش از آنکه اشیای قابل‌فعال‌سازی بتوانند در سیستم فعال‌سازی ثبت یا در یک JVM فعال شوند، راه‌اندازی شود\&. برای جزئیات در مورد نحوه نوشتن برنامه‌هایی که از اشیای قابل‌فعال‌سازی استفاده می‌کنند، به آموزش \fIUsing Activation\fR در نشانی http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/rmi/activation/overview\&.html مراجعه کنید\&. .PP با اجرای دستور \f3rmid\fR و مشخص کردن یک فایل خط‌مشی امنیتی (security policy file)، دیمن را به صورت زیر راه‌اندازی کنید: .sp .nf \f3rmid \-J\-Djava\&.security\&.policy=rmid\&.policy\fP .fi .sp هنگامی که پیاده‌سازی اوراکل از دستور \f3rmid\fR را اجرا می‌کنید، به‌طور پیش‌فرض باید یک فایل خط‌مشی امنیتی مشخص کنید تا دستور \f3rmid\fR بتواند بررسی کند که آیا اطلاعات موجود در هر \f3ActivationGroupDesc\fR مجاز به استفاده برای راه‌اندازی JVM برای یک گروه فعال‌سازی است یا خیر\&. به‌طور خاص، دستور و گزینه‌های مشخص‌شده توسط \f3CommandEnvironment\fR و هر ویژگی که به سازنده \f3ActivationGroupDesc\fR ارسال می‌شود، اکنون باید صراحتاً در فایل خط‌مشی امنیتی برای دستور \f3rmid\fR مجاز شمرده شوند\&. مقدار ویژگی \f3sun\&.rmi\&.activation\&.execPolicy\fR خط‌مشی مورد استفاده دستور \f3rmid\fR را تعیین می‌کند تا مشخص شود که آیا اطلاعات موجود در یک \f3ActivationGroupDesc\fR می‌تواند برای شروع یک JVM برای گروه فعال‌سازی به کار رود یا خیر\&. برای اطلاعات بیشتر به توضیحات گزینه -J-Dsun\&.rmi\&.activation\&.execPolicy=policy مراجعه کنید\&. .PP اجرای دستور \f3rmid\fR، فعال‌ساز (Activator) و یک رجیستری داخلی را روی پورت پیش‌فرض 1098 راه‌اندازی می‌کند و یک \f3ActivationSystem\fR را به نام \f3java\&.rmi\&.activation\&.ActivationSystem\fR در این رجیستری داخلی پیوند می‌دهد\&. .PP برای مشخص کردن یک پورت جایگزین برای رجیستری، هنگام اجرای دستور \f3rmid\fR باید گزینه \f3-port\fR را مشخص کنید\&. برای مثال، دستور زیر دیمن سیستم فعال‌سازی و یک رجیستری را روی پورت پیش‌فرض رجیستری (1099) راه‌اندازی می‌کند: .sp .nf \f3rmid \-J\-Djava\&.security\&.policy=rmid\&.policy \-port 1099\fP .fi .sp .SH "راه‌اندازی RMID در صورت تقاضا (START RMID ON DEMAND)" یک روش جایگزین برای راه‌اندازی \f3rmid\fR از خط فرمان، پیکربندی \f3inetd\fR (در Oracle Solaris) یا \f3xinetd\fR (در لینوکس) است تا \f3rmid\fR را در صورت تقاضا (on demand) راه‌اندازی کند\&. .PP هنگامی که RMID شروع به کار می‌کند، تلاش می‌کند تا با فراخوانی متد \f3System\&.inheritedChannel\fR یک کانال موروثی (به‌ارث‌رسیده از \f3inetd\fR/\f3xinetd\fR) به دست آورد\&. اگر کانال موروثی null باشد یا نمونه‌ای از \f3java\&.nio\&.channels\&.ServerSocketChannel\fR نباشد، RMID فرض می‌کند که توسط \f3inetd\fR/\f3xinetd\fR راه‌اندازی نشده است و همان‌طور که پیش‌تر شرح داده شد شروع به کار می‌کند\&. .PP اگر کانال موروثی نمونه‌ای از \f3ServerSocketChannel\fR باشد، RMID از \f3java\&.net\&.ServerSocket\fR به‌دست‌آمده از \f3ServerSocketChannel\fR به عنوان سوکت سروری استفاده می‌کند که درخواست‌های اشیای دوردست صادرشده خود را می‌پذیرد: رجیستری که \f3java\&.rmi\&.activation\&.ActivationSystem\fR در آن مقید شده است و شیء دوردست \f3java\&.rmi\&.activation\&.Activator\fR\&. در این حالت، رفتار RMID مشابه زمانی است که از خط فرمان راه‌اندازی می‌شود، مگر در موارد زیر: .TP 0.2i \(bu خروجی چاپ‌شده در \f3System\&.err\fR به یک فایل هدایت می‌شود\&. این فایل در دایرکتوری مشخص‌شده توسط ویژگی سیستمی \f3java\&.io\&.tmpdir\fR (معمولاً \f3/var/tmp\fR یا \f3/tmp\fR) با پیشوند \f3rmid-err\fR و پسوند \f3tmp\fR قرار می‌گیرد\&. .TP 0.2i \(bu گزینه \f3-port\fR مجاز نیست\&. اگر این گزینه مشخص شود، RMID با یک پیام خطا خارج می‌شود\&. .TP 0.2i \(bu گزینه \f3-log\fR الزامی است\&. اگر این گزینه مشخص نشود، RMID با یک پیام خطا خارج می‌شود\&. .PP برای جزئیات در مورد نحوه پیکربندی سرویس‌ها جهت راه‌اندازی بر حسب تقاضا، به صفحات راهنمای \f3inetd\fR (در Oracle Solaris) یا \f3xinetd\fR (در لینوکس) مراجعه کنید\&. .SH "گزینه‌ها (OPTIONS)" .TP -C\fIoption\fR .br گزینه‌ای را مشخص می‌کند که هنگام ایجاد هر پردازش فرزند (گروه فعال‌سازی) توسط دستور \f3rmid\fR، به عنوان آرگومان خط فرمان به آن پردازش ارسال می‌شود\&. به عنوان مثال، می‌توانید یک ویژگی را به هر ماشین مجازی ایجادشده توسط دیمن سیستم فعال‌سازی ارسال کنید: .sp .nf \f3rmid \-C\-Dsome\&.property=value\fP .fi .sp این قابلیت برای ارسال آرگومان‌های خط فرمان به پردازش‌های فرزند می‌تواند برای اشکال‌زدایی مفید باشد\&. برای نمونه، دستور زیر ثبت وقایع فراخوانی سرور (server-call logging) را در تمام JVMهای فرزند فعال می‌کند: .sp .nf \f3rmid \-C\-Djava\&.rmi\&.server\&.logCalls=true\fP .fi .sp .TP -J\fIoption\fR .br گزینه‌ای را مشخص می‌کند که به مفسر جاوا که در حال اجرای RMID است ارسال می‌شود\&. به عنوان مثال، برای مشخص کردن اینکه دستور \f3rmid\fR از یک فایل خط‌مشی به نام \f3rmid\&.policy\fR استفاده کند، گزینه \f3-J\fR می‌تواند برای تعریف ویژگی \f3java\&.security\&.policy\fR در خط فرمان \f3rmid\fR استفاده شود، برای نمونه: .sp .nf \f3rmid \-J\-Djava\&.security\&.policy=rmid\&.policy\fP .fi .sp .TP -J-Dsun\&.rmi\&.activation\&.execPolicy=\fIpolicy\fR .br خط‌مشی‌ای را مشخص می‌کند که RMID برای بررسی دستورات و گزینه‌های خط فرمان به کار گرفته‌شده جهت راه‌اندازی JVM که یک گروه فعال‌سازی در آن اجرا می‌شود، به کار می‌برد\&. لطفاً توجه داشته باشید که این گزینه فقط در پیاده‌سازی دیمن فعال‌سازی Java RMI اوراکل وجود دارد\&. اگر این ویژگی در خط فرمان مشخص نشود، نتیجه همانند حالتی است که \f3-J-Dsun\&.rmi\&.activation\&.execPolicy=default\fR مشخص شده باشد\&. مقادیر ممکن برای \f3policy\fR می‌تواند \f3default\fR، \f3policyClassName\fR یا \f3none\fR باشد\&. .RS .TP 0.2i \(bu default مقدار \f3default\fR یا تعیین‌نشده برای \f3execPolicy\fR به دستور \f3rmid\fR اجازه می‌دهد دستورات را با گزینه‌های خط فرمان خاص تنها در صورتی اجرا کند که به دستور \f3rmid\fR در فایل خط‌مشی امنیتی مورد استفاده آن، مجوز اجرای آن دستورات و گزینه‌ها اعطا شده باشد\&. تنها پیاده‌سازی پیش‌فرض گروه فعال‌سازی می‌تواند با خط‌مشی اجرای پیش‌فرض استفاده شود\&. دستور \f3rmid\fR یک JVM را برای یک گروه فعال‌سازی با اطلاعات موجود در توصیف‌گر گروه فعال‌سازی ثبت‌شده گروه، یعنی \f3ActivationGroupDesc\fR راه‌اندازی می‌کند\&. توصیف‌گر گروه یک \f3ActivationGroupDesc\&.CommandEnvironment\fR اختیاری را مشخص می‌کند که شامل دستوری برای اجرا جهت راه‌اندازی گروه فعال‌سازی و هرگونه گزینه خط فرمان برای افزودن به خط فرمان است\&. به‌طور پیش‌فرض، دستور \f3rmid\fR از دستور \f3java\fR موجود در \f3java\&.home\fR استفاده می‌کند\&. توصیف‌گر گروه همچنین شامل بازنویسی‌های ویژگی‌ها است که به صورت گزینه‌هایی تعریف‌شده به خط فرمان اضافه می‌شوند: \f3-D=\fR\&. مجوز \f3com\&.sun\&.rmi\&.rmid\&.ExecPermission\fR به دستور \f3rmid\fR اجازه می‌دهد تا دستوری را که در \f3CommandEnvironment\fR توصیف‌گر گروه برای راه‌اندازی گروه فعال‌سازی مشخص شده است، اجرا کند\&. مجوز \f3com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission\fR به دستور \f3rmid\fR امکان می‌دهد از گزینه‌های خط فرمان مشخص‌شده به عنوان بازنویسی‌های ویژگی‌ها در توصیف‌گر گروه یا به عنوان گزینه‌هایی در \f3CommandEnvironment\fR در هنگام راه‌اندازی گروه فعال‌سازی استفاده کند\&. هنگام اعطای مجوز به دستور \f3rmid\fR برای اجرای دستورات و گزینه‌های مختلف، مجوزهای \f3ExecPermission\fR و \f3ExecOptionPermission\fR باید به تمام منابع کد اعطا شوند\&. \fIExecPermission\fR کلاس \f3ExecPermission\fR نشان‌دهنده مجوز برای دستور \f3rmid\fR جهت اجرای یک دستور خاص برای راه‌اندازی گروه فعال‌سازی است\&. \fIنحو (Syntax)\fR: نام یک \f3ExecPermission\fR، نام مسیر یک دستور است تا به دستور \f3rmid\fR مجوز اجرای آن اعطا شود\&. نام مسیری که به یک اسلش (/) و یک ستاره (*) ختم می‌شود نشان می‌دهد که تمام فایل‌های موجود در آن دایرکتوری در نظر گرفته می‌شوند که در آن اسلش کاراکتر جداکننده فایل، یعنی \f3File\&.separatorChar\fR است\&. نام مسیری که به یک اسلش (/) و یک علامت منها (-) ختم می‌شود تمام فایل‌ها و زیردایرکتوری‌های موجود در آن دایرکتوری را (به‌صورت بازگشتی) نشان می‌دهد\&. نام مسیری که از نشانه خاص \f3<>\fR تشکیل شده است با هر فایلی مطابقت دارد\&. نام مسیری که از یک ستاره (*) تشکیل شده باشد، تمام فایل‌های موجود در دایرکتوری جاری را نشان می‌دهد\&. نام مسیری که از یک علامت منها (-) تشکیل شده باشد، تمام فایل‌های موجود در دایرکتوری جاری و (به‌صورت بازگشتی) تمام فایل‌ها و زیردایرکتوری‌های موجود در دایرکتوری جاری را نشان می‌دهد\&. \fIExecOptionPermission\fR کلاس \f3ExecOptionPermission\fR نشان‌دهنده مجوز برای دستور \f3rmid\fR جهت استفاده از یک گزینه خط فرمان خاص هنگام راه‌اندازی یک گروه فعال‌سازی است\&. نام یک \f3ExecOptionPermission\fR مقدار یک گزینه خط فرمان است\&. \fIنحو (Syntax)\fR: گزینه‌ها از یک طرح نویسه عام (wildcard) محدود پشتیبانی می‌کنند\&. یک ستاره نشانه تطابق عام است و می‌تواند به عنوان خود نام گزینه ظاهر شود (با هر گزینه‌ای مطابقت دارد)، یا یک ستاره (*) تنها زمانی می‌تواند در انتهای نام گزینه ظاهر شود که ستاره (*) بعد از یک نقطه (\&.) یا علامت مساوی (=) بیاید\&. برای مثال: \f3*\fR یا \f3-Dmydir\&.*\fR یا \f3-Da\&.b\&.c=*\fR معتبر است، اما \f3*mydir\fR یا \f3-Da*b\fR یا \f3ab*\fR معتبر نیست\&. \fIفایل خط‌مشی برای rmid (Policy file for rmid)\fR هنگامی که به دستور \f3rmid\fR مجوز اجرای دستورات و گزینه‌های مختلف را اعطا می‌کنید، مجوزهای \f3ExecPermission\fR و \f3ExecOptionPermission\fR باید به تمام منابع کد اعطا شوند (به‌طور سراسری)\&. اعطای این مجوزها به‌طور سراسری ایمن است زیرا فقط دستور \f3rmid\fR این مجوزها را بررسی می‌کند\&. یک نمونه فایل خط‌مشی که مجوزهای مختلف اجرا را به دستور \f3rmid\fR اعطا می‌کند عبارت است از: .sp .nf \f3grant {\fP \f3 permission com\&.sun\&.rmi\&.rmid\&.ExecPermission\fP \f3 "/files/apps/java/jdk1\&.7\&.0/solaris/bin/java";\fP \f3\fP \f3 permission com\&.sun\&.rmi\&.rmid\&.ExecPermission\fP \f3 "/files/apps/rmidcmds/*";\fP \f3\fP \f3 permission com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission\fP \f3 "\-Djava\&.security\&.policy=/files/policies/group\&.policy";\fP \f3\fP \f3 permission com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission\fP \f3 "\-Djava\&.security\&.debug=*";\fP \f3\fP \f3 permission com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission\fP \f3 "\-Dsun\&.rmi\&.*";\fP \f3};\fP .fi .sp نخستین مجوز اعطاشده به دستور \f3rmid\fR امکان می‌دهد تا نسخه 1\&.7\&.0 دستور \f3java\fR را که با نام مسیر صریح آن مشخص شده است اجرا کند\&. به‌طور پیش‌فرض، نسخه دستور \f3java\fR موجود در \f3java\&.home\fR استفاده می‌شود (همان نسخه‌ای که دستور \f3rmid\fR استفاده می‌کند) و نیازی به مشخص شدن در فایل خط‌مشی ندارد\&. دومین مجوز به دستور \f3rmid\fR اجازه می‌دهد هر دستوری را در دایرکتوری \f3/files/apps/rmidcmds\fR اجرا کند\&. سومین مجوز اعطاشده، یعنی یک \f3ExecOptionPermission\fR، به دستور \f3rmid\fR اجازه می‌دهد یک گروه فعال‌سازی را راه‌اندازی کند که فایل خط‌مشی امنیتی را برابر با \f3/files/policies/group\&.policy\fR تعریف می‌کند\&. مجوز بعدی اجازه می‌دهد تا ویژگی \f3java\&.security\&.debug\fR توسط یک گروه فعال‌سازی استفاده شود\&. آخرین مجوز به هر ویژگی در سلسله‌مراتب نام ویژگی‌های \f3sun\&.rmi\fR اجازه می‌دهد توسط گروه‌های فعال‌سازی استفاده شود\&. برای راه‌اندازی دستور \f3rmid\fR با یک فایل خط‌مشی، ویژگی \f3java\&.security\&.policy\fR باید در خط فرمان \f3rmid\fR مشخص شود، برای مثال: \f3rmid -J-Djava\&.security\&.policy=rmid\&.policy\fR\&. .TP 0.2i \(bu اگر رفتار پیش‌فرض به اندازه کافی انعطاف‌پذیر نباشد، یک مدیر سیستم می‌تواند هنگام راه‌اندازی دستور \f3rmid\fR، نام کلاسی را ارائه دهد که متد \f3checkExecCommand\fR آن برای بررسی دستورات اجراشونده توسط دستور \f3rmid\fR فراخوانی شود\&. مقدار \f3policyClassName\fR یک کلاس عمومی (public) با یک سازنده عمومی بدون آرگومان و پیاده‌سازی متد \f3checkExecCommand\fR زیر را مشخص می‌کند: .sp .nf \f3 public void checkExecCommand(ActivationGroupDesc desc, String[] command)\fP \f3 throws SecurityException;\fP .fi .sp پیش از راه‌اندازی یک گروه فعال‌سازی، دستور \f3rmid\fR متد \f3checkExecCommand\fR مربوط به خط‌مشی را فراخوانی کرده و توصیف‌گر گروه فعال‌سازی و آرایه‌ای حاوی دستور کامل برای راه‌اندازی گروه فعال‌سازی را به آن ارسال می‌کند\&. اگر \f3checkExecCommand\fR یک \f3SecurityException\fR پرتاب کند، دستور \f3rmid\fR گروه فعال‌سازی را راه‌اندازی نمی‌کند و یک \f3ActivationException\fR به فراخواننده‌ای که در حال تلاش برای فعال‌سازی شیء است پرتاب می‌شود\&. .TP 0.2i \(bu none اگر مقدار ویژگی \f3sun\&.rmi\&.activation\&.execPolicy\fR برابر با \f3none\fR باشد، دستور \f3rmid\fR هیچ‌گونه اعتبارسنجی روی دستورات راه‌اندازی گروه‌های فعال‌سازی انجام نمی‌دهد\&. .RE .TP -log \fIdir\fR .br نام دایرکتوری‌ای را مشخص می‌کند که دیمن سیستم فعال‌سازی برای نوشتن پایگاه‌داده و اطلاعات مرتبط خود استفاده می‌کند\&. دایرکتوری لاگ به‌طور پیش‌فرض اقدام به ایجاد لاگ در دایرکتوری‌ای می‌کند که دستور \f3rmid\fR در آن اجرا شده است\&. .TP -port \fIport\fR .br پورتی را که رجیستری استفاده می‌کند مشخص می‌نماید\&. دیمن سیستم فعال‌سازی شیء \f3ActivationSystem\fR را با نام \f3java\&.rmi\&.activation\&.ActivationSystem\fR در این رجیستری مقید می‌کند\&. شیء \f3ActivationSystem\fR در دستگاه محلی را می‌توان با فراخوانی متد \f3Naming\&.lookup\fR زیر به دست آورد: .sp .nf \f3import java\&.rmi\&.*; \fP \f3 import java\&.rmi\&.activation\&.*;\fP \f3 ActivationSystem system; system = (ActivationSystem)\fP \f3 Naming\&.lookup("//:port/java\&.rmi\&.activation\&.ActivationSystem");\fP .fi .sp .TP -stop .br فراخوانی جاری دستور \f3rmid\fR را برای پورت مشخص‌شده توسط گزینه \f3-port\fR متوقف می‌کند\&. اگر هیچ پورتی مشخص نشود، این گزینه فراخوانی \f3rmid\fR در حال اجرا روی پورت 1098 را متوقف می‌کند\&. .SH "متغیرهای محیطی (ENVIRONMENT VARIABLES)" .TP CLASSPATH برای ارائه مسیری به کلاس‌های تعریف‌شده توسط کاربر به سیستم استفاده می‌شود\&. دایرکتوری‌ها با دونقطه (:) از هم جدا می‌شوند، برای مثال: \f3\&.:/usr/local/java/classes\fR\&. .SH "همچنین ببینید (SEE ALSO)" .TP 0.2i \(bu java(1) .TP 0.2i \(bu راهنمای تنظیم مسیر کلاس (Setting the Class Path) .RE .br 'pl 8.5i 'bp