2015-06-05 15 views
8

Mam problem z używaniem JXSE. Powiedzmy, że mam rendezVous równorzędnego i równorzędnego Edge'a, a nie w tej samej sieci lokalnej.Dołącz do istniejącej grupy peerGroup w JXTA/JXSE

Rendezvous zajrzeć stworzyć peerGroup „test” i opublikować ogłoszenie w tej grupie o nazwie „test reklamie”

Powiedzmy, że jestem pewien, niż moja EdgePeer jest podłączony do uczestnika spotkania. Mogę znaleźć istniejącą grupę "test" za pomocą netpeerGroup.getRemoteAdvertisements().

Ale nie wiem, jak dołączyć do istniejącej grupy. Próbowałem netpeergroup.newGroup (testAdv), z testAdv = założonym peerGroupAdvertisement.

Nie mogę znaleźć reklamy "reklama testowa" w grupie testowej "PeerGroup". Ale jeśli robię to wszystko lokalnie, to działa. Może nie rozumiem różnicy, w jaki sposób jxta działa lokalnie i przez Internet.

tutaj kod do tworzenia lub dołączenie do grupy:

public void addGroup(final String name) { 
    ModuleImplAdvertisement mAdv = null; 
    PeerGroup group = null; 
    temp = null; 

    defaultGroup.getDiscoveryService().getRemoteAdvertisements(null, DiscoveryService.GROUP, 
      "Name", name, 1, new DiscoveryListener() { 

       @Override 
       public void discoveryEvent(DiscoveryEvent event) { 
        Enumeration<Advertisement> advs = event.getResponse().getAdvertisements(); 
        while(advs.hasMoreElements()) { 
         System.out.println("groupe found"); 
         PeerGroupAdvertisement adv = (PeerGroupAdvertisement) advs.nextElement(); 
         System.out.println("group name : " + adv.getName()); 
         try { 
          temp = defaultGroup.newGroup(adv); 
          System.out.println("group joined"); 
         } catch (Exception e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
        } 

       } 
      }); 

    try { 
     Thread.sleep(10000); 
     System.out.println("waiting for group ..."); 
    } catch (InterruptedException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 

    if(temp == null) { 
     try { 
      System.out.println("creating new group .."); 
      mAdv = defaultGroup.getAllPurposePeerGroupImplAdvertisement(); /* Getting the advertisement of implemented modules */ 
      temp = defaultGroup.newGroup(generatePeerGroupID(name), mAdv, name, name); /* creating & publishing the group */ 
      getDefaultGroup().getDiscoveryService().remotePublish(temp.getPeerGroupAdvertisement()); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

Odpowiedz

2

wreszcie znalazłem problem. Trzeba było uruchomić usługę RendezVous dla każdej grupy, a nie tylko dla netPeerGroup.

Dlatego moje oprogramowanie działa lokalnie, ale nie w Internecie.