- 浏览: 215254 次
- 来自: ...
文章分类
最新评论
-
nbh219:
插件只有这几行代码吗jQuery.fn.dataTableEx ...
在Datatables中加入错误提示功能 -
radio123:
好用,谢了!就是有一点问题,如果DataGird 有分页栏,会 ...
JQuery Easy UI —— 如何让DataGrid自适应页面宽度 -
loafer:
这种方式是将工程发布为war还是ear?因为以前也这样写过,但 ...
Weblogic 10.3.6 解决Jar包冲突,hibernate等。 -
springdata:
spring data jpa相关代码demo下载:http: ...
Spring Data JPA 使用感受 -
coolboy09:
楼主,能否给个完整的例子?在下在用jqplot绘图时,在添加了 ...
jqPlot 实现动态显示数据,防止内存溢出的实现。
最近在产品研发中希望能引入Membase NoSQL缓存系统,可惜Play!默认支持Memcached,另外可从官网下载Mongo数据库的Module,也能让Play!支持Mongo数据。
在一番搜索之后,发现Play!不支持Membase,这就必须要求我们只能够自己实现Cache。
可惜官网给的编写Module的例子太过简单,昨天发现了《Play Framework Cookbook》这本书,网上有PDF版本,里面介绍了一个实现自我实现Cache的示例,下面给出一个简单的说明,具体详细的实现会在我完成基于Membase的开发后,再详细介绍。
《Play Framework Cookbook》一书中使用的缓存系统是hazelcast。
1、从http://www.hazelcast.com下载hazelcast的zip压缩包;
2、解压后,进入hazelcast的bin目录,执行run.sh(如果是Windows用户,看看有没有run.bat可执行);
3、将hazelcast-XX.jar,hazelcast-client-XX.jar复制到Play的module项目的lib目录中;
4、建立文件:conf/dependencies.yml,内容为:
5、建立play.modules.hazelcast.HazelcastPlugin类:
6、建立play.modules.hazelcast.HazelCastCacheImpl类:
7、在conf/application.conf中添加配置:
以上仅供参考,如果希望获取更详细的内容,可以阅读《Play Framework Cookbook》一书。
在一番搜索之后,发现Play!不支持Membase,这就必须要求我们只能够自己实现Cache。
可惜官网给的编写Module的例子太过简单,昨天发现了《Play Framework Cookbook》这本书,网上有PDF版本,里面介绍了一个实现自我实现Cache的示例,下面给出一个简单的说明,具体详细的实现会在我完成基于Membase的开发后,再详细介绍。
《Play Framework Cookbook》一书中使用的缓存系统是hazelcast。
1、从http://www.hazelcast.com下载hazelcast的zip压缩包;
2、解压后,进入hazelcast的bin目录,执行run.sh(如果是Windows用户,看看有没有run.bat可执行);
3、将hazelcast-XX.jar,hazelcast-client-XX.jar复制到Play的module项目的lib目录中;
4、建立文件:conf/dependencies.yml,内容为:
self: play -> hazelcast 0.1 require: - play - com.hazelcast -> hazelcast-client 1.9.3.1: transitive: false - com.hazelcast -> hazelcast 1.9.3.1: transitive: false
5、建立play.modules.hazelcast.HazelcastPlugin类:
public class HazelcastPlugin extends PlayPlugin { public void onApplicationStart() { Boolean isEnabled = new Boolean(Play.configuration. getProperty("hazelcast.enabled")); if (isEnabled) { Logger.info("Setting cache to hazelcast implementation"); Cache.forcedCacheImpl = HazelCastCacheImpl.getInstance(); Cache.init(); } } }
6、建立play.modules.hazelcast.HazelCastCacheImpl类:
public class HazelCastCacheImpl implements CacheImpl { private HazelcastClient client; private static HazelCastCacheImpl instance; public static HazelCastCacheImpl getInstance() { if (instance == null) { instance = new HazelCastCacheImpl(); } return instance; } private HazelCastCacheImpl() { String groupName = Play.configuration.getProperty("hazelcast. groupname", "dev"); String groupPass = Play.configuration.getProperty("hazelcast. grouppass", "dev-pass"); String[] addresses = Play.configuration.getProperty("hazelcast. addresses", "127.0.0.1:5701").replaceAll(" ", "").split(","); client = HazelcastClient.newHazelcastClient(groupName, groupPass, addresses); } private IMap getMap() { return client.getMap("default"); } @Override public void add(String key, Object value, int expiration) { if (!getMap().containsKey(key)) { getMap().put(key, value, expiration, TimeUnit.SECONDS); } } @Override public boolean safeAdd(String key, Object value, int expiration) { getMap().putIfAbsent(key, value, expiration, TimeUnit.SECONDS); return getMap().get(key).equals(value); } @Override public void set(String key, Object value, int expiration) { getMap().put(key, value, expiration, TimeUnit.SECONDS); } @Override public boolean safeSet(String key, Object value, int expiration) { try { set(key, value, expiration); return true; } catch (Exception e) {} return false; } @Override public void replace(String key, Object value, int expiration) { if (getMap().containsKey(key)) { getMap().replace(key, value); } } @Override public boolean safeReplace(String key, Object value, int expiration) { if (getMap().containsKey(key)) { getMap().replace(key, value); return true; } return false; } @Override public Object get(String key) { return getMap().get(key); } @Override public Map<String, Object> get(String[] keys) { Map<String, Object> map = new HashMap(keys.len for (String key : keys) { map.put(key, getMap().get(key)); } return map; } @Override public long incr(String key, int by) { if (getMap().containsKey(key)) { getMap().lock(key); Object obj = getMap().get(key); if (obj instanceof Long) { Long number = (Long) obj; number += by; getMap().put(key, number); } getMap().unlock(key); return (Long) getMap().get(key); } return 0; } @Override public long decr(String key, int by) { return incr(key, -by); } @Override public void clear() { getMap().clear(); } @Override public void delete(String key) { getMap().remove(key); } @Override public boolean safeDelete(String key) { if (getMap().containsKey(key)) { getMap().remove(key); return true; } return false; } @Override public void stop() { client.shutdown(); } }
7、在conf/application.conf中添加配置:
hazelcast.enabled=true hazelcast.groupname=dev hazelcast.grouppass=dev-pass hazelcast.addresses=127.0.0.1:5701
以上仅供参考,如果希望获取更详细的内容,可以阅读《Play Framework Cookbook》一书。
发表评论
-
Java网络爬虫经验分享
2018-04-20 09:50 796最近三年很少写博客,虽然一直从事IT行业,但更多的是管理工作, ... -
亲测国外很快的Maven镜像
2016-11-23 14:29 5013亲测速度非常理想,并且不会像阿里的镜像很多包下载不下来。在自己 ... -
再谈Java获取classepath路径问题
2016-08-09 14:04 0网上很多文章介绍如何获取Java的classpath路径,这里 ... -
禁用HTML超链接URL的双击
2015-05-26 10:30 1084有时候我们希望控制用户在点击URL超链接的时候,只允许点击一次 ... -
Java中判断文件是否是图片文件
2014-08-17 23:20 18319使用Image读取文件时,如果是非图像文件,则会返回null。 ... -
Weblogic 10.3.6 解决Jar包冲突,hibernate等。
2014-07-06 16:30 7450Weblogic的jar包冲突困扰了我一段时间,一般使用的是如 ... -
javascript 动态显示家庭人物结构关系图
2014-01-07 23:53 7128<!DOCTYPE html PUBLIC &quo ... -
Jquery EasyUI中级篇
2013-12-23 16:08 2359JQuery EasyUI是一个很不错的Javascript开 ... -
JavaScript中,快速实现一个对象的复制!
2013-03-01 15:28 10831、第一种方式,通过JSON转换。 function cl ... -
Java路径问题解决方案汇集
2013-02-17 13:54 1576最近查看了网上很多关于路径问题资料大概总结了一下: Java ... -
EasyUI中,DataGrid的错误处理方式。
2013-02-06 17:06 0话说,JQuery EasyUI是一个非常优秀的JQuery框 ... -
再议JQuery中Ajax内存溢出问题。
2013-01-29 12:05 5858发现有人挺感兴趣Javascript中的内存溢出,本人经验发现 ... -
最近好新闻不断
2012-12-14 08:36 1019Spring Framework 3.2 GA 发布 ... -
对jqplot的CategoryAxisRenderer插件进行扩展,底部Tick在鼠标在上时浮动显示名称。
2012-11-30 09:04 3481在前一篇文章中介绍了如何让jqplot的柱形图tick下标出现 ... -
zTree 如何自动选中节点
2012-11-20 13:40 6267下列代码可以使用在弹出树或者动态选中树的节点时使用: ... -
对jqplot的CategoryAxisRenderer插件进行扩展,让文字出现省略号
2012-10-19 15:45 2975喜欢用jqplot的朋友一定碰到图形下标文字很长,会出现相互之 ... -
在Datatables中加入错误提示功能
2012-10-08 17:32 15398经常用Datatables的童鞋一定碰到过当采用服务端请求的时 ... -
jqplot 实用技巧——重绘
2012-09-18 08:46 4384技巧一: 当浏览器窗体大小改变时: $('#resizab ... -
jqPlot 实现动态显示数据,防止内存溢出的实现。
2012-09-12 16:06 6578jqPlot是一个十分强大、 ... -
让你的Play framework 1.2 支持Ajax!
2012-08-16 15:14 3332相信正在使用Play Framework 1.2的朋友一定会碰 ...
相关推荐
Framework框架与Japid源码解析** 在软件开发领域,使用高效的框架可以极大地提升开发效率和代码质量。Play! Framework是一个流行的Java Web应用程序框架,它采用模型-视图-控制器(MVC)架构模式,支持敏捷开发,...
- **实现方法**:通过简单的几行代码即可实现自定义缓存策略,例如使用内存缓存、文件缓存等。 #### 三、集成遗留Spring或Guice应用程序 - **知识点概述**:Play Framework 支持与其他Java Web框架(如Spring、...
《Play Framework 应用程序框架 v2.7.9 源码解析》 Play Framework 是一个开源的、基于Java和Scala的Web开发框架,它以其简洁、高性能和模块化的特点,深受开发者喜爱。在本篇文章中,我们将深入探讨Play Framework...
Play Framework 是一个开源的Web应用框架,用于构建高效、可测试和模块化的Java及Scala应用程序。这个框架以其简洁的API和MVC(Model-View-Controller)架构设计著称,深受开发者的喜爱。以下是关于Play Framework的...
Play Framework 是一个开源的、基于 MVC(模型-视图-控制器)架构的 Web 应用程序框架,它采用现代开发理念,如响应式编程和Actor模型,提供了高度可测试性和简洁的代码结构。 Play-Utils 模块主要包含以下几个关键...
### Playframework Cookbook 知识点解析 #### 一、Play Framework 概览 - **框架定位**:Play Framework 是一个轻量级、高效的 Java 和 Scala Web 开发框架,旨在简化 Web 应用程序的开发过程。 - **核心特性**: ...
`play-redis` 是一个专门为 Play 框架2设计的缓存插件,它作为一个高效的适配器,使得 Play 应用能够无缝地与 Redis 服务器进行交互,利用 Redis 的高速缓存能力来提升应用性能。在本文中,我们将深入探讨 `play-...
Play Framework是一个轻量级的Java开发框架,设计用于简化Web应用程序的开发流程,它强调开发效率和可伸缩性。以下是对Play Framework核心特性的详细解释: 1. **动态开发周期**:Play Framework通过自动编译和实时...
8. **框架使用**:虽然没有具体指出使用了哪个框架,但在JavaWeb开发中,Spring MVC、Struts2或Play Framework等都是常见的选择。这些框架能简化开发流程,提供模型-视图-控制器(MVC)架构,帮助开发者更好地组织...
Play Framework是基于Java和Scala的开源Web应用框架,遵循模型-视图-控制器(MVC)架构模式。它提供了强大的功能,如异步I/O、强大的路由系统和丰富的HTTP工具,使得开发高性能Web应用变得简单高效。 `play-cors-...
- 在不使用SSH的情况下,开发者可能会选择轻量级框架,如Spring Boot、Play Framework、Grails或Vaadin等。这些框架具有较低的学习曲线和更快的开发速度。 - 另一种可能的情况是,开发者可能选择了自定义解决方案...
尽管Struts在早期的Web开发中占据了重要地位,但随着Spring MVC、JSF、Play Framework等其他MVC框架的崛起,Struts的市场份额逐渐被瓜分。这些框架提供了更现代的特性和更好的性能,例如Spring MVC的注解驱动、Play ...
使用Play框架优化静态资产加载现代Web应用程序是后端服务,动态网页,自定义静态资产和基于库的静态资产的组合。 为了维持高效的开发过程,最简单的方法是将所有这些内容都放在一个项目中。 但是在生产中,有许多...
Play Framework 是一个基于Java和Scala的开源Web应用框架,它以简洁、高效和可测试性为核心,为开发者提供了构建现代Web应用的高效工具。在“playtutorial”这个项目中,我们将深入探讨如何使用Play Framework来创建...
C#作为.NET框架的一部分,提供了丰富的库和工具,使得开发这样的应用程序变得相对简单。 ### 1. 基本概念 **C#**: C#是一种面向对象的编程语言,由微软公司开发,主要用于.NET Framework。它的语法简洁明了,支持...
不过,随着技术的发展,Struts虽然仍被广泛使用,但已有一些更新的框架如Spring MVC、Play Framework等出现,它们提供了更多现代特性和更好的性能。因此,读者在学习Struts的同时,也应关注其他新兴框架,以便做出最...
1. **Java Web开发框架**:项目可能使用了Spring Boot、Struts2或Play Framework等Java Web框架来构建后端服务。这些框架简化了Web应用的开发,提供了MVC(模型-视图-控制器)架构,便于模块化和代码组织。 2. **...
通过分析作者的Web框架,可以对比WebWork或其他知名框架(如Spring MVC、Struts、Play Framework等),理解它们的设计理念和实现差异,这对于提升自己的Web开发技能非常有帮助。同时,分析源码也是深入学习软件工程...
不过,考虑到Struts 1已经较为老旧,很多现代的Web框架(如Spring Boot、Play Framework等)提供了更强大、更便捷的解决方案,因此在实际项目选择中,也需权衡利弊,适时考虑迁移到更先进的技术栈。