Yes, I tried it outside of the AS and it work fine.
Test class

  | public class StudentMaintTest {
  | 
  |     private Student joe_;
  | 
  |     private Student mary_;
  | 
  |     private Course foo_;
  | 
  |     private Course bar_;
  | 
  |     private Course c1;
  | 
  |     private Course c2;
  | 
  |     private Course c3;
  | 
  |     private List<Course> couses = new ArrayList<Course>();
  | 
  |     private List<String> ss = new ArrayList<String>();
  | 
  |     // cache1 and cache2 are in the same clustering group.
  |     private PojoCache cache1_;
  | 
  |     private PojoCache cache2_;
  | 
  |     public StudentMaintTest() {
  | 
  |     }
  |     
  |     public void setUp() throws Exception {
  |           cache1_ = createCache("Messi2");
  |           cache2_ = createCache("Messi2");
  |           init();
  |        }
  | 
  |        public void tearDown() throws Exception {
  |           cache1_.remove("/");
  |           cache1_.stop();
  |           cache2_.stop();
  |        }
  | 
  |     private PojoCache createCache(String name) {
  |             try {
  |                     PojoCache tree = new PojoCache();
  |                     PropertyConfigurator config = new 
PropertyConfigurator(); 
  |                     config.configure(tree, "replSync-in-service.xml");
  |                     tree.setClusterName(name); // We can set a different 
cluster group.
  |                     tree.start(); // kick start the cache
  |                     return tree;
  |             } catch (Exception ex) {
  |                     ex.printStackTrace();
  |                     return null;
  |             }
  | 
  |     }
  | 
  |     protected void init() {
  | 
  |             mary_ = new Student();
  |             mary_.setName("Mary Smith");
  | 
  |             Address address = new Address();
  |             address.setStreet("456 Oak Drive");
  |             address.setCity("Pleasantville, CA");
  |             address.setZip(94555);
  | 
  |             mary_.setAddress(address);
  | 
  |             joe_ = new Student();
  |             joe_.setName("Joe Smith");
  |             joe_.setSchool("Engineering");
  | 
  |             // Mary and Joe have the same address
  |             joe_.setAddress(address);
  | 
  |             foo_ = new Course();
  |             foo_.setTitle("Intro to Foo");
  |             foo_.setInstructor("Jones");
  | 
  |             joe_.addCourse(foo_);
  |             mary_.addCourse(foo_);
  | 
  |             bar_ = new Course();
  |             bar_.setTitle("Advanced Bar");
  |             bar_.setInstructor("Woods");
  |             bar_.setRoom("104 Encina");
  | 
  |             c1 = new Course();
  |             c1.setTitle("tttt 1");
  |             c1.setInstructor("WWW 1");
  |             c1.setRoom("rrrr 1");
  | 
  |             c2 = new Course();
  |             c2.setTitle("tttt 2");
  |             c2.setInstructor("WWW 2");
  |             c2.setRoom("rrrr 2");
  | 
  |             c3 = new Course();
  |             c3.setTitle("tttt 3");
  |             c3.setInstructor("WWW 3");
  |             c3.setRoom("rrrr 3");
  | 
  |             couses.add(c1);
  |             couses.add(c2);
  |             couses.add(c3);
  | 
  |             ss.add("11111111");
  |             ss.add("222222222");
  |             ss.add("333333333");
  |     }
  | 
  |     public void testPropagation() {
  |             try {
  |                     // Here we ask the pojo cache to manage mary_ and joe_
  |                     cache1_.putObject("/students/54321", mary_);
  |                     cache1_.putObject("/students/65432", joe_);
  |                     cache1_.putObject("/courses/101", foo_);
  |                     cache1_.putObject("/courses/401", bar_);
  |                     cache1_.putObject("/courses/c1", c1);
  |                     cache1_.putObject("/courses/c2", c2);
  |                     cache1_.putObject("/courses/c3", c3);
  | 
  |                     cache1_.putObject("/string/ss", ss);
  |                     cache1_.putObject("/messi/0524", couses);
  | 
  |                     ss.add("44444444");
  |                     printStrings(ss);
  | 
  |                     couses.add(bar_);
  |                     printMessi(couses);
  |                     List<Course> cc = (List<Course>) 
cache2_.getObject("/messi/0524");
  |                     // printMessi(cc);
  | 
  |                     List<String> s2 = (List<String>) 
cache2_.getObject("/string/ss");
  |                     printStrings(s2);
  | 
  |                     // Output
  |                     printStatus("Initial state for Mary", mary_);
  |                     printStatus("Initial state for Joe", joe_);
  | 
  |                     // Retrieve the pojos from the Server #2
  |                     Student mary2 = (Student) 
cache2_.getObject("/students/54321");
  |                     Student joe2 = (Student) 
cache2_.getObject("/students/65432");
  |                     Course foo2 = (Course) 
cache2_.getObject("/courses/101");
  | 
  |                     
System.out.println("---------------------------------------------");
  |                     System.out.println("Modified on Server #1");
  |                     // Change state in one of the items. This will be 
fine-grained
  |                     // replicated
  |                     foo_.setRoom("101 Alvarez"); // Modified state on cache 
#2
  |                     printStatus(
  |                                     "Course Update: id: 401  room: 
null->101 Alvarez (retrieved from cache #2)",
  |                                     foo2);
  | 
  |                     
System.out.println("---------------------------------------------");
  |                     System.out.println("Modified on Server #2");
  |                     // Change state in one of the items. This will be 
fine-grained
  |                     // replicated
  |                     joe2.addCourse(bar_); // Modified state on cache #2
  |                     printStatus(
  |                                     "Student Update: id: 65432  addCourse: 
Advanced Bar (retrieved from cache #1)",
  |                                     joe_);
  | 
  |                     
System.out.println("---------------------------------------------");
  |                     System.out.println("Modified on Server #1");
  |                     // Change state in one of the items. This will be 
fine-grained
  |                     // replicated.
  |                     mary_.setSchool("Engineering");
  |                     printStatus(
  |                                     "Student Update: id: 65432  school: 
null->Engineering (retrieved from cache #2)",
  |                                     mary2);
  | 
  |                     if (!mary_.getSchool().equals(mary2.getSchool())) {
  |                             throw new RuntimeException(
  |                                             "School field is not replicated 
correctly. on cache1: "
  |                                                             + 
mary_.getSchool() + " on cache2: "
  |                                                             + 
mary2.getSchool());
  |                     }
  |             } catch (Exception ex) {
  |                     ex.printStackTrace();
  |             }
  | 
  |     }
  | 
  |     private void printStatus(String msg, Object obj) {
  |             
System.out.println("---------------------------------------------");
  |             System.out.println(msg);
  |             
System.out.println("---------------------------------------------");
  |             System.out.println(obj.toString());
  |     }
  | 
  |     private void printMessi(List<Course> cs) {
  |             if (cs != null && !cs.isEmpty()) {
  |                     System.out.println("????????????size:" + cs.size());
  |                     for (Course c : cs) {
  |                             System.out.println(c);
  |                     }
  |             }
  |     }
  | 
  |     private void printStrings(List<String> cs) {
  |             if (cs != null && !cs.isEmpty()) {
  |                     System.out.println("????????????size:" + cs.size());
  |                     for (String c : cs) {
  |                             System.out.println(c);
  |                     }
  |             }
  |     }
  |     
  |     
  |     public static void main(String[] args) throws Exception {
  |           StudentMaintTest smTest = new StudentMaintTest();
  |           smTest.setUp();
  |           smTest.testPropagation();
  |           smTest.tearDown();
  |        }
  | 
  | }
  | 
 
build.xml

  | <path id="build.classpath">
  |             <pathelement location="${basedir}"/>
  |             <fileset dir="${jboss.home}/lib">
  |                     <include name="**/*.jar"/>
  |             </fileset>
  |             <fileset dir="${jboss.home}/server/${jboss.server.config}/lib">
  |                     <include name="**/*.jar"/>
  |             </fileset>
  |             <fileset 
dir="${jboss.home}/server/${jboss.server.config}/deploy/ejb3.deployer">
  |                     <include name="*.jar"/>
  |             </fileset>
  |             <fileset 
dir="${jboss.home}/server/${jboss.server.config}/deploy/jboss-aop-jdk50.deployer">
  |                     <include name="*.jar"/>
  |             </fileset>
  |             <fileset dir="${lib.dir}">
  |                     <include name="**/*.jar"/>
  |             </fileset>
  |             <!--fileset dir="${cache.lib.50.dir}">
  |                     <include name="**/*.jar"/>
  |             </fileset-->
  |             <pathelement location="${classes.dao.dir}"/>
  |             <pathelement location="${classes.web.dir}"/>
  |             <pathelement location="${classes.test.dir}"/>
  |             <pathelement location="${conf.hivemind.dir}"/>
  |     </path>
  | 
  | <target name="run.pojo" depends="ejb3" description="run standalone server 
replicator.">
  |       <java classname="cn.net.ce.web.cache.pojo.StudentMaintTest" 
fork="yes">
  |          <classpath refid="build.classpath"/>
  |          <classpath path="${build.dir}"/>
  |          <classpath path="resources/sar/META-INF"/>
  |       </java>
  |    </target>
  | 

Thanks for your help, I will prepare the smallest application for you. Pls wait 
a moment. :-)

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

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

Reply via email to