所以我需要存储一些信息,并从我的数据库每1小时重新加载它。我环顾四周,发现网上搜寻番石榴的CacheLoader或的Ehcache将是最好的,最简单的解决方案。番石榴Cacheloader从零开始
我搜索谷歌在过去的4小时,没有发现anyhting,可以帮助我,我是一个真正的新手,我第一次需要缓存的东西。请帮助我。
Follwoing问题:
我有一个名为新闻,我obisouly店新闻,并根据他们的availibilty加载它们的实体。我是这样做的:@ViewScoped bean。但是,每次页面加载时我都不需要加载新闻,新闻不会频繁修改。这就是为什么我要将新闻(列表<新闻>)存储在缓存中并分别加载它们。缓存应该每1小时刷新一次。
请帮我关于豆,缓存监听等我真的不知道如何重新加载数据,我必须用绿豆等
这是我@ViewScoped NewsController:
@ViewScoped
public class NewsController extends BaseController implements Serializable {
private static final long serialVersionUID = 1L;
@PersistenceContext
protected EntityManager em;
private List<News> newsList;
@PostConstruct
public void init() {
getAvailableNews();
}
public void getAvailableNews() {
if (newsList == null) {
info("#############Load news from DB!##########");
newsList = new LinkedList<News>();
@SuppressWarnings("unchecked")
List<News> result = (List<News>) em.createNativeQuery(
"SELECT * FROM news WHERE sysdate BETWEEN from AND to+1",
News.class).getResultList();
for (News n : result) {
newsList.add(n);
}
}
}
public void reload(){
newsList = null;
getAvailableNews();
}
public List<News> getNewsList() {
return newsList;
}
public void setNewsList(List<News> newsList) {
this.newsList = newsList;
}
}
@Ianimall感谢您的回应。我在哪里设定计时器? – leostiw
@Ianimall我不想使用Spring,而是使用EJB。 – leostiw
公顷EJB ......在这种情况下,我会用的Ehcache在客户端,基本上封装EJB调用到getAvailableNewsCached()方法的客户端...基本概念:从缓存中读取第一......如果从缓存空的结果,取来自EJB并存储在缓存中。对于计时器,它全部在ehcache.xml中设置。有关ehcache配置的详细信息,请查阅http://ehcache.org/documentation/configuration/configuration。另外,入门指南很好:http://ehcache.org/documentation/get-started/getting-started和 – lanimall