ehcache集群

原创 2012年03月23日 17:57:36

直接上代码:

1.ehcache.xml

<ehcache updateCheck="false" dynamicConfig="false">
	<diskStore path="java.io.tmpdir/ehcache" />
	<cacheManagerPeerProviderFactory
		class="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory"
		properties="connect=UDP(mcast_addr=231.12.21.132;mcast_port=45566;ip_ttl=32;
	    mcast_send_buf_size=150000;mcast_recv_buf_size=80000):
	    PING(timeout=2000;num_initial_members=6):
	    MERGE2(min_interval=5000;max_interval=10000):
	    FD_SOCK:VERIFY_SUSPECT(timeout=1500):
	    pbcast.NAKACK(gc_lag=10;retransmit_timeout=3000):
	    UNICAST(timeout=5000):
	    pbcast.STABLE(desired_avg_gossip=20000):
	    FRAG:
	    pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;
	    shun=false;print_local_addr=true)"
		propertySeparator="::" />

	<defaultCache maxElementsInMemory="1000" eternal="false"
		timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" />

	<cache name="mycache" maxElementsInMemory="10" eternal="false"
		timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true">
		<cacheEventListenerFactory
			class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"
			properties="replicateAsynchronously=true, replicatePuts=true,
		   replicateUpdates=true, replicateUpdatesViaCopy=false, replicateRemovals=true" />
	</cache>
</ehcache>

2.EhcacheListener.java

package com.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;

public class EhcacheListener implements ServletContextListener {

	public void contextInitialized(ServletContextEvent e) {
		CacheManager ehcache = new CacheManager();
		Cache cache = ehcache.getCache("mycache");
		e.getServletContext().setAttribute("mycache", cache);
	}

	public void contextDestroyed(ServletContextEvent e) {
		e.getServletContext().removeAttribute("mycache");
	}
}

3.EhcacheWrite.java

package com.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.ehcache.Cache;
import net.sf.ehcache.Element;

public class EhcacheWrite extends HttpServlet {

	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
	}
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request,response);
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		String key=request.getParameter("key");
		String value=request.getParameter("value");
		Cache mycache=(Cache)this.getServletContext().getAttribute("mycache");
		mycache.put(new Element(key,value));
		request.setAttribute("message","成功写入:key="+key+",value="+value);
		request.getRequestDispatcher("/writeData.jsp").forward(request, response);
	}
	public void init() throws ServletException {
		
	}
}

4.EhcacheRead.java

package com.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.ehcache.Cache;

public class EhcacheRead extends HttpServlet {

	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		String key = request.getParameter("key");
		Cache mycache = (Cache) this.getServletContext()
				.getAttribute("mycache");
		String value=mycache.get(key)==null?null:mycache.get(key).getObjectValue().toString();
		request.setAttribute("message", value);
		request.getRequestDispatcher("/readData.jsp").forward(request, response);
	}

	/**
	 * Initialization of the servlet. <br>
	 * 
	 * @throws ServletException
	 *             if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}

}

6.web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:web="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
        version="2.4">
	<listener>
		<listener-class>com.listener.EhcacheListener</listener-class>
	</listener>
  <servlet>
    <servlet-name>EhcacheWrite</servlet-name>
    <servlet-class>com.servlet.EhcacheWrite</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>EhcacheWrite</servlet-name>
    <url-pattern>/servlet/EhcacheWrite</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>EhcacheRead</servlet-name>
    <servlet-class>com.servlet.EhcacheRead</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>EhcacheRead</servlet-name>
    <url-pattern>/servlet/EhcacheRead</url-pattern>
  </servlet-mapping>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

</web-app>

7.index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
  </head>
  
  <body>
  <u>
  <li><a href="<%=path%>/writeData.jsp">写数据</a></li>
   <li><a href="<%=path%>/readData.jsp">读数据</a></li>
  </u>
  </body>
</html>

8.writeData.jsp

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <body>
   <form action="<%=path%>/servlet/EhcacheWrite" method="post">
   <table>
	<tr>
		<th>Key<th>
		<td><input type='text' name='key'/></td>
	</tr>
	<tr>
		<th>Value<th>
		<td><input type='text' name='value'/></td>
	</tr>
	<tr>
		<td colspan='2'>
			<input type='submit' value='提交'/><a href="<%=path%>/index.jsp">返回</a><br/>
		</td>
	</tr>
</table>
   </form>
   <% if(request.getAttribute("message")!=null){
	   out.print(request.getAttribute("message"));
   }%>
  </body>
</html>

9.readData.jsp

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <body>
   <form action="<%=path%>/servlet/EhcacheRead" method="post">
<table>
	<tr>
		<th>Key<th>
		<td><input type='text' name='key'/></td>
	</tr>
	<tr>
		<td colspan='2'>
			<input type='submit' value='提交'/><a href="<%=path%>/index.jsp">返回</a><br/>
		</td>
	</tr>
</table>
</form>
   <%out.print(request.getAttribute("message"));%>
  </body>
</html>

代码可以点击打开链接下载

ehcache集群配置

这篇我将探讨ehcache的集群配置,并写两个分布在不同逻辑机器上的程序去测试是不是达到了集群效果。我的目标就是得到踏踏实实的配置成功的感觉。 一.集群配置方式 ehcache提供三种网络...
  • ni_hao_ya
  • ni_hao_ya
  • 2013年07月16日 16:56
  • 7005

ehcache集群详解三(RMI集群)

通过RMI来进行缓存集群 通过RMI来进行集群的好处: 1.RMI是java默认的远程调用机制。 2.他可以对TCP套接字进行优化设置。 3.Ehcache元素的key和value如果要存在磁盘上都...
  • wangshijie1234567
  • wangshijie1234567
  • 2015年08月18日 09:03
  • 1998

集群环境中使用 EhCache 缓存系统

本章节将要介绍EhCache及EhCache实现分布式的一些解决方案、并针对于这些解决性方案做一个实现,后续将出一个提供项目模块化、服务化、插件化的VieMall快速开发平台,同时集成Dubbo服务化...
  • tang06211015
  • tang06211015
  • 2016年08月22日 23:58
  • 10006

EhCache 分布式缓存/缓存集群

开发环境: System:Windows JavaEE Server:tomcat5.0.2.8、tomcat6 JavaSDK: jdk6+ IDE:eclipse、MyEclipse 6....
  • cn_yaojin
  • cn_yaojin
  • 2016年04月23日 11:19
  • 2067

EHCache分布式缓存集群环境配置

EHCache分布式缓存集群环境配置 ehcache提供三种网络连接策略来实现集群,rmi,jgroup还有jms。同时ehcache可以可以实现多播的方式实现集群,也可以手动指定集群主机序...
  • h348592532
  • h348592532
  • 2015年04月28日 18:04
  • 1909

缓存-ehcache 集群缓存的同步

hoojo 学习在于积累:滴水可以石穿!学而不思则罔,思而不学则殆! 博客园   首页   博问   闪存   新随笔   联系   订阅  管理 随...
  • xcw931924821
  • xcw931924821
  • 2016年08月27日 16:21
  • 3271

Ehcache分布式缓存实例(集群环境)

运行环境: 系统:Windows 7
  • Miklechun
  • Miklechun
  • 2014年05月16日 09:34
  • 2630

EhCache RMI 集群模式

RMI 是 Java 的一种远程方法调用技术,是一种点对点的基于 Java 对象的通讯方式。EhCache 从 1.2 版本开始就支持 RMI 方式的缓存集群。在集群环境中 EhCache 所有缓存对...
  • tianwei7518
  • tianwei7518
  • 2015年11月04日 20:25
  • 1349

ehcache 集群使用 rmi方式 有图有真想

ehcache rmi方式 局域网内集群
  • xh199110
  • xh199110
  • 2014年08月11日 08:57
  • 3342

关于Ehcahce缓存技术在集群环境宕机失效问题

系统开发较早,使用的是较为
  • wodestudy
  • wodestudy
  • 2014年08月17日 22:32
  • 1163
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ehcache集群
举报原因:
原因补充:

(最多只允许输入30个字)