关于项目: 我想在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目前不可用,所以从本地,非同步副本粘贴代码。修正了这个问题,但是......当然,问题依然存在。 –
该死的......你说得对。现在重新测试它,并且所有工作都正常......必须在工作中测试时捕获其他一些错误。现在来看看建议的系统。 –