關於項目: 我想在Java上編寫類似CMS的網站。以前我使用PHP來達到這個目的,但現在我需要與現有的服務器端解決方案(用Java編寫)緊密集成,因此也決定將Java用於網站。目前,爲了更容易開發,我做了一些我的項目的「層次結構」:頂層「服務器」類(在最近的將來它將充滿內容和功能,但現在它是空的),下一個子系統,擴展和任何這一部分 - 模塊和塊。他們每個人都有一些限制和可能性,彼此不可用...也許有其他方式,但目前我不知道它。委託靜態成員擴展類 - Java
我正在做一些類型的緩存,依賴於這樣的事實,即礦山動態Web項目的增值經銷商可以在內存中保存的所有的時間。例如,表示所有這些元素的「樹」,從數據庫加載並保存在內存中,以及所有下一個請求(例如,哪些擴展將此模塊作爲子級 - 用於管理權限),而不詢問數據庫。
當然,對於這個目的,我需要有一些標誌,這將告訴元素,其數據被改變,他們需要從數據庫刷新。單個全局標誌(例如在上下文中)是不好的,而在幾乎所有情況下,我都需要刷新單個元素或組。單個元素的標誌已完成,但...
關於實現: 問題本身。可以說我有類模塊:
public abstract class Module{
private final static boolean Changed;
public static boolean getChanged(){
return Changed;}
public static void setChanged(boolean newState){
Changed = newState;}
public abstract String getName();
public abstract String getTitle(HttpServletRequest request,
HttpServletResponse response, ServletContext context);}
而且我有一些模塊:
public final class Articles extends Module{
public class Article{...}
private Tree<Article> ArticleList;
public final ArrayList<Article> getArticlesInGroup(int groupID){
if(getChanged())
refreshFromDatabase();
...
}
}
這裏,例如,使用此標誌爲改變一些全局偏好的情況下,這可能會改變文章的工作 - 例如,對數據庫的一些操作,通過查詢瀏覽器或其他一些操作執行 - 類「緩存」文章和組的樹(它不保存整篇文章 - 只有Title,ID,ParentGroup或其他一些內容...
本身的問題:在servlet的主要在的doGet(...)我有一個代碼執行:
if(request.getParameter("SetModify") && UsersManager.inGroup(currentUser,"Administrator")
Module.setChanged(true);
而且,我查了一下, 「Module.setChanged(真)」 成功執行......但是,當涉及到「getChanged ()」類的文章,我得到了假的... ...
是否存在任何方法來創建靜態變量,這將是所有類中的靜態,擴展它,或者我只是不明白的東西嗎?案「Module.getChanged()」類文章進行測試,以及 - 結果是一樣的...
對不起,這個「最終」 - 我的SVN目前不可用,所以從本地,非同步副本粘貼代碼。修正了這個問題,但是......當然,問題依然存在。 –
該死的......你說得對。現在重新測試它,並且所有工作都正常......必須在工作中測試時捕獲其他一些錯誤。現在來看看建議的系統。 –