修改帶 JAVA 自定義類的報表還要重啟應用,咋解決?

xiaohuihui發表於2020-06-21

這是 JAVA 編譯型語言特性決定的,修改 JAVA 程式重啟應用也正常。只不過改報表就要重啟整個應用就有點誇張了,報表變動比較頻繁,每次都重啟應用會影響業務的。

這個問題的根本原因是耦合性問題,報表裡一旦涉及到 JAVA 程式碼就要跟主應用程式一起打包部署了,也就是耦合在一起,想要修改報表實時生效(熱切換)也就不可能了,所以解決這個問題的思路是解耦報表和主應用程式。

一般來說報表中使用 JAVA 編碼主要基於以下幾種原因:

1、資料計算涉及複雜過程和邏輯控制
為報表準備資料時涉及的計算過於複雜,或者需要做比較複雜的邏輯控制,透過 SQL 不易實現,只能透過 JAVA 硬編碼

2、涉及多樣性資料來源
報表的資料來源多種多樣,當涉及 NoSQL、文字、XML、Hadoop、時序資料庫、Webservice 等資料來源時,報表工具無法實現混合計算,需要用 JAVA 實現報表資料準備

3、方便應用擴充套件
未來業務增長需要對應用進行水平擴充套件(拆分),使用 SQL 不利於未來分庫,只能用 JAVA 實現報表資料計算

4、用於管理
為了管理需要,有時需要記錄報表訪問人、報表查詢次數、每次查詢了哪些資料等資訊,透過 JAVA 編寫監聽類實現

這樣看來,要解耦報表模組也不是很容易,最好直接使用具備這些能力的報表工具:
1. 很強的複雜計算能力,能完成較複雜的運算,還容易實現邏輯控制;
2. 多樣性資料來源支援,最好還能混合計算,如 CSV 和 DB 做 join;
3. 計算不依賴資料庫,方便擴充套件
4. 支援熱切換,修改報表不用重啟應用

可以看一下 ,介紹瞭如何使用報表工具解耦報表和主應用,畫個圖感受一下:

imagepng
原來 JAVA 程式把報表和主應用緊緊綁在一起,現在可以把報表模組單獨拆分維護,解釋執行可以熱切換,修改報表可以不必重啟整個應用了。甚至還可以將報表模板單獨部署,在物理上實現分離。

工具對複雜計算的支援可以參考
對多樣性資料來源的支援參考

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2699752/,如需轉載,請註明出處,否則將追究法律責任。

相關文章