Ok i have got it to work through getState and setState, however I would nearly 
call it a hack version but it works. I have tried to re-use what is already in 
JBoss Cache to do the state transfer, now whether it is a good idea or not to 
reuse im not sure. How often does this area change?? Would I be looking at 
re-test for every minor version upgrade??

Anyways here it is 



  |     public void setState(String path, InputStream istream) {
  |             log.info("About to set state in real time cache for path 
="+path);
  |             CacheSPI cache = 
(CacheSPI)CacheManager.getCacheById("realTimeCache");
  |             if(cache == null){
  |                     log.error("Cant set state for real time cache because 
it has not been configured for this node!! Looking to import Path="+path);
  |                     return;
  |             }
  |             MarshalledValueInputStream in = null;
  |             try
  |             {
  |                     in = new MarshalledValueInputStream(istream);
  |                     Fqn subroot = Fqn.fromString(path);
  |                     Configuration configuration = new Configuration();
  |                     configuration.setFetchInMemoryState(true);
  |                     StateTransferManager stateTransferManager = new 
StateTransferManager(cache);
  |                     stateTransferManager.injectDependencies(cache, 
cache.getMarshaller(), cache.getRegionManager(), configuration,new 
NodeBasedLockManager());
  |                     stateTransferManager.setState(in, subroot);
  |             }
  |             catch (Exception e)
  |             {
  |                     log.error("Failed to upload state into real time cache 
for path="+path,e);
  |             }
  |             finally
  |             {
  |                     Util.close(in);
  |             }
  | }
  | 
  |     public void getState(String path, OutputStream ostream) {
  |             log.info("Server has been asked for its real time state for 
path "+path);
  | 
  |             CacheSPI cache = 
(CacheSPI)CacheManager.getCacheById("realTimeCache");
  |             if(cache == null){
  |                     log.error("Cant ask for state when realTimeCache is not 
configured for this node. Path looking for "+path);
  |                     return;
  |             }
  | 
  |             String sourceRoot = path;
  |             MarshalledValueOutputStream out = null;
  |             try
  |             {
  |                     out = new MarshalledValueOutputStream(ostream);
  | 
  |                     Configuration configuration = new Configuration();
  |                     configuration.setFetchInMemoryState(true);
  |                     StateTransferManager stateTransferManager = new 
StateTransferManager(cache);
  |                     stateTransferManager.injectDependencies(cache, 
cache.getMarshaller(), cache.getRegionManager(), configuration,new 
NodeBasedLockManager());
  |                     stateTransferManager.getState(out, 
Fqn.fromString(sourceRoot), configuration.getStateRetrievalTimeout(), true, 
true);
  |                     
//cache.getMarshaller().objectToObjectStream(stateTransferManager, 
out,Fqn.fromString(sourceRoot) );
  | 
  | 
  |             }catch (Throwable e)
  |             {
  |                     log.error("Failed to replicate state transfer for path 
"+path,e);
  |             }
  |             finally
  |             {
  |                     Util.close(out);
  |             }               
  | }
  | 
  | 

Now what im most interested in is this


  | stateTransferManager.injectDependencies(cache, cache.getMarshaller(), 
cache.getRegionManager(), configuration,new NodeBasedLockManager());
  | 
How does these parameters inputted look to you guys? In particular the 
NodeBasedLockManager, is there any way to find out or get the LockManager of a 
cache without having to do what i did above? Any implications of using the 
NodebasedLockManager that i should look out for?


Not the happiest about doing it this way but it works, thoughts on this 
approach are welcome. Will look into the region based activation and see what 
it offers.

Thanks,
LL

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

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

Reply via email to