From jbosscache-commits at lists.jboss.org Tue Aug 25 20:06:54 2009 Content-Type: multipart/mixed; boundary="===============8472639969715813340==" MIME-Version: 1.0 From: jbosscache-commits at lists.jboss.org To: jbosscache-commits at lists.jboss.org Subject: [jbosscache-commits] JBoss Cache SVN: r8201 - enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US. Date: Tue, 25 Aug 2009 20:06:53 -0400 Message-ID: <200908260006.n7Q06rMV019001@svn01.web.mwc.hst.phx2.redhat.com> --===============8472639969715813340== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Author: laubai Date: 2009-08-25 20:06:53 -0400 (Tue, 25 Aug 2009) New Revision: 8201 Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/CacheLoader_FAQ.xml enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Eviction_FAQ.xml enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/General_FAQ.xml enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/TreeCache_FAQ.xml enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Troubleshooting.xml Modified: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Author_Group.xml enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Book_Info.xml enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/JBoss_Cache_Frequen= tly_Asked_Questions.xml enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Revision_History.xml Log: :) Modified: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Author_Group= .xml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Author_Group.xml 2= 009-08-25 23:13:01 UTC (rev 8200) +++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Author_Group.xml 2= 009-08-26 00:06:53 UTC (rev 8201) @@ -1,4 +1,4 @@ - + = Modified: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Book_Info.xml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Book_Info.xml 2009= -08-25 23:13:01 UTC (rev 8200) +++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Book_Info.xml 2009= -08-26 00:06:53 UTC (rev 8201) @@ -1,4 +1,4 @@ - + = Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/CacheLoader_FAQ= .xml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/CacheLoader_FAQ.xm= l (rev 0) +++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/CacheLoader_FAQ.xm= l 2009-08-26 00:06:53 UTC (rev 8201) @@ -0,0 +1,277 @@ + + + = + + Cache Loaders + + + + + + What is a cache loader? + + + + A cache loader is the connection of JBoss Cache = to a + (persistent) data store. The cache loader is calle= d by JBoss Cache to + fetch data from a store when that data is not in t= he cache, and when + modifications are made to data in the cache the Ca= che Loader is + called to store those modifications back to the st= ore. + + + In conjunction with eviction policies, JBoss Cac= he with a + cache loader allows a user to maintain a bounded c= ache for a large + backend datastore. Frequently used data is fetched= from the + datastore into the cache, and the least used data = is evicted, in + order to provide fast access to frequently accesse= d data. This is + all configured through XML, and the programmer doe= sn't have to take + care of loading and eviction. + + + JBoss Cache currently ships with several cache l= oader + implementations, including: + + + + + org.jboss.cache.loader.FileCa= cheLoader + : this implementation uses the file + system to store and retrieve data. JBo= ss Cache nodes are mapped + to directories, subnodes to subdirecto= ries etc. Attributes of + a node are mapped to a data file + inside the + directory. + + + + + + org.jboss.cache.loader.jdbm.J= dbmCacheLoader + : this implementation is based on + JDBM, + an open source file-based transactiona= l persistence engine. + + + + + + org.jboss.cache.loader.bdbje.= BdbjeCacheLoader + : this implementation is based on the + Oracle's Berkeley DB Java Edition data= base, a fast and efficient + transactional database. It uses a sing= le file for the entire + store. Note that if you use the Berkel= ey DB cache loader with + JBoss Cache and wish to ship your prod= uct, you will have to acquire a + commercial license from + Oracle. + + + + + + org.jboss.cache.loader.JDBCCa= cheLoader + : this implementation uses the relatio= nal database as the persistent + storage. + + + + + And more. See the chapter on cache l= oaders in the Users' Guide for more details. + + + + + + + + + Is the FileCacheLoader recommended for productio= n use? + + + + + No, it is not. The FileCacheLoader has some severe= limitations which restrict its use in a + production + environment, or if used in such an environment, it= should be used with due care and sufficient + understanding of these limitations. + + + Due to the way the FileCacheLo= ader represents a tree structure on disk + (directories and + files) traversal is inefficient for deep t= rees. + + Usage on shared filesystems li= ke NFS, Windows shares, etc. should be avoided as + these do + not implement proper file locking and can = cause data corruption. + + Usage with an isolation level = of NONE can cause corrupt writes as multiple threads + attempt to write to the same file. + + + + File systems are inherently not transactional, so when= attempting to use your + cache in a + transactional context, failures when writi= ng to the file (which happens during the + commit phase) + cannot be recovered. + + + + + As a rule of thumb, it is recommended that the Fil= eCacheLoader not be used in a highly + concurrent, + transactional or stressful environment, and its us= e is restricted to testing. + + + + + + + Can writing to cache loaders be asynchronous? + + + + Yes. Set the + async + attrobute to true. See the JBoss Cache Users' Guid= e for a more + detailed discussion. By default though, all cache = loader writes are + synchronous and will block. + + + + + + + Can I write my own cache loader ? + + + + Yes. A cache loader is a class implementing + org.jboss.cache.loader.CacheLoader + or extending + org.jboss.cache.loader.AbstractCacheLoade= r + . It is + configured via the XML file (see JBoss Cache Users= ' Guide). + + + + + + + Does a cache loader have to use a persistent sto= re ? + + + + No, a cache loader could for example fetch (and = possibly store) + its data from a webdav-capable webserver. Another = example is a + caching proxy server, which fetches contents from = the web. Note that + an implementation of CacheLoader may not implement= the 'store' + functionality in this case, but just the 'load' + functionality. + + + + + + + Do I have to pay to use Oracle's Berkeley DB Cac= heLoader? + + + + Not if you use it only for personal use. As soon= as you + distribute your product with BdbjeCacheLoader, you= have to purchase + a commercial license from Oracle. See details at + http://www.sleepycat.com/jeforjbosscache + + . + + + + + + + Are there any tools available to monitor the Ber= keley DB instance? + + + + + Yes. Oracle ships a JMX-based monitoring tool, cal= led + + JEMonitor + + which can be downloaded from the Oracle website. + + + + + + + When tuning my Berkeley DB instance, where shoul= d I put my je.properties file? + + + + + je.properties + should reside in your Berkeley DB home directory. = This is the directory you pass + in to the BDBJECacheLoader's + location + configuration property. + + + + + + + Can I use more than one cache loader? + + + + Yes. Within the CacheLoaderConfiguration XML + element (see Users' Guide chapter on cache loaders= ) you can + describe several cache loaders. The impact is that= the cache will + look at all of the cache loaders in the order they= 've been + configured, until it finds a valid, non-null eleme= nt of data. When + performing writes, all cache loaders are written t= o (except if the + ignoreModifications element has been set to true f= or a specific + cache loader. + + + + + + + Can I migrate a JDBCacheLoader or FileCacheLoade= r based cache store containing data formatted with JBoss Cache 1.x.x to JBo= ss Cache 2.0 format? + + + + + Yes. See "Transforming Cache Loaders" section wi= thin the "Cache Loaders" section located in the JBoss Cache Users' Guide. + + + + + + + + Is the TCPDelegatingCacheLoader resilient to TCPCa= cheServer restarts? + + + = + + + As of JBoss Cache 2.1.0, the answer is yes. See th= e Users' Guide for details on how to configure + and + tune + your retries and wait period for reestablishing th= e TCP connection. + + + Prior to that, restarting the TCPCacheServer would= also mean + restarting your application that uses the cache. + + + = + + + \ No newline at end of file Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Eviction_FAQ.xml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Eviction_FAQ.xml = (rev 0) +++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Eviction_FAQ.xml 2= 009-08-26 00:06:53 UTC (rev 8201) @@ -0,0 +1,118 @@ + + + + + Eviction Policies + + + + Does JBoss Cache support eviction policies? + + + + Yes. JBoss Cache currently supports multiple evi= ction policies such as LRU, MRU, and FIFO. + Users can also plug in their own eviction policy a= lgorithms. See user + guide for details. + + + + + + + Does JBoss Cache's eviction policy operates in + replication mode? + + + + + Yes and no. :-) + + The eviction policy only operates in local mode.= That is, nodes are + only evicted locally. This may cause the cache con= tents not to be + synchronized temporarily. But when a user tries to= obtain the cached + contents of an evicted node and finds out that is = null (e.g., + get + returns null), it should get it from the + other data source and re-populate the data in the = cache. During this + moment, the node content will be propagated and th= e cache content + will be in sync. + + + However, you still can run eviction policies wit= h cache mode + set to either + REPL_SYNC + or + REPL_ASYNC + . Depending on your use case, you can + set multiple cache instances to have their own evi= ction policy + (which are applied locally) or just have selected = instances with + eviction policies activated. + + + Also note that, with cache loader option, a loca= lly evicted + node can also be persisted to the backend store an= d a user can + retrieve it from the store later on. + + + + + + + Does JBoss Cache support + Region + ? + + + + + Yes. JBoss Cache has the notion of region where = a user can + configure the eviction policy parameters (e.g., + maxNodes + or + timeToIdleSeconds + ) + + + A region in JBoss Cache denotes a portion of tre= e hierarchy, + e.g., a fully qualified name ( + org.jboss.cache.Fqn + ). For example, + a user can define + /org/jboss + and + /org/foocom + as two separate regions. But note + that you can configure the region programmatically= now, i.e., + everything has to be configured through the xml fi= le. + + + + + + + I have turned on the eviction policy, why do I s= till get "out + of memory" (OOM) exception? + + + + + OOM can happen when the speed of cache access ex= ceeds the + speed of eviction policy handling timer. Eviction = policy handler + will wake up every + wakeUpInterval + milliseconds (or + wakeUpIntervalSeconds + seconds, prior to 3.x) + to process the eviction event queue. So when the q= ueue size is full, it will create a + backlog and cause out-of-memory exceptions to happ= en unless the eviction timer catches + up. To address this problem, in addition to increa= se the VM heap + size, you can also reduce the + wakeUpInterval + so the timer thread + processes the queue more frequently. + + + + + \ No newline at end of file Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/General_FAQ.xml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/General_FAQ.xml = (rev 0) +++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/General_FAQ.xml 20= 09-08-26 00:06:53 UTC (rev 8201) @@ -0,0 +1,222 @@ + + + + + General Information + + + + What is JBoss Cache? + + + + JBoss Cache is a replicated and transactional ca= che. It is + replicated since multiple JBoss Cache instances ca= n be distributed + (either within the same JVM or across several JVMs= whether they reside on + the same machine or on different machines on a net= work) and data is + replicated across the whole group. It is transacti= onal because a + user can configure a + J= TA + compliant transaction + manager and make any cache + interaction transactional, and caches would partic= ipate in ongoing JTA transactions. Note that + the cache can also be run without + any replication; this is the local mode. + + + JBoss Cache comes in two flavours: Core and POJO= versions. The core library + (using the + org.jboss.cache.Cache + interface) is the underlying library that organise= s data in a tree-like structure and handles + all locking, + passivation, + eviction and replication characteristics of data i= n the cache. The POJO library (using the + org.jboss.cache.pojo.PojoCache + interface) is built atop the core library and allo= ws introspection + of objects in the cache providing transparent cohe= rence by using JBoss AOP. Note that the POJO + edition + of JBoss Cache + (often referred to as POJO Cache) comes with a sep= arate set of documentation (Users' Guide, FAQ, + etc.) + available on the JBoss Cache + do= cumentation website. + + + + + + + + + Who are the JBoss Cache developers? + + + + + JBoss Cache has an active community of developers = and contributors. The project was founded by Bela Ban and is currently led = by Manik Surtani. Jason Greene is the lead for the POJO Cache subsystem, an= d other contributors both past and present include Ben Wang, Harald Gliebe,= Brian Stansberry, Vladimir Blagojevic, Mircea Markus, Jimmy Wilson, Galder= Zamarre=C3=B1o and Elias Ross. + + + + + + + + + + + + + + + How do I know the version of JBoss Cache that I = am using? + + + + + java -jar jbosscache-core.jar + will spit out version details. + + + + + + + Can I run JBoss Cache outside of JBoss Applicati= on + Server? + + + + + + Absolutely! Even though JBoss Cache comes integrat= ed with JBoss Application Server, + it can also be used in any other Java EE server su= ch as BEA WebLogic, IBM Websphere or Tomcat. + It + can also run in a standalone Java process, complet= ely outside of an application server. See the + Users' Guide for more + details. + + + + + + + How can I migrate my application and configurati= on from using JBoss Cache 1.x to 2.x? + + + Look at + this wiki page + for help. + + + + + + + What about from 2.x to 3.x? + + + + JBoss Cache 3.x is API compatible with 2.x, althou= gh as far as possible you should refactor your + code + not to use deprecated methods as these may disappe= ar in future releases of JBoss Cache. + + + JBoss Cache 3.x comes with an all new configuratio= n format. Old 2.x configuration files will + still + work, although you will get a warning in the logs = about this. Again, as far as possible, we + recommend + migrating your configuration file to the new forma= t. Scripts are provided with the JBoss Cache + 3.x + distribution to migrate configuration files (see + config2to3.sh + andconfig2to3.bat). + + + Note that to take advantage of some of the new fea= tures in JBoss Cache 3.x, you need to be using + the + new configuration format. + + + + + + + \ No newline at end of file Modified: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/JBoss_Cache_= Frequently_Asked_Questions.xml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/JBoss_Cache_Freque= ntly_Asked_Questions.xml 2009-08-25 23:13:01 UTC (rev 8200) +++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/JBoss_Cache_Freque= ntly_Asked_Questions.xml 2009-08-26 00:06:53 UTC (rev 8201) @@ -1,1488 +1,12 @@ - + - - - General Information - - - - What is JBoss Cache? - - - - JBoss Cache is a replicated and transactional ca= che. It is - replicated since multiple JBoss Cache instances ca= n be distributed - (either within the same JVM or across several JVMs= whether they reside on - the same machine or on different machines on a net= work) and data is - replicated across the whole group. It is transacti= onal because a - user can configure a - J= TA - compliant transaction - manager and make any cache - interaction transactional, and caches would partic= ipate in ongoing JTA transactions. Note that - the cache can also be run without - any replication; this is the local mode. - - - JBoss Cache comes in two flavours: Core and POJO= versions. The core library - (using the - org.jboss.cache.Cache - interface) is the underlying library that organise= s data in a tree-like structure and handles - all locking, - passivation, - eviction and replication characteristics of data i= n the cache. The POJO library (using the - org.jboss.cache.pojo.PojoCache - interface) is built atop the core library and allo= ws introspection - of objects in the cache providing transparent cohe= rence by using JBoss AOP. Note that the POJO - edition - of JBoss Cache - (often referred to as POJO Cache) comes with a sep= arate set of documentation (Users' Guide, FAQ, - etc.) - available on the JBoss Cache - do= cumentation website. - - - - - - - - - Who are the JBoss Cache developers? - - - - - JBoss Cache has an active community of developers = and contributors. The project was founded by Bela Ban and is currently led = by Manik Surtani. Jason Greene is the lead for the POJO Cache subsystem, an= d other contributors both past and present include Ben Wang, Harald Gliebe,= Brian Stansberry, Vladimir Blagojevic, Mircea Markus, Jimmy Wilson, Galder= Zamarre=C3=B1o and Elias Ross. - - - - - - - - - - - - - - - How do I know the version of JBoss Cache that I = am using? - - - - - java -jar jbosscache-core.jar - will spit out version details. - - - - - - - Can I run JBoss Cache outside of JBoss Applicati= on - Server? - - - - - - Absolutely! Even though JBoss Cache comes integrat= ed with JBoss Application Server, - it can also be used in any other Java EE server su= ch as BEA WebLogic, IBM Websphere or Tomcat. - It - can also run in a standalone Java process, complet= ely outside of an application server. See the - Users' Guide for more - details. - - - - - - - How can I migrate my application and configurati= on from using JBoss Cache 1.x to 2.x? - - - Look at - this wiki page - for help. - - - - - - - What about from 2.x to 3.x? - - - - JBoss Cache 3.x is API compatible with 2.x, althou= gh as far as possible you should refactor your - code - not to use deprecated methods as these may disappe= ar in future releases of JBoss Cache. - - - JBoss Cache 3.x comes with an all new configuratio= n format. Old 2.x configuration files will - still - work, although you will get a warning in the logs = about this. Again, as far as possible, we - recommend - migrating your configuration file to the new forma= t. Scripts are provided with the JBoss Cache - 3.x - distribution to migrate configuration files (see - config2to3.sh - andconfig2to3.bat). - - - Note that to take advantage of some of the new fea= tures in JBoss Cache 3.x, you need to be using - the - new configuration format. - - - - - - - - - - JBoss Cache: Core - - - - - - - - Can I run multiple JBoss Cache instances on the = same VM? - - - - Yes. There are some scenarios where you may want= to run - multiple instances of JBoss Cache. For example, yo= u want to run - multiple local cache instances with each instance = having its own - configuration (e.g., different cache policy). In t= his case, you will - need multiple xml configuration files. - - - - - - - Can JBoss Cache run as a second level cache insi= de - Hibernate? - - - - - Yes. Since Hibernate 3.0 release, you can config= ure it to use - JBoss Cache as a second level cache. For details, - see Hibernate documentation, and also see - this wiki page. - - - JBoss Cache 3.x with MVCC in particular works very= well as a Hibernate second level cache. - - - - - - - What about using POJO Cache as a Hibernate cache= ? - - - - It is not necessary to use POJO Cache for second= level - cache inside Hibernate because Hibernate - manages fine-grained fields in Java objects. Using= POJO Cache won't - provide any advantage, and will be an unnecessary = performance drawback. - - - - - - - How can I configure JBoss Cache? - - - - You can configure the JBoss Cache through a conf= iguration xml - file or programmatically using a - org.jboss.cache.config.Configuration - object, passed in to the - org.jboss.cache.CacheFactory - instance. - - - - - - - Can I use a schema or DTD to validate my JBoss C= ache configuration file? - - - - - - As of JBoss Cache 3.x, yes. An XSD schema is provi= ded in your jbosscache-core.jar file, and is - also - available online, on - http://www.jboss.org/jbosscache/jbosscache-config-= 3.0.xsd. - You can configure your IDE, text editor or XML aut= horing tool to use this schema to validate - your file. - - - - - - - What is the difference between the different cac= he modes? - - - - - JBossCache has five different cache modes, i.e., - LOCAL - , - REPL_SYNC - , - REPL_ASYNC - , - INVALIDATION_SYNC - and - INVALIDATION_ASYNC - . If you want to run JBoss Cache as a - single instance, then you should set the cache mod= e to - LOCAL - so that it won't attempt to replicate anything. - If you want to have synchronous replication among = different - JBoss Cache instances, you set it to - REPL_SYNC - . - For asynchronous replication, use - AYSNC_REPL - . If you do not wish to replicate cached data but = simply inform other caches in a cluster that - data - under - specific addresses are now stale and should be evi= cted from memory, use - INVALIDATION_SYNC - or - INVALIDTAION_ASYNC - . Synchronous and asynchronous behavior applies to= invalidation as well as replication. - - - Note that - ASYNC_REPL - and - INVALIDATION_ASYNC - are non-blocking. This - can be useful when you want to have another JBoss = Cache serving as a - mirror or backup and you don't want to wait for co= nfirmation that this mirror has received your - messages. - - - - - - - How does JBoss Cache's replication mechanism wor= k? - - - - JBoss Cache leverages - JGroups - for network communications. A JGroups configuratio= n section is present in your JBoss Cache - configuration. - - - A user - can configure the cluster of JBoss Cache instances= by sharing the - same cluster name ( - cluster name - ). There is also - an option of whether to populate the cache data up= on starting a new - instance in the - ClusterConfig - attribute. - - - Note that once all instances join the same repli= cation group, - every replication change is propagated to all part= icipating members. - There is no mechanism for sub-partitioning where s= ome replication - can be done within only a subset of members, unles= s you use the Buddy Replication features. See - the - Users' Guide for more details on this. - - - - - - - I run a 2 node cluster. If the network dies, do = the caches continue to run? - - - - Yes, both will continue to run, but depending on= your replication mode, all transactions or - operations may not complete. If - REPL_SYNC - is used, operations will fail while if - REPL_ASYNC - is used they will succeed. Even if they succeed th= ough, caches will be out of sync. - - - - - - - - Can I plug in library X instead of JGroups to ha= ndle remote calls and group communications? - - - - - At this stage the answer is no. We do have an ab= straction layer between the - communication suite and JBoss Cache in the pipelin= es, and this may appear as a feature at some - stage - in - the future. - - - - - - - Does the cache need to replicate to every other = instance in the cluster? Isn't this slow if - the - cluster is large? - - - - - Replication need not occur to every node in the = cluster. This feature - - called Buddy Replication - - allows each node to pick one or more 'buddies' in = the cluster and only replicate to its buddies. - This - allows a cluster to scale - very easily with no extra impact on memory or netw= ork traffic with each node added. - - - See the Users' Guide for more information on Buddy= Replication, and how it can be used to - achieve very - high - scalability. - - - - - - - I'm using Buddy Replication. Do I need to have s= ome form of session affinity? - - - Session affinity relates to returning to the sam= e cache instance for the same data being used. - While this is strictly not a requirement for Buddy= Replication, it is greatly recommended to - minimize - moving state around a cluster. - - - - - - - If I have the need for different configuration p= roperties (e.g., - CacheMode - and - IsolationLevel - ), do I simply need to create multiple - org.jboss.cache.Cache - instances with the appropriate configuration? - - - - - Yes. All the above mentioned properties are per = cache - instance. Therefore you will need separate - org.jboss.cache.Cache - instances. - - - - - - - Isn't this expensive from a networking standpoin= t, i.e., needing to create sockets for each - org.jboss.cache.Cache - instance? - - - - - - Yes, it can be. For such cases it is recommended t= hat you configure your cache using the JGroups - Multiplexer, which allows several caches to share - a single JGroups channel. Please see the Users' Gu= ide for details on how to configure the - JGroups - Multiplexer. - - - A faster and more efficient approach is to use a s= hared transport in JGroups. Please see - the JGroups = documentation - for more details on how to do this. - - - - - - - - Does the - ClusterName - configuration element have - any relation to the JBoss AS cluster - PartitionName - ? - - - - - Yes. They are both JGroups group names. Besides = the notion of - a channel in JGroups, it also can partition the ch= annel into different - group names. - - - - - - - When using multiple JGroups based components - [cluster-service.xml, cache (multiple instances)],= what is the - correct/valid way to configure those components to= make sure my - multicast addresses don't conflict? - - - - - There are two parameters to consider: multicast = address (plus - port) and the group name. At minimum, you will hav= e to run - components using a different group name. But wheth= er to run them on - the same channel depends upon whether the communic= ation performance - is critical for you or not. If it is, then it'd be= best to run them - on different channels. - - - - - - - Does JBoss Cache support cache persistence - storage? - - - - - Yes. JBoss Cache has a cache loader - interface that supports cache persistence. See bel= ow for more FAQs on cache loaders. - - - - - - - Does JBoss Cache support cache passivation/ over= flow - to a data store? - - - - - Yes. JBoss Cache uses the - cache loader to support cache passivation/ overflo= w. See - documentation on how to configure and use this fea= ture. - - - - - - - Is JBoss Cache thread safe? - - - - Yes, it is thread safe. - - - - - - Does JBoss Cache support XA (2PC) transactions n= ow? - - - - No, although it is also on our to do list. Our i= nternal - implementation does use a procedure similar to 2PC= to coordinate a - transactions among different instances, but JBoss = Cache is not an XA resource. - - - - - - - Which transaction managers are supported by - JBoss Cache? - - - - - JBoss Cache supports any TransactionManager that= is - J= TA - compliant such asJBoss Transactions. - - - While JBoss Cache does ships with a - dummy transaction manager - (org.jboss.cache.transaction.DummyTransac= tionManager), we do - not - recommend using this for production. It is not thr= ead safe, and is intended for internal testing - only. - - - - - - - How do I set up the cache to be transactional? - - - - You either use the default transaction manager t= hat ships with JBoss AS - or you have to implement the - org.jboss.cache.transaction.TransactionMa= nagerLookup - interface, and return an - instance of your - javax.transaction.TransactionManager - implementation. The - configuration property - TransactionManagerLookupClass - defines the class - to be used by the cache to fetch a reference to a - transaction manager. It is trivial to implement th= is interface to support - other transaction managers. Once this attribute is= specified, the - cache will look up the transaction context from th= is transaction - manager. - - - The - org.jboss.cache.transaction.GenericTransa= ctionManagerLookup - class that ships - with JBoss Cache is able to detect and bind to mos= t popular transaction managers. See the - GenericTransactionManagerLookup - javadocs for more information. - - - - - - - How do I control the cache locking level? - - - - JBoss Cache lets you control the cache locking l= evel through - the transaction isolation level. This is configure= d through the - attribute - IsolationLevel - . The transaction - isolation levels correspond to database - isolation levels, namely, - NONE - , - READ_UNCOMMITTED - , - READ_COMMITTED - , - REPEATABLE_READ - , and - SERIALIZABLE - . Note that these isolation levels are ignored if = optimistic locking is used. For details, - please - refer - to the - user manual. - - - As of JBoss Cache 3.x, when using the MVCC locking= scheme, only - READ_COMMITTED - and - REPEATABLE_READ - are supported. Any other isolation level provided = will either be upgraded - or downgraded accordingly. - - - - - - - How does JBoss Cache lock data for concurrent ac= cess? - - - - In JBoss Cache 2.x, by default pessimistic locki= ng is used to lock data nodes, based on the - isolation level - configured. We also offer optimistic locking to al= low for greater concurrency - at - the cost of slight processing overhead and perform= ance. See the documentation for a more - detailed - discussion on concurrency and locking in JBoss Cac= he. - - - In JBoss Cache 3.x, optimistic and pessimistic loc= king are deprecated in favour of MVCC - (multi-version concurrency - control), which is far more efficient than either = optimistic or pessimistic locking. For a - detailed discussion on - our MVCC implementation, see - this blog entry - andthis wiki page. - - - - - - - - How do I enable Optimistic Locking or MVCC in JB= oss Cache? - - - - - Please see the configuration section of the Users'= Guide for details. - - - - - - - Can I use the cache locking level even without a= transaction - context? - - - - - Yes. JBoss Cache controls the individual node lo= cking behavior - through the isolation level semantics. This means = even if you don't - use a transaction, you can specify the lock level = via isolation - level. You can think of the node locking behavior = outside of a - transaction as if it is under transaction with - auto_commit - on. - - - - - - - - Does JBoss Cache support - SELECT FOR UPDATE - semantics? - - - - - - Yes, but this is is only possible if you are runni= ng within a JTA transaction - and - are using either - MVCC - or - PESSIMISTIC - as your node locking scheme. - - - To achieve - SELECT FOR UPDATE - semantics, simply do: - - - - - - - - With replication (REPL_SYNC/REPL_ASYNC) or inval= idation - (INVALIDATION_SYNC/INVALIDATION_ASYNC), how - often does the cache broadcast messages over the n= etwork? - - - - - If the updates are under transaction, then the b= roadcasts - happen only when the transaction is about to commi= t (actually - during the prepare stage internally). That is, it = will be a batch - update. However, if the operations are not under t= ransaction - context, then each update will trigger replication= . Note that this - has performance implications if network latency is= a problem. - - - - - - - How can I do a mass removal? - - - - If you do acache.removeNode("/myroot")<= /literal>, it will recursively remove - all the entries under "/myroot". - - - - - - - Can I monitor and manage the JBoss Cache? - - - - Yes, using a JMX console such as the one shipped= with JBoss AS or Java 5's - jconsole - utility. See the chapter titled - Management Information - in the JBoss Cache Users' Guide for more details. - - - - - - - - JBoss Cache uses a - : - character in its object name. This causes problems= with - my MBean server. What can I do about it? - - - - - This is something we have seen with some MBean ser= vers. By default, JBoss Cache uses - jboss.cache:service=3DJBossCache - as a prefix to all objects it binds in JMX. - To work around this, use the - -Djbosscache.jmx.prefix - JVM parameter to pass in - an alternate prefix. - - - - - - - Can I disable JBoss Cache management attributes?= - - - - Yes, you can. See the section on configuration i= n the JBoss Cache Users' Guide. - - - - - - - What happened to jboss-serialization.jar? - - - - - As of JBoss Cache 2.0.0, the dependency on JBoss S= erialization has been dropped since most of - the - benefits of JBoss Serialization are available in u= pdated Java 5 VMs. Since JBoss Cache 2.0.0 is - baselined on Java 5, there was no need to provide = these benefits separately. - - - - - - - Does JBoss Cache support partitioning? - - - - Not right now. JBoss Cache does not support part= itioning that a - user can configure to have different set of data r= esiding on - different cache instances while still participatin= g as a replication - group. - - - This is on the roadmap though, so do keep an eye on - JBCACHE-60 - if you are interested. - - - - - - - Does JBoss Cache handle the concept of applicati= on classloading - inside, say, a Java EE container? - - - - - Application-specific classloading is used widely= inside a Java EE - container. For example, a web application may requ= ire a new - classloader to scope a specific version of the use= r library. - However, by default JBoss Cache is agnostic to the= classloader. In - general, this leads to two kinds of problems: - - - - - Object instance is stored in cache1 and = replicated to - cache2. As a result, the instance in cache= 2 is created by the - system classloader. The replication may fa= il if the system - classloader on cache2 does not have access= to the required - class. Even if replication doesn't fail, a= user thread in cache2 - may not be able to access the object if th= e user thread is - expecting a type defined by the applicatio= n classloader. - - - - - Object instance is created by thread 1 a= nd will be - accessed by thread 2 (with two different c= lassloaders). - JBoss Cache has no notion of the different= classloaders involved. - As a result, you will have a - ClassCastException - . This is a standard - problem in passing an object from one appl= ication space to - another; JBoss Cache just adds a level of = indirection in passing - the object. - - - - - To solve the first kind of issue JBoss Cache use= s a - CacheMarshaller - . - Basically, this allows application code to registe= r a classloader - with a portion of the cache tree for use in handli= ng objects - replicated to that portion. See the - CacheMarshaller - section of - the Users' Guide for more details. - - - To solve the second kind of issue, you can use t= he the - UseLazyDeserialization - configuration - option in JBoss Cache, which wraps your objects in= a - Marshalledvalue - wrapper. The - MarshalledValue - serializes and deserializes your object on demand,= ensuring the proper thread local context - class loader is used each time. - - - - - - - Does JBoss Cache currently support pre-event and= post-event - notification? - - - - - Yes. A boolean is passed in to each notification= callback identifying whether the callback is - before - or after the event. See the - org.jboss.cache.notifications.annotations= .CacheListener - annotation for details. - - - - - - - How do I implement a custom listener to listen to - cache events? - - - - - - See the Users' Guide on this subject. - - - - - - - Can I use - UseRegionBasedMarshalling - attribute in JBoss Cache in order to get - around ClassCastExceptions happening when accessin= g data in the cache that has just been - redeployed? - - - - - Yes, you can. Originally, cache Marshalling was = designed as a - workaround for those replicated caches that upon s= tate transfer did not have access to the - classloaders defining the objects in the cache. - - - On each deployment, JBoss creates a new classloa= der per the top level deployment artifact, for - example an EAR. You also have to bear in mind that= a class in an application server is defined - not - only by the class name but also its classloader. S= o, assuming that the cache is not deployed as - part - of your deployment, you could deploy an applicatio= n and put instances of classes belonging to - this - deployment inside the cache. If you did a redeploy= ment and try to do a get operation of the data - previously put, this would result on a ClassCastEx= ception. This is because even though the class - names - are the same, the class definitions are not. The c= urrent classloader is different to the one - when - the classes were originally put. - - - By enabling marshalling, you can control the lif= ecycle of the data in the cache and if on - undeployment, you deactivate the region and unregi= ster the classloader that you'd have - registered on - deployment, you'd evict the data in the cache loca= lly. That means that in the next deployment, - the - data won't be in the cache, therefore avoiding the= problem. Obviously, using marshalling to get - around this problem is only recommended when you h= ave some kind of persistence backing where the - data - survives, for example using CacheLoaders, or when = JBoss Cache is used as a second level cache in - a - persistence framework. - - - To implement this feature, please follow the ins= tructions indicated in the example located - in the CacheMarshaller section of the Users' Guide= . It's worth noting that instead of a - ServletContextListener - , you could add this code into an - MBean - that contained lifecycle methods, such as - start() - and - stop() - . - The key would be for this MBean to depend on the t= arget cache, so that it can operate as long as - the - cache is up and running. - - - - - - - - - Eviction Policies - - - - Does JBoss Cache support eviction policies? - - - - Yes. JBoss Cache currently supports multiple evi= ction policies such as LRU, MRU, and FIFO. - Users can also plug in their own eviction policy a= lgorithms. See user - guide for details. - - - - - - - Does JBoss Cache's eviction policy operates in - replication mode? - - - - - Yes and no. :-) - - The eviction policy only operates in local mode.= That is, nodes are - only evicted locally. This may cause the cache con= tents not to be - synchronized temporarily. But when a user tries to= obtain the cached - contents of an evicted node and finds out that is = null (e.g., - get - returns null), it should get it from the - other data source and re-populate the data in the = cache. During this - moment, the node content will be propagated and th= e cache content - will be in sync. - - - However, you still can run eviction policies wit= h cache mode - set to either - REPL_SYNC - or - REPL_ASYNC - . Depending on your use case, you can - set multiple cache instances to have their own evi= ction policy - (which are applied locally) or just have selected = instances with - eviction policies activated. - - - Also note that, with cache loader option, a loca= lly evicted - node can also be persisted to the backend store an= d a user can - retrieve it from the store later on. - - - - - - - Does JBoss Cache support - Region - ? - - - - - Yes. JBoss Cache has the notion of region where = a user can - configure the eviction policy parameters (e.g., - maxNodes - or - timeToIdleSeconds - ) - - - A region in JBoss Cache denotes a portion of tre= e hierarchy, - e.g., a fully qualified name ( - org.jboss.cache.Fqn - ). For example, - a user can define - /org/jboss - and - /org/foocom - as two separate regions. But note - that you can configure the region programmatically= now, i.e., - everything has to be configured through the xml fi= le. - - - - - - - I have turned on the eviction policy, why do I s= till get "out - of memory" (OOM) exception? - - - - - OOM can happen when the speed of cache access ex= ceeds the - speed of eviction policy handling timer. Eviction = policy handler - will wake up every - wakeUpInterval - milliseconds (or - wakeUpIntervalSeconds - seconds, prior to 3.x) - to process the eviction event queue. So when the q= ueue size is full, it will create a - backlog and cause out-of-memory exceptions to happ= en unless the eviction timer catches - up. To address this problem, in addition to increa= se the VM heap - size, you can also reduce the - wakeUpInterval - so the timer thread - processes the queue more frequently. - - - - - - = - - Cache Loaders - - - - - - What is a cache loader? - - - - A cache loader is the connection of JBoss Cache = to a - (persistent) data store. The cache loader is calle= d by JBoss Cache to - fetch data from a store when that data is not in t= he cache, and when - modifications are made to data in the cache the Ca= che Loader is - called to store those modifications back to the st= ore. - - - In conjunction with eviction policies, JBoss Cac= he with a - cache loader allows a user to maintain a bounded c= ache for a large - backend datastore. Frequently used data is fetched= from the - datastore into the cache, and the least used data = is evicted, in - order to provide fast access to frequently accesse= d data. This is - all configured through XML, and the programmer doe= sn't have to take - care of loading and eviction. - - - JBoss Cache currently ships with several cache l= oader - implementations, including: - - - - - org.jboss.cache.loader.FileCa= cheLoader - : this implementation uses the file - system to store and retrieve data. JBo= ss Cache nodes are mapped - to directories, subnodes to subdirecto= ries etc. Attributes of - a node are mapped to a data file - inside the - directory. - - - - - - org.jboss.cache.loader.jdbm.J= dbmCacheLoader - : this implementation is based on - JDBM, - an open source file-based transactiona= l persistence engine. - - - - - - org.jboss.cache.loader.bdbje.= BdbjeCacheLoader - : this implementation is based on the - Oracle's Berkeley DB Java Edition data= base, a fast and efficient - transactional database. It uses a sing= le file for the entire - store. Note that if you use the Berkel= ey DB cache loader with - JBoss Cache and wish to ship your prod= uct, you will have to acquire a - commercial license from - Oracle. - - - - - - org.jboss.cache.loader.JDBCCa= cheLoader - : this implementation uses the relatio= nal database as the persistent - storage. - - - - - And more. See the chapter on cache l= oaders in the Users' Guide for more details. - - - - - - - - - Is the FileCacheLoader recommended for productio= n use? - - - - - No, it is not. The FileCacheLoader has some severe= limitations which restrict its use in a - production - environment, or if used in such an environment, it= should be used with due care and sufficient - understanding of these limitations. - - - Due to the way the FileCacheLo= ader represents a tree structure on disk - (directories and - files) traversal is inefficient for deep t= rees. - - Usage on shared filesystems li= ke NFS, Windows shares, etc. should be avoided as - these do - not implement proper file locking and can = cause data corruption. - - Usage with an isolation level = of NONE can cause corrupt writes as multiple threads - attempt to write to the same file. - - - - File systems are inherently not transactional, so when attempting = to use your - cache in a - transactional context, failures when writi= ng to the file (which happens during the - commit phase) - cannot be recovered. - - - - - As a rule of thumb, it is recommended that the Fil= eCacheLoader not be used in a highly - concurrent, - transactional or stressful environment, and its us= e is restricted to testing. - - - - - - - Can writing to cache loaders be asynchronous? - - - - Yes. Set the - async - attrobute to true. See the JBoss Cache Users' Guid= e for a more - detailed discussion. By default though, all cache = loader writes are - synchronous and will block. - - - - - - - Can I write my own cache loader ? - - - - Yes. A cache loader is a class implementing - org.jboss.cache.loader.CacheLoader - or extending - org.jboss.cache.loader.AbstractCacheLoade= r - . It is - configured via the XML file (see JBoss Cache Users= ' Guide). - - - - - - - Does a cache loader have to use a persistent sto= re ? - - - - No, a cache loader could for example fetch (and = possibly store) - its data from a webdav-capable webserver. Another = example is a - caching proxy server, which fetches contents from = the web. Note that - an implementation of CacheLoader may not implement= the 'store' - functionality in this case, but just the 'load' - functionality. - - - - - - - Do I have to pay to use Oracle's Berkeley DB Cac= heLoader? - - - - Not if you use it only for personal use. As soon= as you - distribute your product with BdbjeCacheLoader, you= have to purchase - a commercial license from Oracle. See details at - http://www.sleepycat.com/jeforjbosscache - - . - - - - - - - Are there any tools available to monitor the Ber= keley DB instance? - - - - - Yes. Oracle ships a JMX-based monitoring tool, cal= led - - JEMonitor - - which can be downloaded from the Oracle website. - - - - - - - When tuning my Berkeley DB instance, where shoul= d I put my je.properties file? - - - - - je.properties - should reside in your Berkeley DB home directory. = This is the directory you pass - in to the BDBJECacheLoader's - location - configuration property. - - - - - - - Can I use more than one cache loader? - - - - Yes. Within the CacheLoaderConfiguration XML - element (see Users' Guide chapter on cache loaders= ) you can - describe several cache loaders. The impact is that= the cache will - look at all of the cache loaders in the order they= 've been - configured, until it finds a valid, non-null eleme= nt of data. When - performing writes, all cache loaders are written t= o (except if the - ignoreModifications element has been set to true f= or a specific - cache loader. - - - - - - - Can I migrate a JDBCacheLoader or FileCacheLoade= r based cache store containing data formatted with JBoss Cache 1.x.x to JBo= ss Cache 2.0 format? - - - - - Yes. See "Transforming Cache Loaders" section wi= thin the "Cache Loaders" section located in the JBoss Cache Users' Guide. - - - - - - - - Is the TCPDelegatingCacheLoader resilient to TCPCa= cheServer restarts? - - - = - - - As of JBoss Cache 2.1.0, the answer is yes. See th= e Users' Guide for details on how to configure - and - tune - your retries and wait period for reestablishing th= e TCP connection. - - - Prior to that, restarting the TCPCacheServer would= also mean - restarting your application that uses the cache. - - - = - - - - - Troubleshooting - - - - - I am having problems getting JBoss Cache to work= , where can I get information on troubleshooting? - - - - Troubleshooting section can be found in the foll= owing - wiki link. - - - - - - + + + + + + Modified: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Revision_His= tory.xml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Revision_History.x= ml 2009-08-25 23:13:01 UTC (rev 8200) +++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Revision_History.x= ml 2009-08-26 00:06:53 UTC (rev 8201) @@ -1,4 +1,4 @@ - + = Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/TreeCache_FAQ.x= ml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/TreeCache_FAQ.xml = (rev 0) +++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/TreeCache_FAQ.xml = 2009-08-26 00:06:53 UTC (rev 8201) @@ -0,0 +1,859 @@ + + + + + JBoss Cache: Core + + + + + + + + Can I run multiple JBoss Cache instances on the = same VM? + + + + Yes. There are some scenarios where you may want= to run + multiple instances of JBoss Cache. For example, yo= u want to run + multiple local cache instances with each instance = having its own + configuration (e.g., different cache policy). In t= his case, you will + need multiple xml configuration files. + + + + + + + Can JBoss Cache run as a second level cache insi= de + Hibernate? + + + + + Yes. Since Hibernate 3.0 release, you can config= ure it to use + JBoss Cache as a second level cache. For details, + see Hibernate documentation, and also see + this wiki page. + + + JBoss Cache 3.x with MVCC in particular works very= well as a Hibernate second level cache. + + + + + + + What about using POJO Cache as a Hibernate cache= ? + + + + It is not necessary to use POJO Cache for second= level + cache inside Hibernate because Hibernate + manages fine-grained fields in Java objects. Using= POJO Cache won't + provide any advantage, and will be an unnecessary = performance drawback. + + + + + + + How can I configure JBoss Cache? + + + + You can configure the JBoss Cache through a conf= iguration xml + file or programmatically using a + org.jboss.cache.config.Configuration + object, passed in to the + org.jboss.cache.CacheFactory + instance. + + + + + + + Can I use a schema or DTD to validate my JBoss C= ache configuration file? + + + + + + As of JBoss Cache 3.x, yes. An XSD schema is provi= ded in your jbosscache-core.jar file, and is + also + available online, on + http://www.jboss.org/jbosscache/jbosscache-config-= 3.0.xsd. + You can configure your IDE, text editor or XML aut= horing tool to use this schema to validate + your file. + + + + + + + What is the difference between the different cac= he modes? + + + + + JBossCache has five different cache modes, i.e., + LOCAL + , + REPL_SYNC + , + REPL_ASYNC + , + INVALIDATION_SYNC + and + INVALIDATION_ASYNC + . If you want to run JBoss Cache as a + single instance, then you should set the cache mod= e to + LOCAL + so that it won't attempt to replicate anything. + If you want to have synchronous replication among = different + JBoss Cache instances, you set it to + REPL_SYNC + . + For asynchronous replication, use + AYSNC_REPL + . If you do not wish to replicate cached data but = simply inform other caches in a cluster that + data + under + specific addresses are now stale and should be evi= cted from memory, use + INVALIDATION_SYNC + or + INVALIDTAION_ASYNC + . Synchronous and asynchronous behavior applies to= invalidation as well as replication. + + + Note that + ASYNC_REPL + and + INVALIDATION_ASYNC + are non-blocking. This + can be useful when you want to have another JBoss = Cache serving as a + mirror or backup and you don't want to wait for co= nfirmation that this mirror has received your + messages. + + + + + + + How does JBoss Cache's replication mechanism wor= k? + + + + JBoss Cache leverages + JGroups + for network communications. A JGroups configuratio= n section is present in your JBoss Cache + configuration. + + + A user + can configure the cluster of JBoss Cache instances= by sharing the + same cluster name ( + cluster name + ). There is also + an option of whether to populate the cache data up= on starting a new + instance in the + ClusterConfig + attribute. + + + Note that once all instances join the same repli= cation group, + every replication change is propagated to all part= icipating members. + There is no mechanism for sub-partitioning where s= ome replication + can be done within only a subset of members, unles= s you use the Buddy Replication features. See + the + Users' Guide for more details on this. + + + + + + + I run a 2 node cluster. If the network dies, do = the caches continue to run? + + + + Yes, both will continue to run, but depending on= your replication mode, all transactions or + operations may not complete. If + REPL_SYNC + is used, operations will fail while if + REPL_ASYNC + is used they will succeed. Even if they succeed th= ough, caches will be out of sync. + + + + + + + + Can I plug in library X instead of JGroups to ha= ndle remote calls and group communications? + + + + + At this stage the answer is no. We do have an ab= straction layer between the + communication suite and JBoss Cache in the pipelin= es, and this may appear as a feature at some + stage + in + the future. + + + + + + + Does the cache need to replicate to every other = instance in the cluster? Isn't this slow if + the + cluster is large? + + + + + Replication need not occur to every node in the = cluster. This feature - + called Buddy Replication - + allows each node to pick one or more 'buddies' in = the cluster and only replicate to its buddies. + This + allows a cluster to scale + very easily with no extra impact on memory or netw= ork traffic with each node added. + + + See the Users' Guide for more information on Buddy= Replication, and how it can be used to + achieve very + high + scalability. + + + + + + + I'm using Buddy Replication. Do I need to have s= ome form of session affinity? + + + Session affinity relates to returning to the sam= e cache instance for the same data being used. + While this is strictly not a requirement for Buddy= Replication, it is greatly recommended to + minimize + moving state around a cluster. + + + + + + + If I have the need for different configuration p= roperties (e.g., + CacheMode + and + IsolationLevel + ), do I simply need to create multiple + org.jboss.cache.Cache + instances with the appropriate configuration? + + + + + Yes. All the above mentioned properties are per = cache + instance. Therefore you will need separate + org.jboss.cache.Cache + instances. + + + + + + + Isn't this expensive from a networking standpoin= t, i.e., needing to create sockets for each + org.jboss.cache.Cache + instance? + + + + + + Yes, it can be. For such cases it is recommended t= hat you configure your cache using the JGroups + Multiplexer, which allows several caches to share + a single JGroups channel. Please see the Users' Gu= ide for details on how to configure the + JGroups + Multiplexer. + + + A faster and more efficient approach is to use a s= hared transport in JGroups. Please see + the JGroups = documentation + for more details on how to do this. + + + + + + + + Does the + ClusterName + configuration element have + any relation to the JBoss AS cluster + PartitionName + ? + + + + + Yes. They are both JGroups group names. Besides = the notion of + a channel in JGroups, it also can partition the ch= annel into different + group names. + + + + + + + When using multiple JGroups based components + [cluster-service.xml, cache (multiple instances)],= what is the + correct/valid way to configure those components to= make sure my + multicast addresses don't conflict? + + + + + There are two parameters to consider: multicast = address (plus + port) and the group name. At minimum, you will hav= e to run + components using a different group name. But wheth= er to run them on + the same channel depends upon whether the communic= ation performance + is critical for you or not. If it is, then it'd be= best to run them + on different channels. + + + + + + + Does JBoss Cache support cache persistence + storage? + + + + + Yes. JBoss Cache has a cache loader + interface that supports cache persistence. See bel= ow for more FAQs on cache loaders. + + + + + + + Does JBoss Cache support cache passivation/ over= flow + to a data store? + + + + + Yes. JBoss Cache uses the + cache loader to support cache passivation/ overflo= w. See + documentation on how to configure and use this fea= ture. + + + + + + + Is JBoss Cache thread safe? + + + + Yes, it is thread safe. + + + + + + Does JBoss Cache support XA (2PC) transactions n= ow? + + + + No, although it is also on our to do list. Our i= nternal + implementation does use a procedure similar to 2PC= to coordinate a + transactions among different instances, but JBoss = Cache is not an XA resource. + + + + + + + Which transaction managers are supported by + JBoss Cache? + + + + + JBoss Cache supports any TransactionManager that= is + J= TA + compliant such asJBoss Transactions. + + + While JBoss Cache does ships with a + dummy transaction manager + (org.jboss.cache.transaction.DummyTransac= tionManager), we do + not + recommend using this for production. It is not thr= ead safe, and is intended for internal testing + only. + + + + + + + How do I set up the cache to be transactional? + + + + You either use the default transaction manager t= hat ships with JBoss AS + or you have to implement the + org.jboss.cache.transaction.TransactionMa= nagerLookup + interface, and return an + instance of your + javax.transaction.TransactionManager + implementation. The + configuration property + TransactionManagerLookupClass + defines the class + to be used by the cache to fetch a reference to a + transaction manager. It is trivial to implement th= is interface to support + other transaction managers. Once this attribute is= specified, the + cache will look up the transaction context from th= is transaction + manager. + + + The + org.jboss.cache.transaction.GenericTransa= ctionManagerLookup + class that ships + with JBoss Cache is able to detect and bind to mos= t popular transaction managers. See the + GenericTransactionManagerLookup + javadocs for more information. + + + + + + + How do I control the cache locking level? + + + + JBoss Cache lets you control the cache locking l= evel through + the transaction isolation level. This is configure= d through the + attribute + IsolationLevel + . The transaction + isolation levels correspond to database + isolation levels, namely, + NONE + , + READ_UNCOMMITTED + , + READ_COMMITTED + , + REPEATABLE_READ + , and + SERIALIZABLE + . Note that these isolation levels are ignored if = optimistic locking is used. For details, + please + refer + to the + user manual. + + + As of JBoss Cache 3.x, when using the MVCC locking= scheme, only + READ_COMMITTED + and + REPEATABLE_READ + are supported. Any other isolation level provided = will either be upgraded + or downgraded accordingly. + + + + + + + How does JBoss Cache lock data for concurrent ac= cess? + + + + In JBoss Cache 2.x, by default pessimistic locki= ng is used to lock data nodes, based on the + isolation level + configured. We also offer optimistic locking to al= low for greater concurrency + at + the cost of slight processing overhead and perform= ance. See the documentation for a more + detailed + discussion on concurrency and locking in JBoss Cac= he. + + + In JBoss Cache 3.x, optimistic and pessimistic loc= king are deprecated in favour of MVCC + (multi-version concurrency + control), which is far more efficient than either = optimistic or pessimistic locking. For a + detailed discussion on + our MVCC implementation, see + this blog entry + andthis wiki page. + + + + + + + + How do I enable Optimistic Locking or MVCC in JB= oss Cache? + + + + + Please see the configuration section of the Users'= Guide for details. + + + + + + + Can I use the cache locking level even without a= transaction + context? + + + + + Yes. JBoss Cache controls the individual node lo= cking behavior + through the isolation level semantics. This means = even if you don't + use a transaction, you can specify the lock level = via isolation + level. You can think of the node locking behavior = outside of a + transaction as if it is under transaction with + auto_commit + on. + + + + + + + + Does JBoss Cache support + SELECT FOR UPDATE + semantics? + + + + + + Yes, but this is is only possible if you are runni= ng within a JTA transaction + and + are using either + MVCC + or + PESSIMISTIC + as your node locking scheme. + + + To achieve + SELECT FOR UPDATE + semantics, simply do: + + + + + + + + With replication (REPL_SYNC/REPL_ASYNC) or inval= idation + (INVALIDATION_SYNC/INVALIDATION_ASYNC), how + often does the cache broadcast messages over the n= etwork? + + + + + If the updates are under transaction, then the b= roadcasts + happen only when the transaction is about to commi= t (actually + during the prepare stage internally). That is, it = will be a batch + update. However, if the operations are not under t= ransaction + context, then each update will trigger replication= . Note that this + has performance implications if network latency is= a problem. + + + + + + + How can I do a mass removal? + + + + If you do acache.removeNode("/myroot")<= /literal>, it will recursively remove + all the entries under "/myroot". + + + + + + + Can I monitor and manage the JBoss Cache? + + + + Yes, using a JMX console such as the one shipped= with JBoss AS or Java 5's + jconsole + utility. See the chapter titled + Management Information + in the JBoss Cache Users' Guide for more details. + + + + + + + + JBoss Cache uses a + : + character in its object name. This causes problems= with + my MBean server. What can I do about it? + + + + + This is something we have seen with some MBean ser= vers. By default, JBoss Cache uses + jboss.cache:service=3DJBossCache + as a prefix to all objects it binds in JMX. + To work around this, use the + -Djbosscache.jmx.prefix + JVM parameter to pass in + an alternate prefix. + + + + + + + Can I disable JBoss Cache management attributes?= + + + + Yes, you can. See the section on configuration i= n the JBoss Cache Users' Guide. + + + + + + + What happened to jboss-serialization.jar? + + + + + As of JBoss Cache 2.0.0, the dependency on JBoss S= erialization has been dropped since most of + the + benefits of JBoss Serialization are available in u= pdated Java 5 VMs. Since JBoss Cache 2.0.0 is + baselined on Java 5, there was no need to provide = these benefits separately. + + + + + + + Does JBoss Cache support partitioning? + + + + Not right now. JBoss Cache does not support part= itioning that a + user can configure to have different set of data r= esiding on + different cache instances while still participatin= g as a replication + group. + + + This is on the roadmap though, so do keep an eye on + JBCACHE-60 + if you are interested. + + + + + + + Does JBoss Cache handle the concept of applicati= on classloading + inside, say, a Java EE container? + + + + + Application-specific classloading is used widely= inside a Java EE + container. For example, a web application may requ= ire a new + classloader to scope a specific version of the use= r library. + However, by default JBoss Cache is agnostic to the= classloader. In + general, this leads to two kinds of problems: + + + + + Object instance is stored in cache1 and = replicated to + cache2. As a result, the instance in cache= 2 is created by the + system classloader. The replication may fa= il if the system + classloader on cache2 does not have access= to the required + class. Even if replication doesn't fail, a= user thread in cache2 + may not be able to access the object if th= e user thread is + expecting a type defined by the applicatio= n classloader. + + + + + Object instance is created by thread 1 a= nd will be + accessed by thread 2 (with two different c= lassloaders). + JBoss Cache has no notion of the different= classloaders involved. + As a result, you will have a + ClassCastException + . This is a standard + problem in passing an object from one appl= ication space to + another; JBoss Cache just adds a level of = indirection in passing + the object. + + + + + To solve the first kind of issue JBoss Cache use= s a + CacheMarshaller + . + Basically, this allows application code to registe= r a classloader + with a portion of the cache tree for use in handli= ng objects + replicated to that portion. See the + CacheMarshaller + section of + the Users' Guide for more details. + + + To solve the second kind of issue, you can use t= he the + UseLazyDeserialization + configuration + option in JBoss Cache, which wraps your objects in= a + Marshalledvalue + wrapper. The + MarshalledValue + serializes and deserializes your object on demand,= ensuring the proper thread local context + class loader is used each time. + + + + + + + Does JBoss Cache currently support pre-event and= post-event + notification? + + + + + Yes. A boolean is passed in to each notification= callback identifying whether the callback is + before + or after the event. See the + org.jboss.cache.notifications.annotations= .CacheListener + annotation for details. + + + + + + + How do I implement a custom listener to listen to + cache events? + + + + + + See the Users' Guide on this subject. + + + + + + + Can I use + UseRegionBasedMarshalling + attribute in JBoss Cache in order to get + around ClassCastExceptions happening when accessin= g data in the cache that has just been + redeployed? + + + + + Yes, you can. Originally, cache Marshalling was = designed as a + workaround for those replicated caches that upon s= tate transfer did not have access to the + classloaders defining the objects in the cache. + + + On each deployment, JBoss creates a new classloa= der per the top level deployment artifact, for + example an EAR. You also have to bear in mind that= a class in an application server is defined + not + only by the class name but also its classloader. S= o, assuming that the cache is not deployed as + part + of your deployment, you could deploy an applicatio= n and put instances of classes belonging to + this + deployment inside the cache. If you did a redeploy= ment and try to do a get operation of the data + previously put, this would result on a ClassCastEx= ception. This is because even though the class + names + are the same, the class definitions are not. The c= urrent classloader is different to the one + when + the classes were originally put. + + + By enabling marshalling, you can control the lif= ecycle of the data in the cache and if on + undeployment, you deactivate the region and unregi= ster the classloader that you'd have + registered on + deployment, you'd evict the data in the cache loca= lly. That means that in the next deployment, + the + data won't be in the cache, therefore avoiding the= problem. Obviously, using marshalling to get + around this problem is only recommended when you h= ave some kind of persistence backing where the + data + survives, for example using CacheLoaders, or when = JBoss Cache is used as a second level cache in + a + persistence framework. + + + To implement this feature, please follow the ins= tructions indicated in the example located + in the CacheMarshaller section of the Users' Guide= . It's worth noting that instead of a + ServletContextListener + , you could add this code into an + MBean + that contained lifecycle methods, such as + start() + and + stop() + . + The key would be for this MBean to depend on the t= arget cache, so that it can operate as long as + the + cache is up and running. + + + + + + \ No newline at end of file Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Troubleshooting= .xml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Troubleshooting.xm= l (rev 0) +++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Troubleshooting.xm= l 2009-08-26 00:06:53 UTC (rev 8201) @@ -0,0 +1,21 @@ + + + = + + Troubleshooting + + + + + I am having problems getting JBoss Cache to work= , where can I get information on troubleshooting? + + + + Troubleshooting section can be found in the foll= owing + wiki link. + + + + + \ No newline at end of file --===============8472639969715813340==--