Hi,

I have started implementing JBossCache/PojoCache and stumble to the following:

I (basically) use the config files as provided through the samples. I also play 
with PojoCache 2.0. Java 1.5

The Config files are below and I use the annotations as described.

The issue is the following: I have an application that is very memory consuming 
so I try to cache the overflow of objects to disk.
As you can see I set the cache mode to be LOCAL, cacheloader is JdbmCacheLoader 
is and marshallNonSerializable = true.

1. After closing the app I expect the table to be cleared but somehow this does 
not happen.
2. From what I understand my objects don't need to be serialized but when I 
don't do this jboss complains: Jun 12, 2007 4:40:42 PM 
org.jboss.cache.eviction.BaseEvictionAlgorithm evictCacheNode
  | SEVERE: Eviction of 
/__JBossInternal__/9e13ccf9-0908-4234-bd1f-cf0f1deea048/1426servoy_sample_auto_pdf-1/_ID_/5c4o16-rj0vpp-f2uhehnn-1-f2uhehq1-3
 failed
  | java.lang.RuntimeException: java.io.NotSerializableException: 
com.it2be.analyzer.repository.Style
  |     at org.jboss.cache.CacheImpl.invokeMethod(CacheImpl.java:3860)
  | ..... 
3. Serializing then is not the solution either. After a while (I guess when 
caching to disk really takes place) I see the following error:Jun 12, 2007 
5:01:42 PM org.jboss.cache.eviction.BaseEvictionAlgorithm evictCacheNode
  | WARNING: Eviction of /e9737027-7423-45ad-b3d7-87a5f5be2174 timed out, 
retrying laterand ultimately, out of the blue, I receive the next error where 
the class is exactly the same as the ones before:Jun 12, 2007 5:02:46 PM 
org.jboss.cache.pojo.interceptors.PojoTxInterceptor invoke
  | WARNING: attach: exception occurred: java.lang.RuntimeException: 
java.io.InvalidClassException: com.it2be.analyzer.repository.Method; no valid 
constructor

I am new to caching so I hope you forgive me my ignorance and hope you can help 
me to solve these issues.

Thanks,

Marcel

--- cluster
<?xml version="1.0" encoding="UTF-8"?>
  | 
  | <server>
  |     <mbean code="org.jboss.cache.aop.PojoCache"
  |             name="jboss.cache:service=PojoCache">
  |             <depends>jboss:service=TransactionManager</depends>
  |             
  |             <!--         Configure the TransactionManager -->
  |             <attribute name="TransactionManagerLookupClass">
  |                     
org.jboss.cache.transaction.DummyTransactionManagerLookup</attribute>
  |             
  |             <!--             Isolation level : SERIALIZABLE
  |             REPEATABLE_READ (default)
  |             READ_COMMITTED
  |             READ_UNCOMMITTED
  |             NONE
  |             -->
  |             <attribute name="IsolationLevel">REPEATABLE_READ</attribute>
  |             
  |             <!-- Valid modes are LOCAL, REPL_ASYNC and REPL_SYNC -->
  |             <attribute name="CacheMode">LOCAL</attribute>
  |             
  |             <!-- Just used for async repl: use a replication queue -->
  |             <attribute name="UseReplQueue">false</attribute>
  |             
  |             <!-- Replication interval for replication queue (in ms) -->
  |             <attribute name="ReplQueueInterval">0</attribute>
  |             
  |             <!-- Max number of elements which trigger replication -->
  |             <attribute name="ReplQueueMaxElements">0</attribute>
  |             
  |             <!--  Name of cluster. Needs to be the same for all clusters, 
in order
  |             to find each other
  |             -->
  |             <attribute name="ClusterName">Analyzer</attribute>
  |                             
  |             <!--         Whether or not to fetch state on joining a cluster 
-->
  |             <attribute name="FetchStateOnStartup">true</attribute>
  |             
  |             <!--             The max amount of time (in milliseconds) we 
wait until the
  |             initial state (ie. the contents of the cache) are retrieved from
  |             existing members in a clustered environment
  |             
  |             -->
  |             <attribute name="InitialStateRetrievalTimeout">5000</attribute>
  |             
  |             <!--             Number of milliseconds to wait until all 
responses for a
  |             synchronous call have been received.
  |             -->
  |             <attribute name="SyncReplTimeout">15000</attribute>
  |             
  |             <!--  Max number of milliseconds to wait for a lock acquisition 
-->
  |             <attribute name="LockAcquisitionTimeout">10000</attribute>
  |             
  |             <!--  Name of the eviction policy class. -->
  |             <attribute name="EvictionPolicyClass"/>
  |             
  |             <attribute name="EvictionPolicyConfig">
  |       <config>
  |          <attribute name="wakeUpIntervalSeconds">1</attribute>
  | 
  |          <!-- This defaults to 200000 if not specified -->
  |          <attribute name="eventQueueSize">200000</attribute>
  | 
  |          <!-- Name of the DEFAULT eviction policy class. -->
  |          <attribute 
name="policyClass">org.jboss.cache.eviction.LFUPolicy</attribute>
  |         <attribute name="timeToLiveSeconds">60</attribute>
  | 
  |          <!-- Cache wide default -->
  |          <region name="/_default_">
  |             <attribute name="maxNodes">10</attribute>
  |          </region>
  |       </config>
  |    </attribute>
  |             
  |             <!-- New 1.3.x cache loader config block -->
  |             <attribute name="CacheLoaderConfig">
  |                     <config>
  |                             
  |                             <!-- if passivation is true, only the first 
cache loader is used; the rest are ignored -->
  |                             <passivation>true</passivation>
  |                             <preload>/</preload>
  |                             <shared>false</shared>
  |                             
  |                             <!-- we can now have multiple cache loaders, 
which get chained -->
  |                             <cacheloader>
  |                                     
<class>org.jboss.cache.loader.jdbm.JdbmCacheLoader</class>
  |                                     <!-- same as the old CacheLoaderConfig 
attribute
  |                                     location=/tmp this can be part of the 
properties.
  |                                     location=/tmp/JBossCacheFileCacheLoader
  |                                     -->
  |                                     
<properties>location=/Users/marceltrapman/Desktop/cache</properties>
  |                                     <!-- whether the cache loader writes 
are asynchronous -->
  |                                     <async>false</async>
  |                                     <!-- only one cache loader in the chain 
may set fetchPersistentState to true.
  |                                     
  |                                     An exception is thrown if more than one 
cache loader sets this to true. -->
  |                                     
<fetchPersistentState>true</fetchPersistentState>
  |                                     
  |                                     <!-- determines whether this cache 
loader ignores writes - defaults to false. -->
  |                                     
<ignoreModifications>false</ignoreModifications>
  |                             </cacheloader>
  |                             
  |                     </config>
  |             </attribute>
  |             
  |     </mbean>
  |     
  | </server>

--- cluster pojo
<?xml version="1.0" encoding="UTF-8"?>
  | 
  |    <!--
  |        This is the PojoCache configuration file that specifies:
  |          1. Interceptor stack for API
  |          2. Annotation binding for POJO (via "prepare" element)
  | 
  |        Basically, this is a variant of jboss-aop.xml. Note that
  |        except for the customization of interceptor stack, you should
  |        not need to modify this file.
  | 
  |        To run PojoCache, you will need to define a system property:
  |        jboss.aop.path that contains the path to this file such that JBoss 
Aop
  |        can locate it.
  |    -->
  |     <aop>
  |             
  |             <!--
  |             This defines the PojoCache 2.0 interceptor stack. Unless 
necessary, don't modify the stack here!
  |             -->
  |             
  |             <!-- Check id range validity -->
  |             <interceptor name="CheckId"
  |                     
class="org.jboss.cache.pojo.interceptors.CheckIdInterceptor"
  |                     scope="PER_INSTANCE"/>
  |             
  |             <!-- Track Tx undo operation -->
  |             <interceptor name="Undo"
  |                     
class="org.jboss.cache.pojo.interceptors.PojoTxUndoInterceptor"
  |                     scope="PER_INSTANCE"/>
  |             
  |             <!-- Begining of interceptor chain -->
  |             <interceptor name="Start"
  |                     
class="org.jboss.cache.pojo.interceptors.PojoBeginInterceptor"
  |                     scope="PER_INSTANCE"/>
  |             
  |             <!-- Check if we need a local tx for batch processing -->
  |             <interceptor name="Tx"
  |                     
class="org.jboss.cache.pojo.interceptors.PojoTxInterceptor"
  |                     scope="PER_INSTANCE"/>
  |             
  |             <!--
  |             Mockup failed tx for testing. You will need to set 
PojoFailedTxMockupInterceptor.setRollback(true)
  |             to activate it.
  |             -->
  |             <interceptor name="MockupTx"
  |                     
class="org.jboss.cache.pojo.interceptors.PojoFailedTxMockupInterceptor"
  |                     scope="PER_INSTANCE"/>
  |             
  |             <!-- Perform parent level node locking -->
  |             <interceptor name="TxLock"
  |                     
class="org.jboss.cache.pojo.interceptors.PojoTxLockInterceptor"
  |                     scope="PER_INSTANCE"/>
  |             
  |             <!-- Interceptor to perform Pojo level rollback -->
  |             <interceptor name="TxUndo"
  |                     
class="org.jboss.cache.pojo.interceptors.PojoTxUndoSynchronizationInterceptor"
  |                     scope="PER_INSTANCE"/>
  |             
  |             <!-- Interceptor to used to check recursive field interception. 
-->
  |             <interceptor name="Reentrant"
  |                     
class="org.jboss.cache.pojo.interceptors.MethodReentrancyStopperInterceptor"
  |                     scope="PER_INSTANCE"/>
  |             
  |             <!-- Whether to allow non-serializable pojo. Default is false. 
-->
  |             <interceptor name="MarshallNonSerializable"
  |                     
class="org.jboss.cache.pojo.interceptors.CheckNonSerializableInterceptor"
  |                     scope="PER_INSTANCE">
  |                     <attribute 
name="marshallNonSerializable">true</attribute>
  |             </interceptor>
  |             
  |             <!-- This defines the stack macro -->
  |             <stack name="Attach">
  |                     <interceptor-ref name="Start"/>
  |                     <interceptor-ref name="CheckId"/>
  |                     <interceptor-ref name="MarshallNonSerializable"/>
  |                     <interceptor-ref name="Tx"/>
  |                     
  |                     
  |                     <!-- NOTE: You can comment this out during production 
although leaving it here is OK. -->
  |                     <interceptor-ref name="MockupTx"/>
  |                     <interceptor-ref name="TxLock"/>
  |                     <interceptor-ref name="TxUndo"/>
  |             </stack>
  |             
  |             <stack name="Detach">
  |                     <interceptor-ref name="Start"/>
  |                     <interceptor-ref name="CheckId"/>
  |                     <interceptor-ref name="Tx"/>
  |                     
  |                     
  |                     <!-- NOTE: You can comment this out during production 
although leaving it here is OK. -->
  |                     <interceptor-ref name="MockupTx"/>
  |                     <interceptor-ref name="TxLock"/>
  |                     <interceptor-ref name="TxUndo"/>
  |             </stack>
  |             
  |             <stack name="Find">
  |                     <interceptor-ref name="Start"/>
  |                     <interceptor-ref name="CheckId"/>
  |             </stack>
  |             
  |             <!--
  |             The following section should be READ-ONLY!! It defines the 
annotation binding to the stack.
  |             -->
  |             
  |             
  |             <!-- This binds the jointpoint to specific in-memory 
operations. Currently in PojoUtil. -->
  |             <bind
  |                     pointcut="execution(*
  |          @org.jboss.cache.pojo.annotation.Reentrant->toString())">
  |                     <interceptor-ref name="Reentrant"/>
  |             </bind>
  |             
  |             <bind
  |                     pointcut="execution(*
  |          
org.jboss.cache.pojo.PojoUtil->@org.jboss.cache.pojo.annotation.TxUndo(..))">
  |                     <interceptor-ref name="Undo"/>
  |             </bind>
  |             
  |             <bind
  |                     pointcut="execution(* 
org.jboss.cache.pojo.impl.PojoCacheImpl->@org.jboss.cache.pojo.annotation.Attach(..))">
  |                     <stack-ref name="Attach"/>
  |             </bind>
  |             
  |             <bind
  |                     pointcut="execution(* 
org.jboss.cache.pojo.impl.PojoCacheImpl->@org.jboss.cache.pojo.annotation.Detach(..))">
  |                     <stack-ref name="Detach"/>
  |             </bind>
  |             
  |             <bind
  |                     pointcut="execution(* 
org.jboss.cache.pojo.impl.PojoCacheImpl->@org.jboss.cache.pojo.annotation.Find(..))">
  |                     <stack-ref name="Find"/>
  |             </bind>
  |             
  |             <!--
  |             Following is declaration for JDK50 annotation. You use the 
specific annotation on your
  |             POJO such that it can be instrumented. Idea is user will then 
need only to annotate like:
  |             @org.jboss.cache.pojo.annotation.Replicable
  |             in his POJO. There will be no need of jboss-aop.xml from user's 
side.
  |             -->
  |             
  |             <!-- If a POJO has PojoCachable annotation, it will be 
asepctized. -->
  |             <prepare
  |                     expr="field(* [EMAIL PROTECTED]>*)"/>
  |             
  |             <!-- Observer and Observable to monitor field modification -->
  |             <bind
  |                     pointcut="
  |          set(* [EMAIL PROTECTED]>*)
  |          ">
  |                     <interceptor
  |                             
class="org.jboss.cache.pojo.observable.SubjectInterceptor"/>
  |             </bind>
  |             
  |             <introduction
  |                     class="[EMAIL PROTECTED]">
  |                     <mixin>
  |                             
<interfaces>org.jboss.cache.pojo.observable.Subject</interfaces>
  |                             
<class>org.jboss.cache.pojo.observable.SubjectImpl</class>
  |                             <construction>new
  |                                     
org.jboss.cache.pojo.observable.SubjectImpl(this)</construction>
  |                     </mixin>
  |             </introduction>
  |     </aop>


View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4053609#4053609

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4053609
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to