反饋已提交
網絡繁忙
埠是應用程式和外界進行通訊的端點。在同一臺伺服器中,每個應用需要一個獨立的埠來保證正常的通訊,埠與埠之間是透過埠號來區分的,配置埠就是為應用程式分配一個獨一無二的埠號。
Tomcat 預設埠號為 8080。如果同一臺伺服器上有其他應用佔用了8080埠,Tomcat 將無法正常啟動,這種情況下就需要為Tomcat重新配置埠。
如果伺服器上有多個 Tomcat 同時執行,那就需要給每個 Tomcat 單獨配置一個埠。
如果要修改 Tomcat 的埠號,只需修改%tomcat_home%\conf\server.xml即可。
比如我們想將埠號改為 8081,則用文字編輯器開啟 server.xml,找到Connector標籤,將其中的 port屬性值改為“8081”即可:
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />。
如果將埠號改為 80,則訪問Tomcat時埠號可以省略,即在瀏覽器輸入 http://localhost 就可以進入Tomcat的歡迎介面了。
假設1個伺服器中有2個Tomcat,其中一個Tomcat使用預設的埠號8080。為了讓兩個Tomcat能正常執行,需要為第2個 Tomcat 配置新埠。
首先找到第二個 Tomcat 的安裝根目錄中的conf資料夾,然後用文字編輯器開啟資料夾中的 server.xml。需要做3處修改:
HTTP 埠。預設為8080,修改為 8081:
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 。
關閉 Tomcat 服務埠。預設為,8005,修改為 8006:
<Server port="8006" shutdown="SHUTDOWN">。
AJP 埠,預設為 8009,修改為 8010:
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />。
儲存 server.xml,重啟第2個Tomcat,這2個 Tomcat 就可以同時使用了。
把FineReport部署到Tomcat裡以後,【預覽報表】、點選【查詢】時,報表工程需要對報表進行運算,運算的中間資料都需要暫存在伺服器記憶體中,因此報表工程的執行佔用伺服器的記憶體,而當沒有空記憶體可用時,就會出現記憶體溢位錯誤:java.lang.OutOfMemoryError:Java heap space。
在製作報表的過程中,如果範本中呼叫的資料量較大,或者預覽範本時出現卡頓的情況,就需讓FineReport 工程所在的 Tomcat 可使用更多的伺服器記憶體,這可以透過修改Tomcat記憶體配置來實現。
修改Tomcat記憶體配置需要設定2個值:初始記憶體和最大記憶體。初始記憶體決定了起始階段Tomcat可佔用的記憶體,最大記憶體決定了Tomcat在執行時可以佔用的最大記憶體,如果報表工程造執行時暫存的資料超出了這個最大記憶體,就會觸發溢位錯誤。
本文將詳細說明如何修改 Tomcat 記憶體配置。Tomcat分為解壓版和安裝版,兩種版本的修改方式略有不同。
透過 startup.bat 或 startup.sh 啟動 Tomcat。
在Windows 系統下,修改JAVA_OPTS(這裡以 Windows10+Tomcat8+JDK1.8.0 為例,不同版本可能略有不同,請自行處理)。找到 %Tomcat_Home%/bin/catalina.bat,新增下列指令碼:set JAVA_OPTS= -Xms512M -Xmx2048M。
-Xms:java Heap 初始記憶體。 預設為伺服器物理記憶體的 1/64。
-Xmx:java heap 最大記憶體。對於Tomcat來說,最大可使用記憶體不要超過伺服器物理記憶體的80%。
透過上述設定,初始化記憶體為 512MB,可以使用的最大記憶體為 2048MB。必須要有【M】,如果沒有,則系統預設單位為KB,具體設定如下圖所示。
將 Tomcat 啟動程式註冊成系統服務時,如果將 Tomcat 啟動程式註冊為系統服務,詳情參見 將報表服務啟動程式註冊為系統服務,應修改 JVM 的 Xms 和 Xmx 大小:set JAVA_OPTS= -Xms512M -Xmx1024M。
Linux 系統下,找到%Tomcat_Home%/bin/catalina.sh,新增程式碼:JAVA_OPTS="$JAVA_OPTS -Xms2048M -Xmx8196M"。
修改後,重啟 Tomcat 設定生效。
如果是 Tomcat 安裝版的,這裡以 Win10+Tomcat8+JDK1.8 為例(不同版本可能略有不同請自行處理)。
直接雙擊 Tomcat 出現在螢幕右下角的系統託盤,開啟Java選項卡,修改Initial Memory Pool和Maximum Memory Pool即可,前者為初始記憶體,後者為最大記憶體,最大記憶體盡量不要超過物理記憶體的 80%。如下圖所示。
開啟 %Tomcat_Home%/conf/tomcat-users.xml 檔案,在 tomcat-users 標籤裡新增一個使用者,程式碼:<role rolename="manager-gui"/> <user username="tomcat" password="s3cret" 。
訪問 IP:port/manager/status,本文中的示例為示例為:http://localhost:8080/manager/status ,輸入剛剛新增的使用者名稱和密碼,這裡示例為 tomcat/s3cret。
進入 Server Status 頁面後,可以在 JVM 表格中看到如下參數:
Free memory:當前空閒記憶體;
Total memory:當前總記憶體;
Max memory:最大可使用記憶體。
注1:埠號如果遇到有 java.lang.OutOfMemoryError: PermGen space 這種異常拋錯,可以在所有修改記憶體的地方加上一個命令語句:-XX:MaxPermSize=256m 來進行限制。
注2:所有調整記憶體的數字都要根據使用者系統的資料量來進行調整。
如下圖所示。
四、對Tomcat外部的報表工程進行部署
常見的部署操作是將報表工程的檔案放到Tomcat內部。有的使用者為了便捷地管理伺服器的檔案,需要將報表工程放在特定的位置。
實際上,即使報表工程不放在Tomcat內部,也可以實現部署,只需要對Tomcat進行配置,就可以讓Tomcat讀取報表工程的檔案。
將報表工程放在Tomcat以外的位置。
報表工程所在目錄:D:\FineReport_10.0\webapps\webroot。
Tomcat 所在目錄:D:\apache-tomcat-8.5.27。
在 D:\apache-tomcat-8.5.27\conf\Catalina\localhost 下新建檔案 FR.xml(FR是報表工程的作為應用程式時的應用名)。使用文字編輯器開啟 FR.xml,輸入程式碼並儲存:<Context path="/FR" reloadable="false" docBase="D:\FineReport_10.0\webapps\webroot" />。
注1:path屬性的值必須與檔名相同。
注2:如果 conf 下面沒有 Catalina 資料夾,直接新建 Catalina 資料夾即可。
重新啟動 Tomcat, 啟動瀏覽器,在位址列輸入http://ip:伺服器埠號/FR/decision。
其中,FR 就是部署時定義的報表應用名。如果能成功看到設定管理員頁面,則表明 FineReport 成功部署到了Tomcat。
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙