Hi 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
| * @(a)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
| * @(a)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?
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3962407#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...