在IIS執行Java JSP — SERVER 2012R2

iis-java-jsp-with-server-2012-r2
今天看到一篇文微軟之前發布的文章:Announcing the Release of the HttpPlatformHandler Module for IIS 8+,大意是關於如何在IIS上運行JAVA網頁應用程式,雖然說是蠻久之前的文章,但是看到之後立刻讓我回想起帶大一年半前的努力嘗試如何用IIS架JAVA網頁應用程式。
後來其實一直失敗,就是沒試出來,所以現在來趕快試試看,彌補之前的失敗心情!
我的測試平台都是架構在AZURE上,非常方便,測完即丟呀!
IIS透過HttpPlatformHandler來達到在IIS上執行JAVA網頁應用程式的目的,Microsoft Azure Web Apps就是用此種方法來實作的,看起來是微軟終於釋出了此模組。
HttpPlatformHandler的功能有兩個(節錄自保哥部落格):[
- Process Management of http listeners — 任意第三方程序原本需要監聽 (listen) 可接受 HTTP 要求的通訊埠 (Port),都改交由 IIS 來接受要求。 例如 Tomcat, Jetty, Node.exe, Ruby 等等,當然 ASP.NET Core 的 Kestrel 也是屬於這個類型的程序。
- Proxy requests to the process that it manages — 將那些交由 IIS 代理監聽的 HTTP 要求轉發到被管理的第三方程序。
簡單來說,原本你可能可以直接用 Node.js 或 Ruby 來執行網站,Node.js 或 Ruby 原本就能監聽 (listen) 通訊埠 (Port),但如果 Node.js 或 Ruby 掛掉的話,網站也就死了。不過若想透過 IIS + HttpPlatformHandler 來管理者些程序,優點就是所有接聽 HTTP 要求的任務都改由 IIS 負責,並且由 IIS 啟動第三方程序 (例如 Node.js 或 Ruby),然後由 IIS 將這些 HTTP 要求轉發到第三方程序中。如果第三方程序掛掉了,IIS 就會視同沒有執行這個程序,自動重新啟動第三方程序。
我個人的腦補是反正所有 Http Request 都交給 IIS 負責接受,若需要第三方來執行那再由 IIS 進行呼叫第三方執行。
HttpPlatformHandler 透過以下 config 中之 configuration 區段來定義啟動,下面之設定檔為全部之設定參數,再不同的環境下會有不同的設定(可參考介紹 IIS 8 全新的 HttpPlatformHandler 模組與 ASP.NET 5 Beta8 重大變更)
可參考:
- Configuration Reference Article
- Download the HttpPlatformHandler
說了一些話,接下來終於輪到實作啦
(我這邊使用TOMCAT 8作為JAVA網頁伺服器,並用Pebble blogging當作我的網頁)
- 安裝 HttpPlatformHandler
可以透過 WebPI 來安裝,或是直接下載安裝檔來安裝 x86/x64
當然還是要推薦使用 WebPI 來安裝,因為 WebPI 來安裝會自動替你決定最適合的安裝檔,不用擔心是否會抓到錯的平台版本檔案
- 下載 TOMCAT 8
這邊要注意的是記得要抓zip檔案,而非執行檔
然後至特定目錄,這邊我全部解壓縮到C:\JavaTest

- 編輯 Tomcat 的 server.xml (位於 conf 資料夾)

將 HTTP connector port 修正為 ${port.http}
要注意一個地方,除了 HTTP 監聽程式連接埠之外的所有監聽程式連接埠都必須停用。在 Tomcat 中,這包括關機、HTTPS 及 AJP 連接埠
- 取得 JAVA 網頁應用程式
這邊使用 Pebble blogging 作為範例 下載後解壓縮了至相對應資料夾,這邊範例為:C:\JavaTest\apache-tomcat-8.0.28\webapps

- 設定 IIS
這邊新增網站都與過相往一樣,就是新增一個網站

- 設定 web.config
最後將相關JAVA參數設定至web.config
- rocessPath — Tomcat啟動程序startup.bat所在位置
- stdoutLogEnabled — 若為True則啟動logging功能
- stoutLogFile — 設定Log檔案寫入位置
EnvironmentVariables
- JRE Home — JRE所安裝之所安裝資料夾位置
CATALINA_HOME — Tomcat所在目錄
完成
這樣就可以透過 IIS 來處理 JSP 網頁的要求

![[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 05 - Elmah - 02](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1776070454149%2Fa0702417-5357-4217-a572-7ba53ea36735.png&w=3840&q=75)
![[IT 鐵人賽] Azure Data Service - Day 04 - Cognitive Service - 辨識 - Video Indexer](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1776070473207%2F6423fd4a-4041-4bb2-b918-4cfe3f9aea5e.png&w=3840&q=75)