基于IBM Bluemix的数据缓存应用实例 一、创建project并加入Data Cache服务 二、创建本地Java webproject 三、打包与公布到Bluemix 四、验证效果 五、监视 IBM Data Cache for Bluemix 六、遇到的问题
林炳文Evankaka原创作品。转载请注明出处http://blog.****.net/evankaka
摘要:IBM® Data Cache for Bluemix 是快速缓存服务。支持 Web 和移动应用程序的分布式快速缓存场景。快速缓存服务使用数据网格 技术,您能够在当中存储键值对象。Data Cache 提供了一个业务就绪的内存数据网格 (IMDG)。其将数据放在接近逻辑的位置并随着业务扩展仍将其保留在此。非常easy使用并扩展现有应用程序的性能和可伸缩性。它能够帮助将冗余事务降到最低、提高响应时间并添加现有应用程序基础结构(支持重要应用程序)中的效率。对于添加的冗余。Data Cache 提供快速缓存中存储的数据副本。因此,万一掉线或停运,客户机应用程序仍可訪问快速缓存中的数据。
本文实例訪问:http://datacachetest.eu-gb.mybluemix.net/
BluxMix账号注冊:https://apps.admin.ibmcloud.com/manage/trial/bluemix.html?
cm_mmc=CMDeveloperGCG-_-Bluemix-_-****-_-onlineeventQ2
1、Bluemix个人中心创建projectwebproject
怎样创建project可看基于IBM Bluemix部署Java Web项目实战演练,这时创建后的project
2、加入Data Cache 服务
Data Cache 服务在远程利用数据网格的快速缓存功能并使您能够执行创建、检索、更新和删除操作。
能够进入到项目中,然后点击加入服务或API,然后搜索data,找到Data Cache就可以。
选择主要的套餐:
二、创建本地Java webproject
最后整个project文件夹例如以下:
1、创建一个Dynamic web Project
2、加入jar包
WebContent/WEB-INF/lib 文件夹加入ogclient.jar 、json-org.jar
这两个jar包下载地址,ftp://public.dhe.ibm.com/cloud/bluemix/datacache/
3、创建连接Data cache的代码
要使用 Data Cache 服务实例。可在 VCAP_SERVICES 环境变量中找到应用程序与服务实例进行通信所需的不论什么数据。您的应用程序须要包括所需的变量。以与 Data Cache 服务进行通信。
您能通过包括以下代码片段,以编程方式从 VCAP_SERVICES 环境变量获取变量 gridName、username 和 password,并放入代码。此代码片段将读取 VCAP_SERVICES 环境变量:
以下的代码放在本地eclipse是无法执行的,它得上传到Bluemixproject中才干够执行
public void jspInit() { Map<String, String> env = System.getenv();//取得bluemix的当前project String vcap=env.get("VCAP_SERVICES");//取得环境变量 String username=null; String password=null; String endpoint=null; String gridName=null; boolean foundService=false; if(vcap==null) { System.out.println("No VCAP_SERVICES found"); } else { try { JSONObject obj = new JSONObject(vcap); String[] names=JSONObject.getNames(obj); if (names!=null) { for (String name:names) { if (name.startsWith("DataCache")) { //取得缓存API JSONArray val = obj.getJSONArray(name); JSONObject serviceAttr = val.getJSONObject(0); JSONObject credentials = serviceAttr.getJSONObject("credentials"); username = credentials.getString("username"); password = credentials.getString("password"); endpoint=credentials.getString("catalogEndPoint"); gridName= credentials.getString("gridName"); System.out.println("Found configured username: " + username); System.out.println("Found configured password: " + password); System.out.println("Found configured endpoint: " + endpoint); System.out.println("Found configured gridname: " + gridName); foundService = true; break; } } } } catch(Exception e) {} } if(!foundService) { System.out.println("Did not find WXS service, using defaults"); } try { ObjectGridManager ogm = ObjectGridManagerFactory.getObjectGridManager(); ClientSecurityConfiguration csc=null; csc=ClientSecurityConfigurationFactory.getClientSecurityConfiguration(); csc.setCredentialGenerator(new UserPasswordCredentialGenerator(username,password)); csc.setSecurityEnabled(true); ClientClusterContext ccc = ogm.connect(endpoint, csc, null); ObjectGrid clientGrid = ogm.getObjectGrid(ccc, gridName); ogSession = clientGrid.getSession(); } catch(Exception e) { System.out.println("Failed to connect to grid!"); e.printStackTrace(); } }事实上取得的环境变量在界面上例如以下
4、创建增、取、删除缓存的代码
5、合并代码由于这里我们要实现的是从前台缓存数据,取数据等。所以后台就要实现将前台传过来的数据缓存。为此。能够将上面的代码合并使用。
新建一个.jsp文件例如以下:
dataCache.jsp
6、编写前台页面代码这里前台使用ajax请求(不懂ajax可看这里Ajax实例解说与技术原理)到dataCache.jsp文件去缓存数据、取数据、删除数据。整个代码例如以下:
index.html
7、本地启动tomcat执行一下
确认页面显示没问题这里你怎样输入数据。点击肯定会出问题,由于还没有部署到Bluxmix:例如以下错误:
三、打包与公布到Bluemix
1、打包本地war包。直接在Eclipse中使用
然后选择文件夹:
看看最后的结果:
注意:也可使用控制台下进行项目文件夹。然后输入// 将当前文件夹打包成war包 jar cvf DataCacheTest.war */ .只是,这种方法最后打包的war包笔者上传后启动失败了。所以不建议使用这种方法。
2、上传war包到个人Bluemix中心(1)、登陆cf login 输入用户名、密码、选择工作空间 或者 直接cf login-u ling20081005@126.com -o ling20081005@126.com -s 工作空间名邮箱记得换成您自己的。
(2)、上传war包cf push DataCacheTest-p D:DataCacheTest.war -m 512M 记得要指定空间大小512M
最后假设显演示样例如以下:
说明上传成功且执行成功四、验证效果
输入内容,点击存储缓存内容
注意。最后显演示样例如以下才表示缓存存储成功,要稍稍等下(server毕竟在美国,速度返回会比較慢),显示put了才表示成功!
当然,你也能够看日志:比方上面的存储缓存的
日志在这里来看:
还有就是取缓存的:页面上输入key。然后点击取缓存的按钮
删除缓存:页面上输入key,然后点击删除缓存的按钮五、监视 IBM Data Cache for Bluemix
以下是bluxmix提供的用于监视Data Cache的工具
在将应用程序连接到 Data Cache 之后。您能够监视 Web 应用程序的快速缓存使用情况。单击 IBM Bluemix 仪表板的服务实例,以为您的应用程序显示图表。注意。得绑定服务,并启动程序后才会显示此内容!
已用空间
此图表包括基于 IBM 的服务计划的快速缓存容量总计的视图。显示的容量总计包括数据网格中存储的数据的 1 个副本。您能够通过为您应用程序购买很多其它容量。一直添加限制。
吞吐量
此图表是 5 分钟内吞吐量的快照视图。您能够将此图表展开为更大的视图。显示 1 小时的吞吐量。
事务时间
此图表是 5 分钟内事务时间的快照视图。其以每毫秒的事务度量。您能够将此图表展开为更大的视图,显示 1 小时的事务时间。
命中率
此图表是快速缓存命中率的快照视图。您能够将此图表展开为更大的视图。显示 1 小时的命中率。
六、遇到的问题
遇到的问题:project第一次上传部署上去的时候。尝试訪问部署的应用程序时,打开网址,笔者出现了以下消息:
404 Not Found:Requested route ('guesstheword.mybluemix.net') does not exist.
这似乎不正确劲。显然某处存在问题,并且这个问题似乎与在 Bluemix 上执行的应用程序相关,由于该应用程序能够在本地正常执行。解决方法:删除bluxmix上的project。又一次加入服务。然后又一次打包本地war包(最好通过eclipse 的expot方法)。最后再又一次上传就可以!