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?