راه اندازی هاست جاوا Application در IIS با استفاده از HttpPlatformHandler
در این مقاله به بررسی راه اندازی هاست جاوا اپلیکیشن می پردازیم اما در ابتدا بایستی گفت به همراه معرفی ویندوز سرور ۲۰۱۲ و به طبع آن IIS 8 یک قابلیت بسیار کارآمد و عالی در IIS به نام HttpPlatformHandler معرفی شد.
HttpPlatformHandler همان سرویسی است که در وبسایت های Microsoft Azure برای اجرای جاوا از آن استفاده می شود. حال پس از معرفی آن در IIS 8 می توانید پروژه هایی مانند Java را در IIS لوکال و یا سرور خود اجرا نمایید.
HttpPlatformHandler یک ماژول IIS است که توانایی انجام امور زیر را دارد:
۱- پردازش و مدیریت HTTP – این مورد می تواند هر پردازشی باشد. تنها کافیست درخواست آن روی پورت HTTP دریافت شود. برای مثال از Platform های Tomcat، Jetty، Node.exe، Ruby On Rails و …
به شما پیشنهاد می شود برای کسب اطلاعات در حوزه tomcat چیست مقاله اختصاصی ما را مطالعه نمایید.
۲- مدیریت درخواست های Proxy برای پردازش
HttpPlatformHandler اجرای چنین سناریو هایی را با استفاده از پیکربندی فایل web.config در Application مورد نظر انجام می دهد.
نمونه ای از کد Config که در فایل web.config قرار میگیرد:
[php] <configSchema> <sectionSchema name="system.webServer/httpPlatform"> <attribute name="processPath" type="string" expanded="true"/> <attribute name="arguments" type="string" expanded="true" defaultValue=""/> <attribute name="startupTimeLimit" type="uint" defaultValue="10" validationType="integerRange" validationParameter="0,3600"/> <!-- in seconds --> <attribute name="startupRetryCount" type="uint" defaultValue="10" validationType="integerRange" validationParameter="0,100"/> <attribute name="rapidFailsPerMinute" type="uint" defaultValue="10" validationType="integerRange" validationParameter="0,100"/> <attribute name="requestTimeout" type="timeSpan" defaultValue="00:02:00" validationType="timeSpanRange" validationParameter="0,2592000,60"/> <attribute name="stdoutLogEnabled" type="bool" defaultValue="false" /> <attribute name="stdoutLogFile" type="string" defaultValue="httpplatform-stdout" expanded="true"/> <attribute name="processesPerApplication" type="uint" defaultValue="1" validationType="integerRange" validationParameter="1,100"/> <element name="environmentVariables"> <collection addElement="environmentVariable" clearElement="clear"> <attribute name="name" type="string" required="true" validationType="nonEmptyString"/> <attribute name="value" type="string" required="true"/> </collection> </element> </sectionSchema> </configSchema> [/php]
– مرجع کد Configuration
– دانلود HttpPlatformHandler از اینجا و نصب آن از طریق Microsoft Web Platform Installer و یا دانلود لینک مستقیم x64 از اینجا و لینک مستقیم x86 از اینجا.
بعد از این که ماژولHttpPlatformHandler را نصب کردید، سرور شما آماده میزبانی پلتفرم هایی مانند جاوا، Ruby On Rails، Node JS و … می باشد.
در این مثال کاربردی سعی داریم نشان دهیم چگونه می توان با استفاده از Tomcat که یک Java Servlet می باشد یک هاست جاوا Application را تحت IIS اجرا کنیم.
- اولین کاری که باید انجام دهیم این است که یک نسخه از Tomcat را دانلود کنیم. برای دانلود از این لینک استفاده نمایید.
بعد از این که Tomcat را دانلود کردید، پوشه آن را در مسیر مورد نظر خود مثلا c:\dev\javasites\bin\apache-tomcat-8.0.15 آنزیپ نمایید.
- حال در فایل های Tomcat که Unzip شده اند بایستی یک تغییر کوچک را اعمال کنیم. فایل xml را که در پوشه conf قرار دارد را به شکل زیر ویرایش نمایید:
- HTTP connector port=${port.http}
- دانلود یک پروژه Java جهت تست و قرار دادن فایل .war پروژه در پوشه webapps واقع در پوشه Tomcat
در این مقاله از پروژه Pebble که یک پروژه متن باز Java می باشد، استفاده شده است. جهت دانلود آن این لینک استفاده نمایید.
- حال در IIS Manager یک وبسایت جدید ایجاد نمایید.
- جزِئیات مربوط به تنظیم وبسایت و اختصاص دادن فولدر مربوط به پروژه جاوا به وبسایت را انجام دهید و تنظیمات را Save نمایید.
- بعد از این که وب سایت را در IIS ایجاد کردید، اقدام به ایجاد یک فایل با نام config نمایید و در مسیر پوشه وبسایت خود قرار دهید. مثلا مسیر: c:\dev\javasites\web.config
- فایل config را Edit نمایید و قطعه کد زیر را در ان قرار دهید و Save کنید.
[php] <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <add name="httpplatformhandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/> </handlers> <httpPlatform processPath="c:\dev\javasites\bin\apache-tomcat-8.0.15\bin\startup.bat" arguments="" stdoutLogEnabled="true" stdoutLogFile="\\?c:\dev\javasites\log.txt"> <environmentVariables> <environmentVariable name="JRE_HOME" value="%programfiles%\java\jdk1.8.0_25" /> <environmentVariable name="CATALINA_HOME" value="c:\dev\javasites\bin\apache-tomcat-8.0.15" /> </environmentVariables> </httpPlatform> </system.webServer> </configuration> [/php]
- توجه نمایید که در قطعه کد بالا مسیر های تعیین شده را بر حسب تنظیماتی که در سیستم خود انجام داده اید تغییر دهید.
- مقدار مقابل processPath را مسیر فایل bat واقع در پوشه Tomcat قرار دهید.
- در صورتی که مقدار stdoutLogEnabled برابر با True باشد Log گیری در وبسایت فعال میشود.
- در مسیر مقابل stoutLogFile آدرس جایی که Log ها ذخیره میشوند قرار می گیرد.
- در تگ <environmentVariables> مقدار JRE_HOME باید روی مسیری که جاوا روی سیستم نصب شده است تنظیم شود.
- در تگ <environmentVariables> مقدار CATALINA_HOME باید روی مسیر پوشه Tomcat تنظیم شود.
بعد از این که تمامی تنظیمات بالا بطور صحیح انجام شد وقت آن است تا پروژه را در مرورگر خود با آدرس http://localhost/pebble لود کنیم و نتیجه کار را ببینیم: