Skip to main content

Command Palette

Search for a command to run...

在IIS執行Java JSP — SERVER 2012R2

Updated
2 min read
在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 重大變更)

可參考:

說了一些話,接下來終於輪到實作啦

(我這邊使用TOMCAT 8作為JAVA網頁伺服器,並用Pebble blogging當作我的網頁)

  1. 安裝 HttpPlatformHandler

可以透過 WebPI 來安裝,或是直接下載安裝檔來安裝 x86/x64

當然還是要推薦使用 WebPI 來安裝,因為 WebPI 來安裝會自動替你決定最適合的安裝檔,不用擔心是否會抓到錯的平台版本檔案

  1. 下載 TOMCAT 8

這邊要注意的是記得要抓zip檔案,而非執行檔

然後至特定目錄,這邊我全部解壓縮到C:\JavaTest

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

將 HTTP connector port 修正為 ${port.http}

要注意一個地方,除了 HTTP 監聽程式連接埠之外的所有監聽程式連接埠都必須停用。在 Tomcat 中,這包括關機、HTTPS 及 AJP 連接埠

  1. 取得 JAVA 網頁應用程式

這邊使用 Pebble blogging 作為範例 下載後解壓縮了至相對應資料夾,這邊範例為:C:\JavaTest\apache-tomcat-8.0.28\webapps

  1. 設定 IIS

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

  1. 設定 web.config

最後將相關JAVA參數設定至web.config

  • rocessPath — Tomcat啟動程序startup.bat所在位置
  • stdoutLogEnabled — 若為True則啟動logging功能
  • stoutLogFile — 設定Log檔案寫入位置

EnvironmentVariables

  • JRE Home — JRE所安裝之所安裝資料夾位置
  • CATALINA_HOME — Tomcat所在目錄

  • 完成

這樣就可以透過 IIS 來處理 JSP 網頁的要求

參考資料:

More from this blog

Career-Ops 安裝與設定 — 用 AI 來幫你篩職缺、客製履歷

最近在看新的工作機會,光是瀏覽職缺、比對 JD、調整履歷就花了不少時間。 後來找到 Career-Ops 這個開源專案 作者 santifer 用這套系統篩了 740 多個職缺、產出 100 多份客製化履歷,最後拿到 Head of Applied AI 的 offer。 看起來蠻有意思的,所以我就在 Windows 上實際裝了一輪,這篇就來把整個安裝和設定的過程記錄下來。 我這邊搭配的 AI 後

Apr 12, 20265 min read
Career-Ops 安裝與設定 — 用 AI 來幫你篩職缺、客製履歷

讓 LLM 自動化你的 N8N 工作流程:n8n-mcp-server 安裝指南

前言 網路上一大堆都是在介紹如何在 N8N 裡面用 MCP 來呼叫其他工具,但是更多時候我希望 LLM 能直接幫我寫好或是修改 N8N 的工作流程 所以這篇就來介紹如何設定與使用 n8n-mcp-server 來讓 LLM 幫忙操控 N8N 在 GitHub 上有不少的 n8n-mcp-server,經過一下下的簡單搜索,我決定使用這個專案: n8n-mcp-server 原因在於說這個專案的實作提供了基本上所有需要編輯工作流程的功能,以下就來記錄安裝過程 MCP Server 設定 首先當然...

May 28, 20253 min read

[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 05 - Elmah - 02

.NET Core Logging- Elmah 02 上一篇我們提到了基本的使用方式,接下來的這一篇我們就來講講要怎麼把 Log 放到不同的儲存體上,以及如何過濾 Log Log 儲存方式 我們先來看這些 Log 倒底存在哪裡,目前共有三種儲存方式,如下: MemoryErrorLog — store errors in memory 預設為使用此方式,簡單來說就是將錯誤 Log 都存在記憶體裡,所以只要應用程式一重新啟動,Log 就沒了;但是也是最方便的方式,只是要注意如果 Log 太...

Oct 20, 20182 min read
[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 05 - Elmah - 02

[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 04 - Elmah - 01

.NET Core Logging- Elmah 01 Elmah 是我最一開始使用的 Log 工具,基本上它的功能就是將應用程式所有發生的錯誤記錄下來,不需要改變程式架構,而且又有介面可以觀看,十分的方便;它從 WebForm 時代就有了,到了 MVC 也是運作的很好,那這邊就來介紹一下 Elmah 要如何在 ASP.NET Core 中使用 (.NET Core 也可使用)。 不過很可惜的,目前並沒有釋出官方的 Elmah for .NET Core,不過有一個新專案: ElmahCore...

Oct 19, 20181 min read
[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 04 - Elmah - 01

[IT 鐵人賽] Azure Data Service - Day 04 - Cognitive Service - 辨識 - Video Indexer

Azure Data Service - Day 04 - Cognitive Service - Vision - Video Indexer 前面幾篇都是介紹靜態影像的辨識與分析,那這篇就來到針對影片來做處理。 Cognitive Service 針對影片辨識的部分提供了:Video Indexer 它整合了許多功能,在這邊列出一些比較重要的功能: 語系偵測 可以自動偵測出這個影片是屬於哪個語系,目前支援: English, Spanish, French, German, Italia...

Oct 19, 20181 min read
[IT 鐵人賽] Azure Data Service - Day 04 - Cognitive Service - 辨識 - Video Indexer

BrainBurst, HeadFirst

45 posts

學習學到老,撞牆撞到腦. A lifelong quest—with forehead dents.