2015-06-05 6 views
8

Ho un problema con JXSE. Diciamo che ho un rendezVous peer e un peer Edge, non sulla stessa rete locale.Unire PeerGroup esistente in JXTA/JXSE

L'appuntamento reti peer creare un peergroup "test", e pubblicare un annuncio in questo gruppo con il nome "test advertisement"

Diciamo che io sono sicuro che il mio EdgePeer è collegato al peer Rendezvous. Posso trovare il gruppo esistente "test" con netpeerGroup.getRemoteAdvertisements().

Ma non so come unire questo gruppo esistente. Ho provato netpeergroup.newGroup (testAdv), con testAdv = il peerGroupAdvertisement fondato.

Non riesco a trovare la pubblicità "annuncio di prova" nel "test" PeerGroup. Ma se faccio tutto questo a livello locale, funziona. Forse non capisco la differenza su come jxta funziona localmente e su internet.

qui il codice per la creazione o unirsi a un gruppo:

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(); 
     } 
    } 

risposta

2

finalmente trovato il problema. Dovevi avviare il servizio RendezVous su ciascun gruppo e non solo su netPeerGroup.

Ecco perché il mio software funziona localmente ma non su Internet.