Присоединиться к существующей PeerGroup в JXTA/JXSE
У меня проблема с использованием JXSE. Допустим, у меня есть одноранговый одноранговый узел и одноранговый одноранговый узел, а не в одной локальной сети.
Одноранговый узел rendezVous создает peerGroup "test" и публикует объявление в этой группе с именем "test ad"
Допустим, я уверен, что мой EdgePeer подключен к узлу рандеву. Я могу найти существующую группу "test" с помощью netpeerGroup.getRemoteAdvertisements().
Но я не знаю, как присоединиться к этой существующей группе. Я попытался netpeergroup.newGroup(testAdv), с testAdv = основанная реклама peerGroup.
Я не могу найти объявление "тестовая реклама" в "тестовой" PeerGroup. Но если я делаю все это локально, это работает. Может быть, я не понимаю разницу о том, как JXTA работает локально и через Интернет.
вот код для создания или присоединения к группе:
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();
}
}
1 ответ
Наконец -то нашел проблему. Вы должны были запустить сервис RendezVous для каждой группы, а не только для netPeerGroup.
Вот почему мое программное обеспечение работает локально, но не в Интернете.