JWEBSERVER(1) JDK Commands JWEBSERVER(1)

jwebserver-openjdk21 - سرور وب ساده و سبک برای ارائه فایل‌های استاتیک در OpenJDK 21

jwebserver [گزینه‌ها]

گزینه‌ها
گزینه‌های خط فرمان. برای توضیحات دقیق گزینه‌ها، بخش گزینه‌ها (OPTIONS) را ببینید.

ابزار jwebserver یک سرور HTTP مینیمال و ساده ارائه می‌دهد که برای ساخت نمونه اولیه (پروتوتایپ)، آزمایش و اشکال‌زدایی طراحی شده است. این سرور سلسله‌مراتب یک پوشه را مدیریت کرده و فقط فایل‌های استاتیک (ایستا) را ارائه می‌دهد. تنها از پروتکل HTTP/1.1 پشتیبانی می‌شود؛ نسخه‌های HTTP/2 و HTTPS پشتیبانی نمی‌شوند.

تنها به درخواست‌های پایا (idempotent) از نوع HEAD و GET پاسخ داده می‌شود. هرگونه درخواست دیگر با پاسخ 501 - Not Implemented یا 405 - Not Allowed مواجه می‌شود. درخواست‌های GET به صورت زیر به پوشه سرویس‌دهی‌شده نگاشت می‌شوند:

•
اگر منبع درخواست‌شده یک فایل باشد، محتوای آن ارسال می‌شود.
•
اگر منبع درخواست‌شده پوشه‌ای حاوی یک فایل شاخص (index) باشد، محتوای فایل شاخص ارسال می‌شود.
•
در غیر این صورت، نام تمام فایل‌ها و زیرپوشه‌های آن پوشه فهرست می‌شود. پیوندهای نمادین (Symbolic links) و فایل‌های پنهان فهرست یا ارسال نمی‌شوند.

انواع MIME به طور خودکار و با استفاده از جدول داخلی پیکربندی می‌شوند. به عنوان مثال، فایل‌های .html به صورت text/html و فایل‌های .java به صورت text/plain ارائه می‌شوند.

ابزار jwebserver در ماژول jdk.httpserver قرار دارد و همچنین می‌توان آن را با دستور java -m jdk.httpserver اجرا کرد. این ابزار بر پایه پیاده‌سازی سرور وب در بسته com.sun.net.httpserver توسعه یافته است. کلاس com.sun.net.httpserver.SimpleFileServer یک روش برنامه‌نویسی برای دریافت سرور و اجزای آن جهت استفاده مجدد و توسعه ارائه می‌دهد.


jwebserver [-b bind address] [-p port] [-d directory]
           [-o none|info|verbose] [-h to show options]
           [-version to show version information]

-h یا -? یا --help
پیام راهنما را چاپ کرده و خارج می‌شود.
-b addr یا --bind-address addr
آدرس مبدا برای اتصال (bind) را مشخص می‌کند. پیش‌فرض: 127.0.0.1 یا ::1 (حلقه محلی / loopback). برای تمام رابط‌های شبکه از -b 0.0.0.0 یا -b :: استفاده کنید.
-d dir یا --directory dir
پوشه‌ای را که باید ارائه شود مشخص می‌کند. پیش‌فرض: پوشه جاری.
-o level یا --output level
قالب خروجی لاگ را تعیین می‌کند. none | info | verbose. پیش‌فرض: info.
-p port یا --port port
درگاه (port) شنود را مشخص می‌کند. پیش‌فرض: 8000.
-version یا --version
اطلاعات نسخه را چاپ کرده و خارج می‌شود.

برای متوقف کردن سرور، کلیدهای Ctrl + C را فشار دهید.

دستور زیر «سرور وب ساده» را راه‌اندازی می‌کند:


$ jwebserver

اگر راه‌اندازی با موفقیت انجام شود، سرور پیامی در System.out چاپ می‌کند که آدرس محلی و مسیر مطلق پوشه در حال سرویس‌دهی را نشان می‌دهد. برای مثال:


$ jwebserver
Binding to loopback by default. For all interfaces use "-b 0.0.0.0" or "-b ::".
Serving /cwd and subdirectories on 127.0.0.1 port 8000
URL http://127.0.0.1:8000/

به طور پیش‌فرض، سرور در پیش‌زمینه اجرا شده و به آدرس لوپ‌بک و درگاه 8000 متصل می‌شود. این مقدار را می‌توان با گزینه‌های -b و -p تغییر داد. برای مثال، برای اتصال سرور وب ساده به تمام رابط‌های شبکه:


$ jwebserver -b 0.0.0.0
Serving /cwd and subdirectories on 0.0.0.0 (all interfaces) port 8000
URL http://123.456.7.891:8000/

توجه داشته باشید که این کار سرور وب را برای تمام میزبان‌های موجود در شبکه در دسترس قرار می‌دهد. این کار را انجام ندهید مگر اینکه مطمئن باشید سرور هیچ اطلاعات حساسی را فاش نمی‌کند.

به عنوان مثال دیگر، برای اجرا روی درگاه 9000 از دستور زیر استفاده کنید:


$ jwebserver -p 9000

به طور پیش‌فرض، فایل‌های پوشه جاری ارائه می‌شوند. می‌توان پوشه دیگری را با گزینه -d مشخص کرد.

به طور پیش‌فرض، هر درخواست در کنسول ثبت (log) می‌شود. خروجی شبیه به این است:


127.0.0.1 - - [10/Feb/2021:14:34:11 +0000] "GET /some/subdirectory/ HTTP/1.1" 200 -

خروجی لاگ را می‌توان با گزینه -o تغییر داد. تنظیم پیش‌فرض info است. تنظیم verbose علاوه بر این، هدرهای درخواست و پاسخ و همچنین مسیر مطلق منبع درخواستی را نیز شامل می‌شود.

پس از راه‌اندازی موفقیت‌آمیز، سرور تا زمانی که متوقف شود به کار خود ادامه می‌دهد. در پلتفرم‌های یونیکس، می‌توان با ارسال سیگنال SIGINT (Ctrl+C در پنجره ترمینال) سرور را متوقف کرد.

گزینه -h یک پیام راهنما را نمایش می‌دهد که نحوه استفاده و گزینه‌های jwebserver را شرح می‌دهد.

2023 JDK 21