Home
JBoss Cache - JBoss.org Documentation
Contents
1. this implementation is based on the Oracle s Berkeley DB Java Edition database a fast and efficient transactional database It uses a single file for the entire store Note that if you use the Berkeley DB cache loader with JBoss Cache and wish to ship your product you will have to acquire a commercial license from Oracle http www sleepycat com jeforjbosscache org jboss cache loader JDBCCacheLoader this implementation uses the relational database as the persistent storage And more See the chapter on cache loaders in the Users Guide for more details Is the FileCacheLoader recommended for production use No itis 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 FileCacheLoader represents a tree structure on disk directories and files traversal is inefficient for deep trees 13 Chapter 4 Cache Loaders 4 3 4 4 4 5 4 6 4 7 4 8 4 9 Usage on shared filesystems like NFS Windows shares etc should be avoided as these do not implement proper file locking and can cause data corruption e 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 tr
2. While this is strictly not a requirement for Buddy Replication it is greatly recommended to minimize moving state around a cluster 2 13 2 14 2 15 2 16 2 17 2 18 2 19 2 20 If have the need for different configuration properties e g CacheMode and IsolationLevel do 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 standpoint i e needing to create sockets for each org jboss cache Cache instance Yes it can be For such cases it is recommended that you configure your cache using the JGroups Multiplexer which allows several caches to share a single JGroups channel Please see the Users Guide for details on how to configure the JGroups Multiplexer A faster and more efficient approach is to use a shared transport in JGroups Please see the JGroups documentation http www jgroups org 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 channel into different group names When using multiple JGroups based components cluster service xml cache multiple instances what is the cor
3. ships with a dummy transaction manager org jboss cache transaction DummyTransactionManager we do not recommend using this for production It is not thread safe and is intended for internal testing only How do set up the cache to be transactional You either use the default transaction manager that ships with JBoss AS or you have to implement the org jboss cache transaction Transact ionManagerLookup interface and return an instance of your javax transaction Transact ionManager implementation The configuration property Transact ionManagerLookupClass defines the class to be used by the cache to fetch a reference to a transaction manager It is trivial to implement this interface to support other transaction managers Once this attribute is specified the cache will look up the transaction context from this transaction manager The org jboss cache transaction GenericTransactionManagerLookup Class that ships with JBoss Cache is able to detect and bind to most popular transaction managers See the GenericTransact ionManagerLookup javadocs for more information How do control the cache locking level JBoss Cache lets you control the cache locking level through the transaction isolation level This is configured through the attribute IsolationLevel The transaction isolation levels correspond to database isolation levels namely NONE READ_UNCOMMITTED READ COMMITTED REPEATABLE READ an
4. Frequently Asked Questions about JBoss Cache Release 3 0 0 Naga 1 General Information 1 2 JBoss Cache aa aaa 3 3 Eviction Policies u aaa a 11 4 gt Cache Loaders u essen mn ee Pe een 13 5 TEOUDIES NOOO aaa reed 17 Chapter 1 General Information 1 1 1 2 1 3 1 4 What is JBoss Cache JBoss Cache is a replicated and transactional cache It is replicated since multiple JBoss Cache instances can be distributed either within the same JVM or across several JVMs whether they reside on the same machine or on different machines on a network and data is replicated across the whole group It is transactional because a user can configure a JTA http java sun com products jta compliant transaction manager and make any cache interaction transactional and caches would participate 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 organises data in a tree like structure and handles all locking passivation eviction and replication characteristics of data in the cache The POJO library using the org jboss cache pojo PojoCache interface is built atop the core library and allows introspection of objects in the cache providing transparent coherence by using JBoss AOP Note that the
5. POJO edition of JBoss Cache often referred to as POJO Cache comes with a separate set of documentation Users Guide FAQ etc available on the JBoss Cache documentation website http www jboss org jbosscache JBoss Cache is made available in one of four different packages e jbosscache core contains the core Cache library for users who do not wish to use the additional functionality offered by POJO Cache e jbosscache pojo contains the core Cache library as well as POJO Cache extensions and dependencies 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 and other contributors both past and present include Ben Wang Harald Gliebe Brian Stansberry Vladimir Blagojevic Mircea Markus Jimmy Wilson Galder Zamarre o and Elias Ross What about licensing JBoss Cache is licensed under LGPL http www gnu org licenses lgpl html an OSI http www opensource org approved open source license Where can download JBoss Cache Chapter 1 General Information 1 5 1 6 1 7 1 8 1 9 1 10 The JBoss Cache product download page http www jboss com products jbosscache downloads has prebuilt binaries as well as source distributions You can also grab snapshots from the JBoss org subversion repository See the JBoss Cache d
6. akeUpInterval so the timer thread processes the queue more frequently 11 12 Chapter 4 Cache Loaders 4 1 4 2 What is a cache loader A cache loader is the connection of JBoss Cache to a persistent data store The cache loader is called by JBoss Cache to fetch data from a store when that data is not in the cache and when modifications are made to data in the cache the Cache Loader is called to store those modifications back to the store In conjunction with eviction policies JBoss Cache with a cache loader allows a user to maintain a bounded cache 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 accessed data This is all configured through XML and the programmer doesn t have to take care of loading and eviction JBoss Cache currently ships with several cache loader implementations including org jboss cache loader FileCacheLoader this implementation uses the file system to store and retrieve data JBoss Cache nodes are mapped to directories subnodes to subdirectories etc Attributes of a node are mapped to a data file inside the directory org jboss cache loader jdbm JdbmCacheLoader this implementation is based on JDBM http dbm sourceforge net an open source file based transactional persistence engine org jboss cache loader bdbje BdbjeCacheLoader
7. and will be accessed by thread 2 with two different classloaders 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 application space to another JBoss Cache just adds a level of indirection in passing the object To solve the first kind of issue JBoss Cache uses a CacheMarshaller Basically this allows application code to register a classloader with a portion of the cache tree for use in handling 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 the 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 implement a custom listener to listen to cache events See the Users Guide on this subject Can use UseRegionBasedMarshalling attribute in JBoss Cache in order to get around ClassCastExceptions happening when accessing da
8. ansactional context failures when writing to the file which happens during the commit phase cannot be recovered As a rule of thumb it is recommended that the FileCacheLoader not be used in a highly concurrent transactional or stressful environment and its use is restricted to testing Can writing to cache loaders be asynchronous Yes Set the async attrobute to true See the JBoss Cache Users Guide for a more detailed discussion By default though all cache loader writes are synchronous and will block Can write my own cache loader Yes A cache loader is a class implementing org jboss cache loader CacheLoader Or extending org jboss cache loader AbstractCacheLoader It is configured via the XML file see JBoss Cache Users Guide Does a cache loader have to use a persistent store 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 have to pay to use Oracle s Berkeley DB CacheLoader 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 http www sleepycat com jeforjbosscache Ar
9. ated methods as these may disappear in future releases of JBoss Cache JBoss Cache 3 x comes with an all new configuration 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 format Scripts are provided with the JBoss Cache 3 x distribution to migrate configuration files see config2to3 sh and config2to3 bat Note that to take advantage of some of the new features in JBoss Cache 3 x you need to be using the new configuration format Where can report bugs or problems Please report any bugs or problems to JBoss Cache User Forum http www jboss org jbosscache Chapter 2 JBoss Cache Core 2 1 2 2 2 3 2 4 2 5 2 6 2 7 Using JBoss Cache 2 or 3 on JBoss AS 4 x JBoss AS 4 x ships with JBoss Cache 1 4 x To make use of new features performance improvements and bug fixes in newer releases you can follow some of the steps outlined on this wiki page http www boss org community docs DOC 10254 Can 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 you want to run multiple local cache instances with each instance having its own configuration e g different cache policy In this case you will need multiple xml configuration files Can JBoss Cach
10. benefits of JBoss Serialization are available in updated 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 partitioning that a user can configure to have different set of data residing on different cache instances while still participating as a replication group This is on the roadmap though so do keep an eye on JBCACHE 60 http jira jooss org jira browse JBCACHE 60 if you are interested Does JBoss Cache handle the concept of application classloading inside say a Java EE container Chapter 2 JBoss Cache Core 2 34 2 35 2 36 Application specific classloading is used widely inside a Java EE container For example a web application may require a new classloader to scope a specific version of the user library However by default JBoss Cache is agnostic to the classloader In general this leads to two kinds of problems e Object instance is stored in cache1 and replicated to cache2 As a result the instance in cache2 is created by the system classloader The replication may fail 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 the user thread is expecting a type defined by the application classloader Object instance is created by thread 1
11. d 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 access In JBoss Cache 2 x by default pessimistic locking is used to lock data nodes based on the isolation level configured We also offer optimistic locking to allow for greater concurrency at the cost of slight processing overhead and performance See the documentation for a more detailed discussion on concurrency and locking in JBoss Cache In JBoss Cache 3 x optimistic and pessimistic locking 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 http jbosscache blogspot com 2008 07 mvcc has landed html and this wiki page http www jboss org community docs DOC 10272 How do enable Optimistic Locking or MVCC in JBoss Cache 2 26 2 27 2 28 2 29 2 30 2 31 2 32 2 33 Please see the configuration section of the Users Guide for details Can use the cache locking level even without a transaction context Yes JBoss Cache controls t
12. e run as a second level cache inside Hibernate Yes Since Hibernate 3 0 release you can configure it to use JBoss Cache as a second level cache For details see Hibernate documentation and also see this wiki page http www jboss org community docs DOC 1 0265 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 configure JBoss Cache You can configure the JBoss Cache through a configuration xml file or programmatically using a org jboss cache config Configuration object passed in to the org jboss cache CacheFactory instance Can use a schema or DTD to validate my JBoss Cache configuration file As of JBoss Cache 3 x yes An XSD schema is provided in your jbosscache core jar file and is also available online on http www jboss org jbosscache jbosscache config 3 0 x5d You can configure your IDE text editor or XML authoring tool to use this schema to validate your file What is the difference between the different cache 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 mode to Loca so that it won t attempt to replicate an
13. e there any tools available to monitor the Berkeley DB instance Yes Oracle ships a JMX based monitoring tool called JEMonitor http www oracle com technology documentation berkeley db je java com sleepycat je jmx JEMonitor html which can be downloaded from the Oracle website When tuning my Berkeley DB instance where should 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 use more than one cache loader 14 4 10 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 element of data When performing writes all cache loaders are written to except if the ignoreModifications element has been set to true for a specific cache loader Can migrate a JDBCacheLoader or FileCacheLoader based cache store containing data formatted with JBoss Cache 1 x x to JBoss Cache 2 0 format Yes See Transforming Cache Loaders section within the Cache Loaders section located in the JBoss Cache Users Guide ls the TCPDelegatingCacheLoader resilient to TCPCacheServer restarts As of JBoss Cache 2 1 0 the answer is yes See the Users Guide for details on how to configure and tun
14. e your retries and wait period for reestablishing the TCP connection Prior to that restarting the TCPCacheServer would also mean restarting your application that uses the cache 15 16 Chapter 5 Troubleshooting 5 1 am having problems getting JBoss Cache to work where can get information on troubleshooting Troubleshooting section can be found in the following wiki link http www jboss org community docs DOC 10288 17 18
15. evelopment http www jboss org community docs DOC 10259 wiki page for details How do build JBoss Cache from sources Read the README Maven txt file in the source root Note that you will need a JDK gt 5 0 and Apache Maven gt 2 0 6 Which versions of the JDK are supported by JBoss Cache JBoss Cache is baselined on Java 5 and is tested on Java 5 and 6 VMs If for whatever reason you have to use Java 1 4 you could build a retroweaved version of the core cache library thatis Java 1 4 compatible using the simple instructions on this wiki page on building and running JBoss Cache on Java 1 4 http www jboss org community docs DOC 10263 How do know the version of JBoss Cache that am using java jar jbosscache core jar Will spit out version details Can run JBoss Cache outside of JBoss Application Server Absolutely Even though JBoss Cache comes integrated with JBoss Application Server it can also be used in any other Java EE server such as BEA WebLogic IBM Websphere or Tomcat lt can also run in a standalone Java process completely outside of an application server See the Users Guide for more details How can migrate my application and configuration from using JBoss Cache 1 x to 2 x Look at this wiki page http www j boss org community docs DOC 10246 for help What about from 2 x to 3 x JBoss Cache 3 x is API compatible with 2 x although as far as possible you should refactor your code not to use deprec
16. he individual node locking 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 With replication REPL_SYNC REPL_ASYNC or invalidation INVALIDATION_SYNC INVALIDATION_ASYNC how often does the cache broadcast messages over the network If the updates are under transaction then the broadcasts happen only when the transaction is about to commit actually during the prepare stage internally That is it will be a batch update However if the operations are not under transaction context then each update will trigger replication Note that this has performance implications if network latency is a problem How can do a mass removal If you do a cache removeNode myroot it will recursively remove all the entries under myroot Can 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 Can disable JBoss Cache management attributes Yes you can See the section on configuration in the JBoss Cache Users Guide What happened to jboss serialization jar As of JBoss Cache 2 0 0 the dependency on JBoss Serialization has been dropped since most of the
17. o either REPL_SYNC or REPL_ASYNC Depending on your use case you can set multiple cache instances to have their own eviction policy which are applied locally or just have selected instances with eviction policies activated Also note that with cache loader option a locally evicted node can also be persisted to the backend store and 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 Of timeToIdleSeconds A region in JBoss Cache denotes a portion of tree hierarchy e g a fully qualified name org jboss cache Fan 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 file have turned on the eviction policy why do still get out of memory OOM exception OOM can happen when the speed of cache access exceeds 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 queue size is full it will create a backlog and cause out of memory exceptions to happen unless the eviction timer catches up To address this problem in addition to increase the VM heap size you can also reduce the w
18. of members unless you use the Buddy Replication features See the Users Guide for more details on this 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 though caches will be out of sync Can plug in library X instead of JGroups to handle remote calls and group communications At this stage the answer is no We do have an abstraction layer between the communication suite and JBoss Cache in the pipelines 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 network 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 need to have some form of session affinity Session affinity relates to returning to the same cache instance for the same data being used
19. rect 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 have to run components using a different group name But whether to run them on the same channel depends upon whether the communication 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 below for more FAQs on cache loaders Does JBoss Cache support cache passivation overflow to a data store Yes JBoss Cache uses the cache loader to support cache passivation overflow See documentation on how to configure and use this feature Is JBoss Cache thread safe Yes it is thread safe Does JBoss Cache support XA 2PC transactions now No although it is also on our to do list Our internal implementation does use a procedure similar to 2PC to coordinate a transactions among different instances but JBoss Cache is not an XA resource Chapter 2 JBoss Cache Core 2 21 2 22 2 23 2 24 2 25 Which transaction managers are supported by JBoss Cache JBoss Cache supports any TransactionManager that is JTA http java sun com products jta compliant such as JBoss Transactions http www jboss org jbosstm While JBoss Cache does
20. s 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 instructions 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 target cache so that it can operate as long as the cache is up and running 10 Chapter 3 Eviction Policies 3 1 3 2 3 3 3 4 Does JBoss Cache support eviction policies Yes JBoss Cache currently supports multiple eviction policies such as LRU MRU and FIFO Users can also plug in their own eviction policy algorithms 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 contents 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 the cache content will be in sync However you still can run eviction policies with cache mode set t
21. ta 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 state transfer did not have access to the classloaders defining the objects in the cache On each deployment JBoss creates a new classloader 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 So assuming that the cache is not deployed as part of your deployment you could deploy an application and put instances of classes belonging to this deployment inside the cache If you did a redeployment and try to do a get operation of the data previously put this would result on a ClassCastException This is because even though the class names are the same the class definitions are not The current classloader is different to the one when the classes were originally put By enabling marshalling you can control the lifecycle of the data in the cache and if on undeployment you deactivate the region and unregister the classloader that you d have registered on deployment you d evict the data in the cache locally 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 have some kind of persistence backing where the data survive
22. ything 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 Chapter 2 JBoss Cache Core 2 8 2 9 2 10 2 12 that data under specific addresses are now stale and should be evicted from memory use INVALIDATION_SYNC Of 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 confirmation that this mirror has received your messages How does JBoss Cache s replication mechanism work JBoss Cache leverages JGroups http www jgroups org for network communications A JGroups configuration 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 upon starting a new instance in the clusterConfig attribute Note that once all instances join the same replication group every replication change is propagated to all participating members There is no mechanism for sub partitioning where some replication can be done within only a subset
Download Pdf Manuals
Related Search
Related Contents
Manual de Instruções, Balanças NewClassic, Modelos MS-S / MS-L V7 Replacement Battery for selected Hewlett-Packard Notebooks Manuel d`utilisation PESEE 1 iStarUSA DAGE212U40BK-3MS disk array 取扱説明書等(2) Chapter 33 Lights User Guide - William Green Copyright © All rights reserved.
Failed to retrieve file