`

infinispan项目中的配置

    博客分类:
  • J2EE
 
阅读更多

import java.io.IOException;
import java.util.Map;

public interface CacheManager   {
    static final String lbsNameCache= "lbsNameCache";

	Object put(Object key, Object value);
	
	Object get(Object key);
	
	void remove(Object key);
	
	void putAll(Map<Object, Object> map);
	
	
	Object put(String namedCache,Object key, Object value);

	
    Object get(String namedCache,Object key);
	
	void remove(String namedCache,Object key);
	
	void putAll(String namedCache,Map<Object, Object> map);
	
	void init()  throws IOException;
	
	
	void destroy();
}

 

 

import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import org.infinispan.Cache;
import org.infinispan.manager.DefaultCacheManager;
import org.infinispan.manager.EmbeddedCacheManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class InfinispanCacheManager implements CacheManager {
	private Logger logger = LoggerFactory
			.getLogger(InfinispanCacheManager.class);

	private EmbeddedCacheManager embeddedCacheManager;

	private Map<String, Cache<Object, Object>> caches = new HashMap<String, Cache<Object, Object>>();

	private String configurationFile;

	public String getConfigurationFile() {
		return configurationFile;
	}

	public void setConfigurationFile(String configurationFile) {
		this.configurationFile = configurationFile;
	}

	public void setEmbeddedCacheManager(
			EmbeddedCacheManager embeddedCacheManager) {
		this.embeddedCacheManager = embeddedCacheManager;
	}

	public InfinispanCacheManager() {
	}

	public void init() throws IOException {
		if (embeddedCacheManager == null) {
			embeddedCacheManager = new DefaultCacheManager(configurationFile);
		}
		Set<String> nameCaches = embeddedCacheManager.getCacheNames();
		Iterator<String> iterator = nameCaches.iterator();
		while (iterator.hasNext()) {
			String nameCahe = iterator.next();
			caches.put(nameCahe, embeddedCacheManager.getCache(nameCahe));
		}
		if (logger.isInfoEnabled()) {
			logger.info("cache start");
		}
	}

	public void destroy() {
		Set<String> nameCaches = caches.keySet();
		Iterator<String> iterator = nameCaches.iterator();
		while (iterator.hasNext()) {
			String nameCahe = iterator.next();
			Cache<Object, Object> cache = embeddedCacheManager
					.getCache(nameCahe);
			if (cache != null) {
				cache.stop();
			}
		}
		if (logger.isInfoEnabled()) {
			logger.info("cache stop");
		}
		embeddedCacheManager.stop();
	}

	public Cache<Object, Object> getCache() {
		return caches.get(EmbeddedCacheManager.DEFAULT_CACHE_NAME);
	}

	private Cache<Object, Object> getNameCache(String cacheName) {
		return caches.get(cacheName);
	}

	@Override
	public Object put(Object key, Object value) {
		return getCache().put(key, value);
	}

	@Override
	public void putAll(Map<Object, Object> map) {
		getCache().putAll(map);
	}

	@Override
	public Object get(Object key) {
		return getCache().get(key);
	}

	@Override
	public Object get(String namedCache, Object key) {
		Cache<Object, Object> cache = getNameCache(namedCache);
		if (cache == null) {
			return null;
		}
		if (logger.isInfoEnabled()) {
			logger.info("get key"+key);
		}
		return cache.get(key);
	}

	@Override
	public Object put(String namedCache, Object key, Object value) {
		Cache<Object, Object> cache = getNameCache(namedCache);
		if (cache == null) {
			return null;
		}
		if (logger.isInfoEnabled()) {
			logger.info("put key"+key);
		}
		return cache.put(key, value);
	}

	@Override
	public void putAll(String namedCache, Map<Object, Object> map) {
		Cache<Object, Object> cache = getNameCache(namedCache);
		if (cache == null) {
			return;
		}
		cache.putAll(map);
	}

	@Override
	public void remove(Object key) {
		getCache().remove(key);
	}

	@Override
	public void remove(String namedCache, Object key) {
		Cache<Object, Object> cache = getNameCache(namedCache);
		if (cache == null) {
			return;
		}
		if (logger.isInfoEnabled()) {
			logger.info("remove key"+key);
		}
		cache.remove(key);
	}
}

 

<?xml version="1.0" encoding="UTF-8"?>
<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="urn:infinispan:config:4.2 
	http://www.infinispan.org/schemas/infinispan-config-4.2.xsd"
	xmlns="urn:infinispan:config:4.2">
	<global>
		<transport>
			<properties>
				<property name="configurationFile" value="jgroups-udp.xml"/>
			</properties>
		</transport>
	</global>
	<default>
		<clustering mode="replication">
			<stateRetrieval fetchInMemoryState="true" timeout="20000" />
			<async />
		</clustering>
		<locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000"
			lockAcquisitionTimeout="15000" useLockStriping="false" />
		<deadlockDetection enabled="true" spinDuration="1000" />
		<expiration lifespan="86400" maxIdle="43200" />
		<lazyDeserialization enabled="true" />
	</default>
	<namedCache name="lbsNameCache">

	</namedCache>
</infinispan>
 

<config xmlns="urn:org:jgroups" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="urn:org:jgroups file:schema/JGroups-2.8.xsd">
	<TCP bind_port="7800" loopback="true" port_range="30"
		recv_buf_size="20000000" send_buf_size="640000"
		discard_incompatible_packets="true" max_bundle_size="64000"
		max_bundle_timeout="30" enable_bundling="true" use_send_queues="true"
		sock_conn_timeout="300" enable_diagnostics="false"
		skip_suspected_members="true" thread_pool.enabled="true"
		thread_pool.min_threads="2" thread_pool.max_threads="8"
		thread_pool.keep_alive_time="5000" thread_pool.queue_enabled="false"
		thread_pool.queue_max_size="100" thread_pool.rejection_policy="Run"

		oob_thread_pool.enabled="true" oob_thread_pool.min_threads="2"
		oob_thread_pool.max_threads="8" oob_thread_pool.keep_alive_time="5000"
		oob_thread_pool.queue_enabled="false" oob_thread_pool.queue_max_size="100"
		oob_thread_pool.rejection_policy="Run" />

	<!-- you need add initial hosts list in initial_hosts -->
	<TCPPING timeout="3000" initial_hosts="localhost[7800],localhost[7801]}"
		port_range="5" num_initial_members="1" />
	<!-- use multicast here -->
	<!--<MPING bind_addr="127.0.0.1" break_on_coord_rsp="true" -->
	<!--mcast_addr="230.8.8.8" mcast_port="17890" ip_ttl="2" -->
	<!--num_initial_members="3"/> -->

	<MERGE2 max_interval="30000" min_interval="10000" />
	<FD_SOCK />
	<!-- Note that this is an atypically short timeout and a small number of 
		retries configured this way to speed up unit testing, since we know all nodes 
		run in the same JVM and hence failure detections will be very quick. -->
	<FD timeout="3000" max_tries="3" />
	<VERIFY_SUSPECT timeout="1500" />
	<pbcast.NAKACK use_mcast_xmit="false" gc_lag="0"
		retransmit_timeout="300,600,1200,2400,4800" discard_delivered_msgs="false" />
	<UNICAST timeout="300,600,1200" />
	<pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000"
		max_bytes="400000" />
	<pbcast.GMS print_local_addr="false" join_timeout="7000"
		view_bundling="true" />
	<FC max_credits="2000000" min_threshold="0.10" />
	<FRAG2 frag_size="60000" />
	<pbcast.STREAMING_STATE_TRANSFER />
	<!-- <pbcast.STATE_TRANSFER/> -->
	<pbcast.FLUSH timeout="0" />
</config>
 

 

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/aop 
	http://www.springframework.org/schema/aop/spring-aop-3.0.xsd   
	http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
	http://www.springframework.org/schema/context 
	http://www.springframework.org/schema/context/spring-context-3.0.xsd   
	http://www.springframework.org/schema/jee 
	http://www.springframework.org/schema/jee/spring-jee-3.0.xsd   
	http://www.springframework.org/schema/tx 
	http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
	<bean class="cache.InfinispanCacheManager"
		id="cacheManager" init-method="init" destroy-method="destroy">
		<property name="configurationFile" value="META-INF/cache/infinispan-config.xml" />
	</bean>
</beans>
 

 

分享到:
评论

相关推荐

    infinispan

    Infinispan的LGPL许可证和活跃的开发及用户社区支持,使其成为众多项目中的首选。它不仅能够降低企业成本,还能提高灵活性,通过无缝集成现有应用程序环境,将它们部署至云端基础设施,进一步增强了其市场竞争力。 ...

    Infinispan分布式网格数据平台

    此外,源码分析有助于开发者了解如何集成Infinispan到自己的项目中,以及如何编写自定义模块来扩展其功能。 **工具支持** Infinispan提供了丰富的工具支持,包括命令行接口(CLI)、管理控制台、JMX监控以及...

    infinispan-spring-5.1.0.ALPHA2.zip

    这个版本为开发者提供了与Spring 5.1版本兼容的API和配置,以便于在Spring应用中无缝集成Infinispan。通过这个库,开发者可以利用Infinispan的强大功能,如分布式缓存、事件监听、查询以及事务管理等,同时享受到...

    wildfly10-infinispan-quickstart:具有Infinispan和EJB配置的Wildfly容器的快速入门测试服务

    wildfly10-infinispan测试 具有infinspan和ebj配置的Wildfly容器的快速入门测试服务 安装 野蝇容器 要获取野生果蝇,请进入bin目录 cd $WILDFLY_HOME/bin 执行独立批处理 linux: ./standalone.sh --debug window: ./...

    infinispan-server-rest-5.2.20.Final.zip

    《Infinispan Server REST API 5.2.20.Final:开源项目与ElasticSearch安全增强——Search Guard插件详解》 Infinispan Server REST API 5.2.20.Final是一个用于分布式内存数据网格的开源项目,它提供了强大的数据...

    infinispan-cachestore-jdbc-8.2.3.Final.zip

    Infinispan是JBoss公司推出的一个强大且高度可配置的内存数据网格平台,提供缓存服务,支持数据持久化。本篇文章将主要探讨Infinispan的JDBC缓存存储功能,并结合Spring Integration Java DSL进行深入讲解。 首先,...

    infinispan-core-5.2.11.Final.zip

    通过Infinispan Core 5.2.11.Final中的类路径扫描工具,我们可以学习到如何在实际项目中实现类似功能,从而提高程序的灵活性和可维护性。同时,这也反映了开源项目的力量,通过分享和学习,我们可以不断提高自身技术...

    infinispan-core-7.0.2.Final.zip

    这两个开源项目在现代分布式系统中扮演着重要角色,Infinispan作为数据网格,可处理大规模数据存储和缓存需求,而Jedis则为Java开发者提供了便捷的Redis访问方式,共同推动了企业级应用的高效运行。

    infinispan-spring-boot:Infinispan Spring Boot启动器。 在Spring Boot应用程序中使用此启动程序,以帮助您在嵌入式和客户端服务器模式下使用Infinispan + Spring集成

    通过infinispan-spring-boot-master这个项目,你可以深入学习如何配置和使用Infinispan启动器。该项目包含示例代码和配置,是实践和理解Infinispan与Spring Boot集成的绝佳资源。开发者可以借此了解如何在实际项目中...

    infinispan-cli-interpreter-8.2.0.Beta2.zip

    首先,`infinispan-cli-interpreter-8.2.0.Beta2.zip`是Infinispan项目的一部分,Infinispan是一个高性能、分布式内存数据网格平台,广泛应用于缓存、实时分析和大数据处理。它的命令行解释器(CLI)为用户提供了一...

    Infinispan Data Grid Platform Definitive Guide

    无论是对于想要深入了解Infinispan的初学者还是希望将其应用于实际项目中的高级开发者来说,这本书都是一个不可或缺的资源。通过阅读本书,读者可以更好地理解如何利用Infinispan构建出高效、可扩展且具有高可用性的...

    infinispan-server-hotrod-5.1.3.FINAL.zip

    Infinispan Server HotRod是Infinispan项目的一个组件,它是一个高性能、可扩展的数据网格平台,专为分布式缓存和数据存储设计。HotRod是Infinispan的远程客户端-服务器协议,允许客户端通过网络与Infinispan服务器...

    vertx-infinispan:Vert.x Infinispan 集群管理器

    通过查看源代码,你可以深入理解如何在Vert.x应用中集成Infinispan,如何配置和使用其特性的具体实现。同时,示例项目提供了实践操作的起点,帮助开发者快速上手。 总的来说,Vert.x Infinispan结合了Vert.x的事件...

    infinispan-presentation-splitbrain:Infinispan 脑裂演示

    在"Infinispan-presentation-splitbrain"项目中,我们可以通过JavaScript进行交互式演示,观察Infinispan在遇到网络分区时的行为。这个项目可能包含一系列的实验场景,例如模拟网络分区、节点故障,以及恢复过程,以...

    infinispan-cachestore-leveldb-8.0.1.Final.zip

    【标题】"Infinispan ...而锌作为 Scala 项目构建的辅助工具,虽然与 Infinispan 主题不直接相关,但同样在软件开发过程中扮演着重要角色。对于大型 Scala 项目来说,高效的增量编译器如 Zinc 可以显著提高开发效率。

    infinispan-client-hotrod-8.2.0.Final.zip

    通过这个源码,开发者可以了解项目的内部结构,进行自定义配置,或者为项目提供增强和修复。 综合来看,"infinispan-client-hotrod-8.2.0.Final.zip" 和 "probedock-junit.zip" 是两个独立但相关的开源工具,它们都...

    infinispan-remote-query-client-7.0.0.Final.zip

    《Infinispan Remote Query Client 7.0.0.Final 深度解析与开源项目实践》 Infinispan,作为一个高性能、分布式的内存数据网格,是JBoss的一个核心组件,它提供了缓存解决方案,支持事务处理、数据复制以及分布式...

    infinispan-core-7.0.0.CR1.zip

    Infinispan的设计目标是提供一个高度灵活且可配置的解决方案,它不仅支持数据缓存,还支持数据存储和计算。在7.0.0.CR1版本中,Infinispan已经具备了稳定性和性能优化,为开发者提供了强大的数据处理能力。 ...

    InfinispanExample:显示如何使用 Infinispan 的示例

    总的来说,`InfinispanExample`项目为我们提供了一个了解和学习Infinispan特性和使用方法的平台,通过实际操作可以深入理解其在Java应用程序中的工作原理和优势。无论是对于开发高效缓存系统,还是构建分布式应用...

    infinispan-server-core-7.0.0.Alpha4.zip

    总之,"infinispan-server-core-7.0.0.Alpha4.zip" 和 "rundeck-hipchat-plugin.zip" 分别代表了两个开源项目的关键组件:一个是高性能的分布式缓存系统,另一个则是自动化工具与协作平台的集成插件。这两个工具都...

Global site tag (gtag.js) - Google Analytics