Running POJOCache error
confuz Aug 2, 2006 6:24 AMHi All,
I ran pojo cache, but hit error, following is the code and errors
package org.jboss.cache.data;
import java.util.List;
/**
* @author Ben Wang
* @@org.jboss.cache.aop.AopMarker
*/
public class Person {
protected String name;
protected Address address;
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
public void setAddress(Address address)
{
this.address = address;
}
public Address getAddress()
{
return this.address;
}
public String toString()
{
StringBuffer buf = new StringBuffer();
buf.append("{Name = " +name);
if (address != null)
buf.append(", Address = " + address.getSimpleAddress());
buf.append("}\n");
return buf.toString();
}
}
package org.jboss.cache.data;
/**
* @author Ben Wang
* @@org.jboss.cache.aop.AopMarker
*/
public class Address {
protected String city;
protected int zip;
protected String street;
public void setCity(String city)
{
this.city = city;
}
public String getCity()
{
return this.city;
}
public void setZip(int zip)
{
this.zip = zip;
}
public int getZip()
{
return zip;
}
public void setStreet(String street)
{
this.street = street;
}
public String getStreet()
{
return this.street;
}
public String getSimpleAddress()
{
StringBuffer buf = new StringBuffer(street);
buf.append(" " + city);
if (zip > 0)
buf.append(" " + zip);
return buf.toString();
}
public String toString()
{
StringBuffer buf = new StringBuffer();
buf.append("{City = " +city).append(" ,zip = " +zip).append(" ,street = " +street + "}\n");
return buf.toString();
}
}
I put thoes pojos into JBossCache-1.4.0.GA\tools\src and ran the ant all to generated the aopc classes(Persion.class,Persion$*.class,Address.class,Address$*.class,))
Then I tested POJOCache base on those class file, but hit error
cache = new TreeCache();
PropertyConfigurator pc = new PropertyConfigurator();
pc.configure(cache, "tree-service.xml");
cache.createService();
cache.startService();
Person p1 = new Person();
p1.setName("P1");
Person p2 = new Person();
p2.setName("P2");
Address add = new Address();
add.setCity("SZ");
add.setStreet("NR");
add.setZip(3009884);
p1.setAddress(add);
p2.setAddress(add);
cache.put("/test/p1","p1", p1);
cache.put("/test/p2","p2", p2);
cache.put("/test/a1","a1", add);
<?xml version="1.0" encoding="UTF-8"?> <!-- ===================================================================== --> <!-- --> <!-- Sample TreeCache Service Configuration --> <!-- --> <!-- ===================================================================== --> <server> <classpath codebase="./lib" archives="jboss-cache.jar, jgroups.jar"/> <!-- ==================================================================== --> <!-- Defines TreeCache configuration --> <!-- ==================================================================== --> <mbean code="org.jboss.cache.aop.PojoCache" name="jboss.cache:service=testTreeCache"> <depends>jboss:service=Naming</depends> <depends>jboss:service=TransactionManager</depends> <!-- Configure the TransactionManager --> <attribute name="TransactionManagerLookupClass">org.jboss.cache.DummyTransactionManagerLookup</attribute> <!-- Node locking level : SERIALIZABLE REPEATABLE_READ (default) READ_COMMITTED READ_UNCOMMITTED NONE --> <attribute name="IsolationLevel">REPEATABLE_READ</attribute> <!-- Valid modes are LOCAL REPL_ASYNC REPL_SYNC --> <attribute name="CacheMode">REPL_SYNC</attribute> <!-- Name of cluster. Needs to be the same for all clusters, in order to find each other --> <attribute name="ClusterName">TreeCache-Cluster</attribute> <!-- JGroups protocol stack properties. Can also be a URL, e.g. file:/home/bela/default.xml <attribute name="ClusterProperties"></attribute> --> <attribute name="ClusterConfig"> <config> <!-- UDP: if you have a multihomed machine, set the bind_addr attribute to the appropriate NIC IP address --> <!-- UDP: On Windows machines, because of the media sense feature being broken with multicast (even after disabling media sense) set the loopback attribute to true --> <UDP mcast_addr="228.1.2.5" mcast_port="45577" ip_ttl="64" ip_mcast="true" mcast_send_buf_size="150000" mcast_recv_buf_size="80000" ucast_send_buf_size="150000" ucast_recv_buf_size="80000" loopback="false"/> <PING timeout="2000" num_initial_members="3" up_thread="false" down_thread="false"/> <MERGE2 min_interval="10000" max_interval="20000"/> <FD shun="true" up_thread="true" down_thread="true"/> <VERIFY_SUSPECT timeout="1500" up_thread="false" down_thread="false"/> <pbcast.NAKACK gc_lag="50" retransmit_timeout="600,1200,2400,4800" up_thread="false" down_thread="false"/> <pbcast.STABLE desired_avg_gossip="20000" up_thread="false" down_thread="false"/> <UNICAST timeout="600,1200,2400" window_size="100" min_threshold="10" down_thread="false"/> <FRAG frag_size="8192" down_thread="false" up_thread="false"/> <pbcast.GMS join_timeout="5000" join_retry_timeout="2000" shun="true" print_local_addr="true"/> <pbcast.STATE_TRANSFER up_thread="false" down_thread="false"/> </config> </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">20000</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. Not supported now. --> <attribute name="EvictionPolicyClass">org.jboss.cache.aop.eviction.AopLRUPolicy</attribute> <!-- Specific eviction policy configurations. This is LRU --> <attribute name="EvictionPolicyConfig"> <config> <attribute name="wakeUpIntervalSeconds">5</attribute> <!-- Cache wide default --> <region name="/_default_"> <attribute name="maxNodes">5000</attribute> <attribute name="timeToLiveSeconds">1000</attribute> </region> <region name="/aop"> <attribute name="maxNodes">5</attribute> <attribute name="timeToLiveSeconds">4</attribute> </region> <region name="/pojo"> <attribute name="maxNodes">100</attribute> <attribute name="timeToLiveSeconds">4</attribute> </region> <region name="/test"> <attribute name="maxNodes">500</attribute> <attribute name="timeToLiveSeconds">0</attribute> </region> </config> </attribute> </mbean> </server>
Exception
java.lang.RuntimeException: java.io.NotSerializableException: RpcDispatcher retu
rned a null. This is most often caused by args for _replicate(_put(null, /test/
p1, p1, {Name = P1, Address = NR SZ 3009884}
, true)) not being serializable.
at org.jboss.cache.TreeCache.invokeMethod(TreeCache.java:5523)
at org.jboss.cache.TreeCache.put(TreeCache.java:3677)
at org.jboss.cache.TreeCache.put(TreeCache.java:3615)
at org.jboss.cache.JSServlet.init(JSServlet.java:45)
at javax.servlet.GenericServlet.init(GenericServlet.java:211)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.
java:1091)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.jav
a:750)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:130)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
Am I missing something?