- 浏览: 7332039 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
自定义数据缓存DAO类,必须实现com.tangosol.net.cache.CacheStore接口或者
com.tangosol.net.cache.CacheLoader 接口,由于 com.tangosol.net.cache.AbstractCacheStore 继承了com.tangosol.net.cache.AbstractCacheLoader 实现了 com.tangosol.net.cache.CacheStore类。
实现类如下:
package com.etrip.app; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import com.tangosol.net.cache.AbstractCacheStore; /** * 自定义数据缓存DAO类,必须实现com.tangosol.net.cache.CacheStore接口或者 * com.tangosol.net.cache.CacheLoader 接口,由于 com.tangosol.net.cache.AbstractCacheStore * 继承了com.tangosol.net.cache.AbstractCacheLoader 实现了 * com.tangosol.net.cache.CacheStore类。 * @Title: TODO * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company: * @Date:2013-1-4 * @author * @version 1.0 */ public class DBCacheStore extends AbstractCacheStore { public DBCacheStore(String sTableName) { m_sTableName = sTableName; configureConnection(); } protected void configureConnection() { try { Class.forName(DB_DRIVER); m_con = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD); m_con.setAutoCommit(true); } catch (Exception e) { throw ensureRuntimeException(e, "Connection failed"); } } public String getTableName() { return m_sTableName; } public Connection getConnection() { return m_con; } public Object load(Object oKey) { Object oValue = null; Connection con = getConnection(); String sSQL = "SELECT id, value FROM " + getTableName() + " WHERE id = ?"; try { PreparedStatement stmt = con.prepareStatement(sSQL); stmt.setString(1, String.valueOf(oKey)); ResultSet rslt = stmt.executeQuery(); if (rslt.next()) { oValue = rslt.getString(2); if (rslt.next()) { throw new SQLException("Not a unique key: " + oKey); } } stmt.close(); } catch (SQLException e) { throw ensureRuntimeException(e, "Load failed: key=" + oKey); } return oValue; } public void store(Object oKey, Object oValue) { Connection con = getConnection(); String sTable = getTableName(); String sSQL; if (load(oKey) != null) { sSQL = "UPDATE " + sTable + " SET value = ? where id = ?"; } else { sSQL = "INSERT INTO " + sTable + " (value, id) VALUES (?,?)"; } try { PreparedStatement stmt = con.prepareStatement(sSQL); int i = 0; stmt.setString(++i, String.valueOf(oValue)); stmt.setString(++i, String.valueOf(oKey)); stmt.executeUpdate(); stmt.close(); } catch (SQLException e) { throw ensureRuntimeException(e, "Store failed: key=" + oKey); } } public void erase(Object oKey) { Connection con = getConnection(); String sSQL = "DELETE FROM " + getTableName() + " WHERE id=?"; try { PreparedStatement stmt = con.prepareStatement(sSQL); stmt.setString(1, String.valueOf(oKey)); stmt.executeUpdate(); stmt.close(); } catch (SQLException e) { throw ensureRuntimeException(e, "Erase failed: key=" + oKey); } } public void eraseAll(Collection colKeys) { super.eraseAll(colKeys); } public Map loadAll(Collection colKeys) { return super.loadAll(colKeys); } public void storeAll(Map mapEntries) { super.storeAll(mapEntries); } public Iterator keys() { Connection con = getConnection(); String sSQL = "SELECT id FROM " + getTableName(); List list = new LinkedList(); try { PreparedStatement stmt = con.prepareStatement(sSQL); ResultSet rslt = stmt.executeQuery(); while (rslt.next()) { Object oKey = rslt.getString(1); list.add(oKey); } stmt.close(); } catch (SQLException e) { throw ensureRuntimeException(e, "Iterator failed"); } return list.iterator(); } protected Connection m_con; protected String m_sTableName; private static final String DB_DRIVER = "com.mysql.jdbc.Driver"; private static final String DB_URL = "jdbc:mysql://localhost:3306/biz?user=root&password=123456&useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false"; private static final String DB_USERNAME = "root"; private static final String DB_PASSWORD = "123456"; }
coherence的配置文件:
<?xml version="1.0"?> <cache-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.oracle.com/coherence/coherence-cache-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-cache-config coherence-cache-config.xsd"> <caching-scheme-mapping> <!-- Caches with names that start with 'DBBacked' will be created as distributed-db-backed. --> <cache-mapping> <cache-name>DBBacked*</cache-name> <scheme-name>distributed-db-backed</scheme-name> </cache-mapping> <cache-mapping> <cache-name>VirtualCache</cache-name> <scheme-name>distributed-db-backed</scheme-name> </cache-mapping> </caching-scheme-mapping> <caching-schemes> <!-- DB Backed Distributed caching scheme. --> <distributed-scheme> <scheme-name>distributed-db-backed</scheme-name> <service-name>DistributedCache</service-name> <backing-map-scheme> <read-write-backing-map-scheme> <internal-cache-scheme> <class-scheme> <class-name>com.tangosol.util.ObservableHashMap</class-name> </class-scheme> </internal-cache-scheme> <cachestore-scheme> <class-scheme> <class-name>com.etrip.app.DBCacheStore</class-name> <init-params> <init-param> <param-type>java.lang.String</param-type> <param-value>CATALOG</param-value> </init-param> </init-params> </class-scheme> </cachestore-scheme> <read-only>false</read-only> <!-- To make this a write-through cache just change the value below to 0 (zero) --> <write-delay-seconds>0</write-delay-seconds> </read-write-backing-map-scheme> </backing-map-scheme> <autostart>true</autostart> </distributed-scheme> </caching-schemes> </cache-config>
coherence的JVM参数配置如下:
-Dtangosol.coherence.cacheconfig=D:/jee-workspace/CoherenceApp/resources/cache-db-config.xml
测试代码:
package com.etrip.app; import com.tangosol.net.CacheFactory; import com.tangosol.net.NamedCache; import com.tangosol.net.cache.ContinuousQueryCache; import com.tangosol.util.Filter; import com.tangosol.util.extractor.IdentityExtractor; import com.tangosol.util.filter.LikeFilter; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Set; /** * * @Title: TODO * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company: * @Date:2013-1-5 * @author * @version 1.0 */ public class DatabaseCache { NamedCache cache; public DatabaseCache() { } public void createCache() { cache = CacheFactory.getCache("DBBackedCache"); } public void retrieveEntry() { System.out.println((String) cache.get("catalog1")); } public void eraseEntry() { cache.remove(new String("catalog3")); } public void queryCache() { Filter filter = new LikeFilter(IdentityExtractor.INSTANCE, "Tuning%", '\\', true); HashSet hashSet = new HashSet(); hashSet.add(new String("catalog1")); hashSet.add(new String("catalog2")); hashSet.add(new String("catalog3")); Map map = cache.getAll(hashSet); ContinuousQueryCache queryCache = new ContinuousQueryCache(cache, filter); Set results = queryCache.entrySet(filter); /* Set results = cache.entrySet(filter); */ if (results.isEmpty()) System.out.println("Result Set Empty"); for (Iterator i = results.iterator(); i.hasNext();) { Map.Entry e = (Map.Entry) i.next(); System.out.println("Catalog ID: " + e.getKey() + ", Title: " + e.getValue()); } } public static void main(String[] args) { DatabaseCache databaseCache = new DatabaseCache(); //创建相关的缓存 databaseCache.createCache(); //查询缓存的数据 databaseCache.queryCache(); //获取缓存的对象 databaseCache.retrieveEntry(); } }
结果:
2013-01-05 17:23:59.268/0.362 Oracle Coherence 3.7.1.1 <Info> (thread=main, member=n/a): Loaded operational configuration from "jar:file:/D:/app/Oracle/Middleware/coherence_3.7/lib/coherence.jar!/tangosol-coherence.xml"
2013-01-05 17:23:59.321/0.415 Oracle Coherence 3.7.1.1 <Info> (thread=main, member=n/a): Loaded operational overrides from "jar:file:/D:/app/Oracle/Middleware/coherence_3.7/lib/coherence.jar!/tangosol-coherence-override-dev.xml"
2013-01-05 17:23:59.322/0.416 Oracle Coherence 3.7.1.1 <D5> (thread=main, member=n/a): Optional configuration override "/tangosol-coherence-override.xml" is not specified
2013-01-05 17:23:59.326/0.421 Oracle Coherence 3.7.1.1 <D5> (thread=main, member=n/a): Optional configuration override "/custom-mbeans.xml" is not specified
Oracle Coherence Version 3.7.1.1 Build 28901
Grid Edition: Development mode
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
2013-01-05 17:23:59.549/0.643 Oracle Coherence GE 3.7.1.1 <Info> (thread=main, member=n/a): Loaded cache configuration from "file:/D:/jee-workspace/CoherenceApp/resources/cache-db-config.xml"
2013-01-05 17:24:00.378/1.472 Oracle Coherence GE 3.7.1.1 <D4> (thread=main, member=n/a): TCMP bound to /172.30.101.179:8088 using SystemSocketProvider
2013-01-05 17:24:03.808/4.902 Oracle Coherence GE 3.7.1.1 <Info> (thread=Cluster, member=n/a): Created a new cluster "cluster:0xFCDB" with Member(Id=1, Timestamp=2013-01-05 17:24:00.531, Address=172.30.101.179:8088, MachineId=6892, Location=site:,machine:longgangbai-PC,process:6844, Role=EtripAppDatabaseCache, Edition=Grid Edition, Mode=Development, CpuCount=4, SocketCount=4) UID=0xAC1E65B30000013C0A0625931AEC1F98
2013-01-05 17:24:03.815/4.909 Oracle Coherence GE 3.7.1.1 <Info> (thread=main, member=n/a): Started cluster Name=cluster:0xFCDB
Group{Address=224.3.7.0, Port=37000, TTL=4}
MasterMemberSet(
ThisMember=Member(Id=1, Timestamp=2013-01-05 17:24:00.531, Address=172.30.101.179:8088, MachineId=6892, Location=site:,machine:longgangbai-PC,process:6844, Role=EtripAppDatabaseCache)
OldestMember=Member(Id=1, Timestamp=2013-01-05 17:24:00.531, Address=172.30.101.179:8088, MachineId=6892, Location=site:,machine:longgangbai-PC,process:6844, Role=EtripAppDatabaseCache)
ActualMemberSet=MemberSet(Size=1
Member(Id=1, Timestamp=2013-01-05 17:24:00.531, Address=172.30.101.179:8088, MachineId=6892, Location=site:,machine:longgangbai-PC,process:6844, Role=EtripAppDatabaseCache)
)
MemberId|ServiceVersion|ServiceJoined|MemberState
1|3.7.1|2013-01-05 17:24:03.808|JOINED
RecycleMillis=1200000
RecycleSet=MemberSet(Size=0
)
)
TcpRing{Connections=[]}
IpMonitor{AddressListSize=0}
2013-01-05 17:24:03.861/4.955 Oracle Coherence GE 3.7.1.1 <D5> (thread=Invocation:Management, member=1): Service Management joined the cluster with senior service member 1
2013-01-05 17:24:04.140/5.234 Oracle Coherence GE 3.7.1.1 <D5> (thread=DistributedCache, member=1): Service DistributedCache joined the cluster with senior service member 1
Catalog ID: catalog1, Title: Tuning Undo Tablespace
Catalog ID: catalog2, Title: Tuning Your View Objects
Tuning Undo Tablespace
2013-01-05 17:24:04.611/5.705 Oracle Coherence GE 3.7.1.1 <D4> (thread=ShutdownHook, member=1): ShutdownHook: stopping cluster node
2013-01-05 17:24:04.613/5.707 Oracle Coherence GE 3.7.1.1 <D5> (thread=Cluster, member=n/a): Service Cluster left the cluster
2013-01-05 17:24:04.616/5.710 Oracle Coherence GE 3.7.1.1 <D5> (thread=DistributedCache, member=n/a): Service DistributedCache left the cluster
评论
您好,
coherence的jvm参数配置:
-Dtangosol.coherence.cacheconfig=D:/jee-workspace/CoherenceApp/resources/cache-db-config.xml
这个不是很明白,麻烦问一下该配置的什么地方?
刚学coherence,不是很明白,coherence版本是 3.7.1。
配置在main类Run的Run Configuration 的Arguments中,运行参数中。
您好,
coherence的jvm参数配置:
-Dtangosol.coherence.cacheconfig=D:/jee-workspace/CoherenceApp/resources/cache-db-config.xml
这个不是很明白,麻烦问一下该配置的什么地方?
刚学coherence,不是很明白,coherence版本是 3.7.1。
发表评论
-
TestNG简单的学习(十三)TestNG中Junit的实现
2013-12-04 09:00 3353TestNG和junit的整合 ... -
TestNG简单的学习(十二)TestNG运行
2013-12-03 09:08 51575文档来自官方地址: ... -
TestNG简单的学习(十一)TestNG学习总结
2013-12-03 09:08 14178最近一直在学习关于TestNG方面的知识,根 ... -
TestNG简单的学习(十)TestNG @Listeners 的使用
2013-12-03 09:07 8689TestNG官方网站: http://testng.or ... -
TestNG简单的学习(九)TestNG Method Interceptors 的使用
2013-12-03 09:07 2711TestNG官方网站: http://testng ... -
TestNG简单的学习(八)TestNG Annotation Transformers 的使用
2013-12-03 09:07 2805TestNG官方网站: http://testng.or ... -
TestNG简单的学习(七)TestNG编程方式运行
2013-12-02 09:22 2450TestNG官方网站: http://testng.or ... -
TestNG简单的学习(六)测试工厂注释的使用
2013-12-02 09:22 2780TestNG官方网站: http://testng.or ... -
TestNG简单的学习(五)参数化测试数据的定制
2013-12-02 09:22 2698TestNG官方网站: http://testng.or ... -
TestNG简单的学习(四)测试方法通过名称名称依赖实现
2013-12-02 09:21 2079TestNG官方网站: http://testng.or ... -
TestNG简单的学习(三)测试方法通过测试分组依赖实现
2013-12-02 09:21 2826TestNG官方网站: http://testng.or ... -
TestNG简单的学习(二)参数化测试并发且多方法测试方法判定
2013-11-29 15:35 3696TestNG官方网站: http://testng.or ... -
TestNG简单的学习(一)类和方法级别@Test的区别
2013-11-29 15:31 9421TestNG官方文档的地址: http://testng ... -
Feed4Junit的简单使用(七)Feed4TestNg
2013-11-29 13:35 6130在Feed4Junit主要针对junit实现的 ... -
Feed4Junit的简单使用(六)数据来特定格式文件
2013-11-29 12:29 2764Feed4Junit官方地址: http://da ... -
Feed4Junit的简单使用(五)数据来自动态约束数据
2013-11-29 12:29 2625Feed4Junit官方地址: http://datab ... -
Feed4Junit的简单使用(四)数据来自定义数据源
2013-11-28 14:09 3096Feed4Junit官方地址: http://databe ... -
Feed4Junit的简单使用(三)数据源来自数据库
2013-11-28 13:58 3165Feed4Junit官方地址: http://databe ... -
Feed4Junit的简单使用(二)数据源来自文件
2013-11-28 13:50 4567Feed4Junit官方地址: http://datab ... -
Feed4Junit的简单使用(一)
2013-11-28 13:47 2209Feed4Junit官方地址: http://databe ...
相关推荐
根据提供的文档信息,本文将详细解析Coherence企业级缓存与Hibernate集成的相关知识点,包括配置方法、集成步骤以及实现机制。 ### Coherence企业级缓存简介 Coherence是一款由Oracle公司开发的企业级分布式内存...
- **数据库高速缓存**:提高数据库读写性能。 - **HTTP会话管理**:管理Web应用的用户会话数据。 - **网格代理调用**:允许不同节点之间的远程方法调用。 - **分布式查询**:支持在分布式的环境中执行查询操作。 ##...
这篇文章主要关注如何使用Coherence作为TopLink的二级(L2)缓存,以优化JPA(Java Persistence API)实体的读写操作。 首先,软件需求包括Oracle TopLink 11g版本11.1.1.0.0,该版本集成了EclipseLink,以及...
随着大数据时代的到来,NoSQL数据库因其高并发读写能力和海量存储能力而被广泛应用。例如: - **Google File System (GFS)**:用于存储大规模数据。 - **BigTable**:用于处理大规模结构化数据。 - **Hadoop**:...
7. 缓存框架的测试结果:测试了写入内存、写入硬盘、XML文件等缓存方法,并实现了缓存数据的读写操作。 8. 缓存框架的主要类文件:Text、Cache、MemoryStore、DiskStore、CacheConfiguration、Element等。 9. 缓存...
Java的`synchronized`关键字、`java.util.concurrent`包下的工具类,以及各种锁策略(如读写锁、乐观锁、悲观锁等)都可以用于实现缓存的并发安全。 ### 六、缓存的更新与失效 1. **缓存穿透**:当缓存和数据库均...
- 采用缓存技术(如Coherence):缓存经常访问的数据可以有效减轻数据库的压力,提高系统响应速度。 #### 四、案例分析与实践 - **业务需求分析**:首先明确业务需求,例如新契约的处理、保费计算、保单打印等,...
但是,这同时也引入了并行计算中的一些固有难题,比如竞争条件(race condition)、死锁(deadlock)、饥饿(starvation)以及缓存一致性(cache coherence)等问题。 书中主要内容涵盖了并行编程的基本原理和技术...
1. 内存映射文件(Memory-Mapped Files):这是将文件内容映射到内存地址空间的技术,让应用程序可以直接对内存中的数据进行读写,从而实现高速访问。 2. 存储持久性(Memory Persistence):由于持久性内存保留...
- **TimesTen**:针对物理内存特别优化的数据库,能够提供非常高的读写性能,适用于交易处理和查询密集型应用。 - **RAC**(Real Application Clusters):通过集群技术提高数据库层的可用性和可扩展性。 #### 三、...