Java 在JXTA/JXSE中加入现有的PeerGroup

Java 在JXTA/JXSE中加入现有的PeerGroup,java,p2p,jxta,Java,P2p,Jxta,我在使用JXSE时遇到问题。 假设我有一个集合对等点和一个边缘对等点,而不是在同一个本地网络上 会合对等方创建一个对等组“test”,并在此组中发布一个名为“test advision”的广告 比如说,我确信我的EdgePeer连接到了会合对等点。我可以通过netpeerGroup.getRemoteAdvertisions()找到现有的组“test” 但我不知道如何加入这个现有的团体。我尝试了netpeergroup.newGroup(testAdv),testAdv=创建的peergroup

我在使用JXSE时遇到问题。 假设我有一个集合对等点和一个边缘对等点,而不是在同一个本地网络上

会合对等方创建一个对等组“test”,并在此组中发布一个名为“test advision”的广告

比如说,我确信我的EdgePeer连接到了会合对等点。我可以通过netpeerGroup.getRemoteAdvertisions()找到现有的组“test”

但我不知道如何加入这个现有的团体。我尝试了netpeergroup.newGroup(testAdv),testAdv=创建的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();
        }
    }
public void addGroup(最终字符串名){
ModuleImpladvertisiment mAdv=null;
peergroupgroup=null;
温度=零;
defaultGroup.getDiscoveryService().GetRemoteAdvertisions(null,DiscoveryService.GROUP,
“名称”,名称,1,新发现者Listener(){
@凌驾
公共无效发现事件(发现事件){
枚举advs=event.getResponse().getadvisions();
而(advs.hasMoreElements()){
System.out.println(“groupe found”);
peergroupadvision adv=(peergroupadvision)advs.nextElement();
System.out.println(“组名:+adv.getName());
试一试{
temp=defaultGroup.newGroup(adv);
System.out.println(“加入集团”);
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
}
});
试一试{
睡眠(10000);
System.out.println(“等待组…”);
}捕捉(中断异常e1){
//TODO自动生成的捕捉块
e1.printStackTrace();
}
if(temp==null){
试一试{
System.out.println(“创建新组…”);
mAdv=defaultGroup.GetAllPurposePeerGroupImplAdvertision();/*获取已实现模块的播发*/
temp=defaultGroup.newGroup(generatePeerGroupID(name)、mAdv、name、name);/*创建和发布组*/
getDefaultGroup().getDiscoveryService().remotePublish(临时GetPeerGroupAdvertision());
}捕获(例外e){
e、 printStackTrace();
}
}

终于找到了问题。您必须在每个组上启动集合服务,而不仅仅是netPeerGroup

这就是为什么我的软件可以在本地运行,但不能在互联网上运行