Orcale 對於 JAVA/JRE 的支援,做了些變動。 針對個人用途的 Oracle Java SE 8 公開更新至少會一直提供到 2020
年底為止。業務、商業或生產用途的 Oracle Java SE 8 若未取得商業授權,將會無法使用 2019 年 1 月之後發行的公開更新。
於 2018.11要釋出的 JAVA11 (LTS)版本,它的免費支援也僅提供六個用。取得商業支援的話,不管是採用 JAVA8/JRE8 或 JAVA11/JRE11皆可支援到 2025年。
AWS釋出免費OpenJDK Amazon Corretto,免費安全更新至2023年。
這試著重新部署主機上原有的服務,將 Orcale JRE 試著改變成 OpenJDK Amazon Corretto,但會出現以下狀況,原已佈署到服務內的 Tomcat 服務,主機重新啟動是無法自動執行 Tomcat,但透過 /tomcat/bin/startup.bat 可以正常執行。後來查一下,看來應是 Tomcat 與 JRE 所選用的位元版本不一致所導致的,細節可操考這頁的說明。
目前 Amazon Corretto 僅提供 64bit 版本。後來直接重新下載 tomcat 64bit 版本,直接將 64bit 版本內的 /bin/* 直接覆蓋到 32bit 版本內 (保留 catalina.bat, setclasspath.bat, catalina.bat ) 後就可以正常運作了。
相關資料:
2018年11月16日 星期五
2018年6月29日 星期五
JAVA8 支援更新問題
館內購買的資料庫,有些系統所採用的架構是 Tomcat、JAVA8。
Orcale 對於 JAVA/JRE 的支援,做了些變動。 針對個人用途的 Oracle Java SE 8 公開更新至少會一直提供到 2020 年底為止。業務、商業或生產用途的 Oracle Java SE 8 若未取得商業授權,將會無法使用 2019 年 1 月之後發行的公開更新。
於 2018.11要釋出的 JAVA11 (LTS)版本,它的免費支援也僅提供六個用。取得商業支援的話,不管是採用 JAVA8/JRE8 或 JAVA11/JRE11皆可支援到 2025年。
未來系統可以朝向以下方向調整:
相關連結:
Orcale 對於 JAVA/JRE 的支援,做了些變動。 針對個人用途的 Oracle Java SE 8 公開更新至少會一直提供到 2020 年底為止。業務、商業或生產用途的 Oracle Java SE 8 若未取得商業授權,將會無法使用 2019 年 1 月之後發行的公開更新。
於 2018.11要釋出的 JAVA11 (LTS)版本,它的免費支援也僅提供六個用。取得商業支援的話,不管是採用 JAVA8/JRE8 或 JAVA11/JRE11皆可支援到 2025年。
未來系統可以朝向以下方向調整:
- 系統改採 OpenJDK 架構
- 系統直接改採廠商所提供的主機使用
- 取得 Oracle 商業授權
相關連結:
- Oracle Java SE 8 發行版本更新
- Oracle Java SE Support Roadmap
- 面對Java版本的升級,舊式桌面應用改怎麼辦?
- OpenJDK availability for Windows OS
- Github ojdkbuild
- 107.08.08 測試過,在 Windows Tomcat 的架構,Github ojdkbuild 提供的版本,是無法直接取代 Orcale 所釋出的版本。JRE 換成 OPENJDK 時會出現 Tomcat 啟動失敗,原因如右:Failed creating Java D:\JRE\bin\client\jvm.dll (由 Tomcat log 觀察),Github ojdkbuild 提供的檔案解壓縮後並沒有這個 client 目錄。
- Download Zulu® for Windows
- 107.08.08 採用Zulu 提供的版本可以順利切換(如圖);後來才注意到該公司也是宣告免費版本的支援終止。
2016年1月6日 星期三
Tomcat 9.X 安裝備忘
做法與 Tomcat 6.X 升級安裝備忘 差不多。
將壓縮檔解壓縮到指定目錄後,執行 */tomcat/bin/start.bat 即可運行。
若要安裝到系統服務,執行 */tomcst/bin/service install tomcat 即可。
移除已安裝到系統服務,執行 */tomcst/bin/service remove tomcat 即可。
108.09.26
一直以來的習慣安裝至系統服務都是直接採用 service install tomcat。後來發現執行 tomcat9w.exe 出現 "指定服務並不是已安裝的服務"的警告。此狀況只要在安裝時將名稱改成與安裝版本相符數字即可解決(e.g. service install tomcat9)
107.XX.XX
不過這次的安裝有點奇怪。如果沒有在系統的環境變數內加入JRE_HOME="D:\JRE"時。在利用 service install tomcat 時會出現 Warning: Neither 'server' nor 'client' jvm.dll was fonund at JRE_HOME.(如圖);此時服務不會正常的自動執行。
明明已在 setclasspath.bat 與 catalina.bat 內直接指定 JRE 位址。查了一下,有人反應只要在 service.bat 也加入指定 JRE位址時。就可以順利的利用 */tomcst/bin/service install tomcat 指令將 tomcat 服務加入到系統服務內。
note. 後來試過。其實只要在 service.bat 內指定 JRE 位址就可以了。 setclasspath.bat 與 catalina.bat可以不用指定。
107.11.16
不知是不是後續的新版本有加入強制檢查 JAVA_HOME的部份。後續的重新佈署 (service install tomcat ) 時會出現以下訊息
The JAVA_HOME enviroment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not JRE
後來的做法,因為僅是要將它佈署到作業系統的服務內,所以後來就直接在系統的環境變數下指定 JDK 位址再直接進行佈署到作業系統的服務內的動作。佈署好後就直接移除掉 JDK 相關檔案。
107.11
採用 Amazon Corretto 所提供的 JRE,原已佈署到服務內,主機重新啟動是無法自動執行 Tomcat,但透過 /tomcat/bin/startup.bat 可以正常執行。後來查一下,看來應是 Tomcat 與 JRE 所選用的位元版本不一致所導致的,細節可操考這頁的說明。
後來直接重新下載 tomcat 64bit 版本,直接將 64bit 版本內的 /bin/* 直接覆蓋到 32bit 版本內(保留 catalina.bat, setclasspath.bat, catalina.bat ) 後就可以正常運作了。
將壓縮檔解壓縮到指定目錄後,執行 */tomcat/bin/start.bat 即可運行。
若要安裝到系統服務,執行 */tomcst/bin/service install tomcat 即可。
移除已安裝到系統服務,執行 */tomcst/bin/service remove tomcat 即可。
108.09.26
一直以來的習慣安裝至系統服務都是直接採用 service install tomcat。後來發現執行 tomcat9w.exe 出現 "指定服務並不是已安裝的服務"的警告。此狀況只要在安裝時將名稱改成與安裝版本相符數字即可解決(e.g. service install tomcat9)
107.XX.XX
不過這次的安裝有點奇怪。如果沒有在系統的環境變數內加入JRE_HOME="D:\JRE"時。在利用 service install tomcat 時會出現 Warning: Neither 'server' nor 'client' jvm.dll was fonund at JRE_HOME.(如圖);此時服務不會正常的自動執行。
明明已在 setclasspath.bat 與 catalina.bat 內直接指定 JRE 位址。查了一下,有人反應只要在 service.bat 也加入指定 JRE位址時。就可以順利的利用 */tomcst/bin/service install tomcat 指令將 tomcat 服務加入到系統服務內。
note. 後來試過。其實只要在 service.bat 內指定 JRE 位址就可以了。 setclasspath.bat 與 catalina.bat可以不用指定。
107.11.16
不知是不是後續的新版本有加入強制檢查 JAVA_HOME的部份。後續的重新佈署 (service install tomcat ) 時會出現以下訊息
The JAVA_HOME enviroment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not JRE
後來的做法,因為僅是要將它佈署到作業系統的服務內,所以後來就直接在系統的環境變數下指定 JDK 位址再直接進行佈署到作業系統的服務內的動作。佈署好後就直接移除掉 JDK 相關檔案。
107.11
採用 Amazon Corretto 所提供的 JRE,原已佈署到服務內,主機重新啟動是無法自動執行 Tomcat,但透過 /tomcat/bin/startup.bat 可以正常執行。後來查一下,看來應是 Tomcat 與 JRE 所選用的位元版本不一致所導致的,細節可操考這頁的說明。
後來直接重新下載 tomcat 64bit 版本,直接將 64bit 版本內的 /bin/* 直接覆蓋到 32bit 版本內(保留 catalina.bat, setclasspath.bat, catalina.bat ) 後就可以正常運作了。
2013年9月25日 星期三
Tomcat 安全性如何提升
重點如下:
- 降低使用權限
- tomcat 的權限若不特別調整會是系統服務的權限的身份執行。
- 在系統內新增一個使用者帳號,這個新增的帳號可以不歸屬於任何的群組,於服務管理器啟動 Tomcat 管理介面。選擇「登錄」選項,將啟動的身份改成這個新增的使用者帳號。(如附圖)
- 此新增的帳號可以將網路存取使用權限改成拒絕存取、遠端控制取消啟用、用戶端裝置的預設勾選項目全數取消。
- Tomcat相關的執行檔案的目錄,別忘了要新增這個使用者的帳號權限;有些目錄的權限要開放寫入(如附圖)
- JRE目錄也需要新增這個使用者的帳號權限。(如附圖)
- 基本上以上的做法與Apache 的建議相似,也可直接參考此文件(中文翻譯)。
- 在Apache的實作:後來發現只要在 logs , sessions 與其它需要寫入權限的目錄 (e.g phpids ......),加入這個受限制的使用者的權限後,再到系統 =>服務 =>Apache2(如下圖),將登入的身份改成這個受限制的使用者,重新啟動後即可。
- 預設 port 號修改
- 例如將 port 8080修改為其它 port 號。
- 未設定 index.htm的目錄會將所有目錄內的檔案全數呈現
- 修改web.xml檔案,<param-name>listings</param-name>,確認它是 false 的狀態。這個部份在 Tomcat 6.x 版的預設值是 false 。
- 後台管理的帳密修改
- 基本上因為它的管理介面,這沒有使用到,所以我這是將全部將關於此功能的目錄全部刪除。
- 錯誤頁面會主動回報使用版本等參考資訊
- 修改web.xml files,自訂 404.html ......等頁面。於 web.xml內的 </welcome-file-list>標籤後加入自訂的 404.html(如下)
- <error-page>
<error-code>404</error-code>
<location>/404.html</location>
</error-page> - 不知幾版開始後,它的 header 就沒有傳遞版本的資訊了,所以自訂 404 等錯誤頁面後, 可以降低此困擾。The server attribute controls the value of the Server HTTP header. The default value of this header for Tomcat 4.1.x, 5.0.x, 5.5.x, 6.0.x and 7.0.x is Apache-Coyote/1.1. This header can provide limited information to both legitimate clients and attackers
其它降低權限時有出現過的狀況:
有一個資料庫很特殊,它需要在工作排程器內設定自動啟動的動作,但降低權限的身份在設定排程時會出現狀況,解決的方式可以參考下方的相關說明。2012年11月20日 星期二
Tomcat 不同版本共存
本來是想要將 Tomcat5.5 給直接升級至 Tomcat6 以上的版本,不過有些資料庫服務無法順利的轉到 Tomcat6 以上的版本,而最近又要購入新的電子資料庫進來,它也是跑在 tomcat上。所以沒有辦法,只有兩個版本同時運行在同一主機上。
原本只想說只要調整服務的 port 號就可以了,不過同時啟動Tomcat5.5 & Tomcat6 兩個服務後,後啟動的那個會自動關閉服務,搞了老半天,查了許多資料也都是說只要簡單的使用不相同的 Port 號即可運作或自行指定好所設定的 JRE環境。事實上在查閱資料之前也是這樣子做,但實際上兩個服務啟動就會有問題。
後來查到下面這篇,也試著按它的方式調整了一下,結果就搞定了。還真是好玩。
相關參考:
原本只想說只要調整服務的 port 號就可以了,不過同時啟動Tomcat5.5 & Tomcat6 兩個服務後,後啟動的那個會自動關閉服務,搞了老半天,查了許多資料也都是說只要簡單的使用不相同的 Port 號即可運作或自行指定好所設定的 JRE環境。事實上在查閱資料之前也是這樣子做,但實際上兩個服務啟動就會有問題。
後來查到下面這篇,也試著按它的方式調整了一下,結果就搞定了。還真是好玩。
相關參考:
- MyEclipse和Eclipse工程中是否可以分別啟動tomcat 5.5、tomcat6.0?當端口出現衝突時又該如何修改?
修改SHUTDOWN端口,默認8005
修改HTTP訪問端口,默認8080
修改JVM啟動端口,默認8009
2012年9月5日 星期三
Tomcat - Unable to open the service
今天升級舊主機,將主機的作業系統從 Server 2003 升級成 Server 2008。
重新佈署 Tomcat 時,一路順利安裝成功也順利的啟動 Tomcat 服務,但主機重新開機時,確出現 Unable to open the service'Tomcat 5.XXX' 的錯誤訊息。
了解了一下發生原因,是因為 Server 2008 的帳戶控制 (User Account Control) 所造成,要額外做一些調整設定,做法如下:
重新佈署 Tomcat 時,一路順利安裝成功也順利的啟動 Tomcat 服務,但主機重新開機時,確出現 Unable to open the service'Tomcat 5.XXX' 的錯誤訊息。
了解了一下發生原因,是因為 Server 2008 的帳戶控制 (User Account Control) 所造成,要額外做一些調整設定,做法如下:
- 將 tomcat5.exe & tomcat5w.exe 指定以特殊權限等級執行(如圖)。
- 再使用「本機安全性原則」功能 (@ 開始 =>系統管理工具 => 本機安全性原則),將啟動時的項目檢查取消打勾即。
2012年8月8日 星期三
Tomcat 6.X 升級安裝備忘
新環境安裝:
下載需要的 JRE 與 Tomcat6 後,在作業系統內設定好環境變數後或透過 tomcat6w.exe 的 UI 介面直接指定 JRE的位址(例如 C:\JRE\bin\client\jvm.dll,這樣環境變數就不需要設定了)。也可以直接修改 catalina.bat 設定檔,直接 set "JRE_HOME=D:\YOUR JRE"。
將壓縮檔解壓縮到指定目錄後,執行 */tomcat6/bin/start.bat 即可運行。
若要安裝到系統服務,執行 */tomcst6/bin/service install tomcat6 即可。
移除已安裝到系統服務,執行 */tomcst6/bin/service remove tomcat6 即可。
舊環境下升級:
至於舊主機內升級 Tomcat版本是否要保留原來所使用的 JAVA OR JRE 版本,稍微找了一下資料,使用舊版本也是會有安全性的問題存在,若狀況允許,還是使用新版本為佳。參考資料:
訂閱:
文章 (Atom)