PojoCache replcation not working
guava Oct 25, 2006 4:10 AMHi,
I'm on JBossCache 1.4.0.SP1. I'm just testing pojo cache replication between two machines. I wrote a simple test case and a pojo class. I started the test on one machine and put the object into the cache. I then started the second machine and the initial state did get replicated over.
However, when I modified the pojo on the first machine I never saw the modification got replicated. Below is my code. Maybe I'm making some simple mistake? Thanks for any help.
Test case:
========================================
public class Driver
{
static Logger logger = Logger.getLogger(Driver.class);
public static void main(String[] args)
{
BasicConfigurator.configure();
logger.getRoot().setLevel(Level.INFO);
try {
PojoCache cache = new PojoCache();
PropertyConfigurator configurator = new PropertyConfigurator();
configurator.configure(cache, new FileInputStream("jboss-cache.xml"));
cache.addTreeCacheListener(new Driver());
cache.startService();
//this is the code executed on the first machine
Router r0 = new Router(0, "12:34:56:78:FF:00");
cache.putObject("/router", r0);
//this is the code on the second machine. I simply get that pojo from the cahce
//Router r0 = (Router)cache.getObject("/router");
// start a thread to display the router every 3 seconds
// never saw the change got replicated to the second machine!
DisplayThread display = new DisplayThread();
display.setRouter(r0);
new Thread(display).start();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//start a loop to insert new address into the POJO
while ( true ) {
System.out.print("Enter ip...");
String line = reader.readLine();
r0.addAddress(line);
}
} catch ( Throwable tx ) {
tx.printStackTrace();
}
}
}
=========================================
@PojoCacheable
public class Router
{
private List addresses;
private int id;
private String mac;
public Router()
{
}
public Router(int id, String mac)
{
this.id = id;
this.mac = mac;
addresses = new ArrayList();
}
public List getAddresses()
{
return addresses;
}
public int getId()
{
return id;
}
public String getMac()
{
return mac;
}
public void addAddress(String address)
{
addresses.add(address);
}
public String toString()
{
StringBuffer sb = new StringBuffer();
sb.append("router ").append(id).append(" mac").append(mac).append("addresses:").append("\n");
for ( String s: addresses ) {
sb.append(s).append(" ");
}
sb.append("\n");
return sb.toString();
}
}