- 浏览: 212803 次
- 来自: ...
文章分类
最新评论
-
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 743最近三年很少写博客,虽然一直从事IT行业,但更多的是管理工作, ... -
亲测国外很快的Maven镜像
2016-11-23 14:29 4930亲测速度非常理想,并且不会像阿里的镜像很多包下载不下来。在自己 ... -
再谈Java获取classepath路径问题
2016-08-09 14:04 0网上很多文章介绍如何获取Java的classpath路径,这里 ... -
禁用HTML超链接URL的双击
2015-05-26 10:30 1040有时候我们希望控制用户在点击URL超链接的时候,只允许点击一次 ... -
Java中判断文件是否是图片文件
2014-08-17 23:20 18197使用Image读取文件时,如果是非图像文件,则会返回null。 ... -
Weblogic 10.3.6 解决Jar包冲突,hibernate等。
2014-07-06 16:30 7392Weblogic的jar包冲突困扰了我一段时间,一般使用的是如 ... -
javascript 动态显示家庭人物结构关系图
2014-01-07 23:53 7091<!DOCTYPE html PUBLIC &quo ... -
Jquery EasyUI中级篇
2013-12-23 16:08 2322JQuery EasyUI是一个很不错的Javascript开 ... -
JavaScript中,快速实现一个对象的复制!
2013-03-01 15:28 10341、第一种方式,通过JSON转换。 function cl ... -
Java路径问题解决方案汇集
2013-02-17 13:54 1499最近查看了网上很多关于路径问题资料大概总结了一下: Java ... -
EasyUI中,DataGrid的错误处理方式。
2013-02-06 17:06 0话说,JQuery EasyUI是一个非常优秀的JQuery框 ... -
再议JQuery中Ajax内存溢出问题。
2013-01-29 12:05 5814发现有人挺感兴趣Javascript中的内存溢出,本人经验发现 ... -
最近好新闻不断
2012-12-14 08:36 974Spring Framework 3.2 GA 发布 ... -
对jqplot的CategoryAxisRenderer插件进行扩展,底部Tick在鼠标在上时浮动显示名称。
2012-11-30 09:04 3409在前一篇文章中介绍了如何让jqplot的柱形图tick下标出现 ... -
zTree 如何自动选中节点
2012-11-20 13:40 6209下列代码可以使用在弹出树或者动态选中树的节点时使用: ... -
对jqplot的CategoryAxisRenderer插件进行扩展,让文字出现省略号
2012-10-19 15:45 2894喜欢用jqplot的朋友一定碰到图形下标文字很长,会出现相互之 ... -
在Datatables中加入错误提示功能
2012-10-08 17:32 15290经常用Datatables的童鞋一定碰到过当采用服务端请求的时 ... -
jqplot 实用技巧——重绘
2012-09-18 08:46 4342技巧一: 当浏览器窗体大小改变时: $('#resizab ... -
jqPlot 实现动态显示数据,防止内存溢出的实现。
2012-09-12 16:06 6528jqPlot是一个十分强大、 ... -
让你的Play framework 1.2 支持Ajax!
2012-08-16 15:14 3291相信正在使用Play Framework 1.2的朋友一定会碰 ...
相关推荐
The Learning Play! Framework 2 has been created for web developers that are building web applications. The core idea is to focus on the ...
play framework api,play! framework api,play api
japid源码,轻松学习japid,从这里开始,你的人生已经不同
学习Play!框架的好资料,英文版的,分享一下
PlayFramework框架缓存.pdf
一个优于RoR的快速开发框架playframework,完全面向对象,基于jvm的REST框架,文档非常少,上手很容易,从名字上可以看出play就是玩,可以当作游戏一样轻松的玩的框架,这是它的API文档,网页格式.
Play Framework最新教程(12年),play框架教程
NULL 博文链接:https://modun.iteye.com/blog/1595857
PlayFramework框架验证.pdf
Play framework框架
框架id(framework ID) - 141 - 从命令行设置框架id - 142 - 22.生产部署 - 142 - application.conf - 142 - 设置框架为prod模式: - 142 - 定义一个真实的数据库: - 143 - 禁止JPA的自动结构更新: - 143 - 定义一...
PlayFramework框架安全模块.pdf
NULL 博文链接:https://vb2005xu.iteye.com/blog/795607
Play_Framework_框架教程.pdf,Play_Framework_框架教程.pdf
1. Play Framework 介绍 2. 创建和发布 Play 应用 2.1 创建 Play 的工程 2.2 Play 常用指令 2.3 Play 应用的 JVM 调优 3. 如何读取静态资源 4. Play框架的配置文件 5. 使用 Play 框架开发 Java 应用 5.1 HTTP...
play framework 1.X的绝好入门学习资料,有一个简单的例子,很容易入手
对play!的CRUD 进行改造,改代码还会持续重构,并不完善。 1.将create,show,delete,list都改成@Util方法,可以类似 public static void show(String id){ MyCRUD.show(id); } 的方式调用。更通用。 2.增加@...
安装并配置play环境,及用于打包的ant
PlayFramework是一个Java web开发框架,压缩包提供了Play使用培训及相关代码,官方地址:www.playframework.org