'\" 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 \- دیمن سیستم فعال‌سازی RMI جاوا (نسخه ۱۱) .SH "خلاصه دستور (SYNOPSIS)" .sp .nf \fBrmid\fR [\fIگزینه‌ها\fR] .fi .sp .TP \fIگزینه‌ها\fR گزینه‌های خط فرمان؛ بخش «گزینه‌ها» را ببینید\&. .SH "توضیحات (DESCRIPTION)" دستور \f3rmid\fR دیمن سیستم فعال‌سازی را راه‌اندازی می‌کند\&. پیش از آنکه اشیاء قابل‌فعال‌سازی بتوانند در سیستم فعال‌سازی ثبت شوند یا درون یک JVM فعال گردند، دیمن سیستم فعال‌سازی باید اجرا شده باشد\&. برای جزئیات بیشتر درباره نحوه نوشتن برنامه‌هایی که از اشیاء قابل‌فعال‌سازی استفاده می‌کنند، راهنمای \fIUsing Activation\fR را در نشانی http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/rmi/activation/overview\&.html مشاهده کنید\&. .PP دیمن را با اجرای دستور \f3rmid\fR و تعیین یک فایل خط‌مشی امنیتی (Security Policy) به صورت زیر راه‌اندازی کنید: .sp .nf \f3rmid \-J\-Djava\&.security\&.policy=rmid\&.policy\fP .fi .nf \f3\fP .fi .sp هنگام اجرای پیاده‌سازی اوراکل از دستور \f3rmid\fR، به صورت پیش‌فرض باید یک فایل خط‌مشی امنیتی را مشخص کنید تا دستور \f3rmid\fR بتواند بررسی کند که آیا اطلاعات موجود در هر \f3ActivationGroupDesc\fR مجاز به استفاده برای راه‌اندازی یک JVM جهت گروه فعال‌سازی هست یا خیر\&. به‌طور خاص، دستور و گزینه‌های مشخص‌شده توسط \f3CommandEnvironment\fR و هر ویژگی (Property) ارسال‌شده به سازنده \f3ActivationGroupDesc\fR اکنون باید صریحاً در فایل خط‌مشی امنیتی دستور \f3rmid\fR مجاز شمرده شده باشند\&. مقدار ویژگی \f3sun\&.rmi\&.activation\&.execPolicy\fR مشخص‌کننده خط‌مشی‌ای است که دستور \f3rmid\fR برای تعیین امکان استفاده از اطلاعات یک \f3ActivationGroupDesc\fR در راه‌اندازی JVM گروه فعال‌سازی به کار می‌گیرد\&. برای اطلاعات بیشتر، توضیحات گزینه -J-Dsun\&.rmi\&.activation\&.execPolicy=policy را مشاهده کنید\&. .PP اجرای دستور \f3rmid\fR فعال‌کننده (Activator) و یک رجیستری داخلی را روی درگاه پیش‌فرض ۱۰۹۸ راه‌اندازی کرده و یک \f3ActivationSystem\fR را به نام \f3java\&.rmi\&.activation\&.ActivationSystem\fR در این رجیستری داخلی متصل (Bind) می‌کند\&. .PP برای مشخص کردن درگاهی دیگر برای رجیستری، هنگام اجرای دستور \f3rmid\fR باید گزینه \f3-port\fR را مشخص کنید\&. برای نمونه، دستور زیر دیمن سیستم فعال‌سازی و یک رجیستری را روی درگاه پیش‌فرض رجیستری (۱۰۹۹) راه‌اندازی می‌کند\&. .sp .nf \f3rmid \-J\-Djava\&.security\&.policy=rmid\&.policy \-port 1099\fP .fi .nf \f3\fP .fi .sp .SH "راه‌اندازی RMID در صورت نیاز (START RMID ON DEMAND)" یک جایگزین برای راه‌اندازی \f3rmid\fR از خط فرمان، پیکربندی \f3inetd\fR (در اوراکل سولاریس) یا \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 (اوراکل سولاریس) یا \f3xinetd\fR (لینوکس) را مشاهده کنید\&. .SH "گزینه‌ها (OPTIONS)" .TP -C\fIoption\fR .br گزینه‌ای را مشخص می‌کند که هنگام ایجاد هر فرآیند فرزند (گروه فعال‌سازی) توسط دستور \f3rmid\fR، به عنوان آرگومان خط فرمان به آن ارسال می‌شود\&. برای نمونه، می‌توانید یک ویژگی (Property) را به هر ماشین مجازی ایجادشده توسط دیمن سیستم فعال‌سازی ارسال کنید: .sp .nf \f3rmid \-C\-Dsome\&.property=value\fP .fi .nf \f3\fP .fi .sp این قابلیت برای ارسال آرگومان‌های خط فرمان به فرآیندهای فرزند می‌تواند برای اشکال‌زدایی مفید باشد\&. برای نمونه، دستور زیر گزارش‌گیری فراخوانی‌های سرور (Server-call logging) را در تمام JVMهای فرزند فعال می‌کند\&. .sp .nf \f3rmid \-C\-Djava\&.rmi\&.server\&.logCalls=true\fP .fi .nf \f3\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 .nf \f3\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 .fi .nf \f3 permission com\&.sun\&.rmi\&.rmid\&.ExecPermission\fP .fi .nf \f3 "/files/apps/java/jdk1\&.7\&.0/solaris/bin/java";\fP .fi .nf \f3\fP .fi .nf \f3 permission com\&.sun\&.rmi\&.rmid\&.ExecPermission\fP .fi .nf \f3 "/files/apps/rmidcmds/*";\fP .fi .nf \f3\fP .fi .nf \f3 permission com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission\fP .fi .nf \f3 "\-Djava\&.security\&.policy=/files/policies/group\&.policy";\fP .fi .nf \f3\fP .fi .nf \f3 permission com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission\fP .fi .nf \f3 "\-Djava\&.security\&.debug=*";\fP .fi .nf \f3\fP .fi .nf \f3 permission com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission\fP .fi .nf \f3 "\-Dsun\&.rmi\&.*";\fP .fi .nf \f3};\fP .fi .nf \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 .fi .nf \f3 throws SecurityException;\fP .fi .nf \f3\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 نام دایرکتوری‌ای را مشخص می‌کند که دیمن سیستم فعال‌سازی برای نوشتن پایگاه داده و اطلاعات مرتبط خود استفاده می‌کند\&. دایرکتوری گزارش‌ها به صورت پیش‌فرض یک گزارش (log) در دایرکتوری‌ای که دستور \f3rmid\fR در آن اجرا شده است ایجاد می‌کند\&. .TP -port \fIport\fR .br درگاهی را مشخص می‌کند که رجیستری از آن استفاده می‌کند\&. دیمن سیستم فعال‌سازی \f3ActivationSystem\fR را با نام \f3java\&.rmi\&.activation\&.ActivationSystem\fR در این رجیستری ثبت (Bind) می‌کند\&. شیء \f3ActivationSystem\fR روی ماشین محلی را می‌توان با فراخوانی متد \f3Naming\&.lookup\fR به صورت زیر به دست آورد: .sp .nf \f3import java\&.rmi\&.*; \fP .fi .nf \f3 import java\&.rmi\&.activation\&.*;\fP .fi .nf \f3\fP .fi .nf \f3 ActivationSystem system; system = (ActivationSystem)\fP .fi .nf \f3 Naming\&.lookup("//:port/java\&.rmi\&.activation\&.ActivationSystem");\fP .fi .nf \f3\fP .fi .sp .TP -stop .br اجرای جاری دستور \f3rmid\fR را برای درگاه مشخص‌شده توسط گزینه \f3-port\fR متوقف می‌کند\&. اگر درگاهی مشخص نشود، این گزینه اجرای \f3rmid\fR روی درگاه ۱۰۹۸ را متوقف می‌سازد\&. .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