2 Replies Latest reply on Apr 24, 2008 2:19 AM by w j

    attach()detach() can transaction,but find() can not?

    w j Newbie

      I'm sorry ask the same here,- -, no answer in the pojo-edition:)
      hi all,
      when i use as the below ,i can rollback the cache:

       clientDao.insertClient(client);
       Client clientCache = clientDao
       .getClientByName(client.getName());
       //cacheManager.insertClientToCache use pojocache.attach(id,client)
       cacheManager.insertClientToCache(clientCache);
       throw new RuntimeException();
      

      or
       clientDao.deleteClientByTid(tid);
       //cacheManager.deleteClientByTid use pojocache.detach(id)
       cacheManager.deleteClientByTid(tid);
       throw new RuntimeException();
      


      they work fine, but when i use pojocache.find(...) to get a pojo,then i modified the name field, it can't rollback,
       clientDao.updateClient(client);
       Client cInCache = cacheManager
       .getClientFromCacheByTid(client.getTid());
       cInCache.setName(client.getName());
       throw new RuntimeException();
      

      when the up is done,clientDao.updateClient rollbacked,but the client in cache ,it's Name field not rollback,

      i've placed jboss-aop.jar to my web/WEB-INF/lib,and copyed one pojocache-aop.xml(from jbosscache-pojo.jar/METE-INF/) to web/WEB-INF/classes,

      i've read the userguide doc,
      from the Chapter6.Instrumentation , i don't know how i do the below in a web application server, e.g.; tomcat

      
      The jboss.aop.path system property set to the location of pojocache-aop.xml
      
      A javaagent argument which includes jboss-aop-jdk50.jar
      
      These requirements lead to the following example ant task:
      
      
      <java classname="Foo" fork="yes">
       <jvmarg value="-javaagent:lib/jboss-aop.jar"/>
       <jvmarg value="-Djboss.aop.path=etc/META-INF/pojocache-aop.xml"/>
       <classpath refid="test.classpath"/>
      </java>
      
      There is also a pojo-run command line script in the POJO Cache distribution that passes the proper a
      rguments to the JVM for you.
      
      
      $ pojo-run -classpath myclasses org.foo.Bar
      
      Once the JVM is executed in this manner, any class with the @Replicable annotation will be instrumen
      ted when it is loaded.
      

      then in 5.3 AOP Configuration
      POJO Cache supplies a pojocache-aop.xml that is required to be set via a system property: jboss.aop.
      path during compile- or load-time, or
      placed in the user's classpath
      . The file now consists of the interceptor stack specification, as well as annotations for POJO inst
      rumentation. It is listed fully in the Appendix section. Note that the file should not normally need
       to be modified. Only an advanced use-case would require changes.
      

      so, in web server ,if i placed jbosscache-aop.jar(and other requied jar) to WEB-INF/lib and pojocache-aop.xml to WEB-INF/classes, then pojocache can work fine?
      i've done this,but ,use find() to get a object from cache,i can't rollback the field,
      Have i forgot something important?

      how can i now to do?Any advice would great appreciate