📄 groupdemo.java
字号:
import java.io.StringWriter;
import net.jxta.credential.AuthenticationCredential;
import net.jxta.credential.Credential;
import net.jxta.discovery.DiscoveryService;
import net.jxta.document.MimeMediaType;
import net.jxta.document.StructuredDocument;
import net.jxta.document.StructuredTextDocument;
import net.jxta.exception.PeerGroupException;
import net.jxta.membership.Authenticator;
import net.jxta.membership.MembershipService;
import net.jxta.peergroup.NetPeerGroupFactory;
import net.jxta.peergroup.PeerGroup;
import net.jxta.peergroup.PeerGroupID;
import net.jxta.protocol.ModuleImplAdvertisement;
import net.jxta.protocol.PeerGroupAdvertisement;
public class GroupDemo {
static PeerGroup myGroup = null;
private DiscoveryService discoSvc;
public static void main(String[] args){
System.out.println("Starting GroupDemo...");
GroupDemo myapp = new GroupDemo();
myapp.startJxta();
PeerGroup newGroup = myapp.createGroup();
if(newGroup!=null){
myapp.joinGroup(newGroup);
}
System.out.println("good bye...");
System.exit(0);
}
private void startJxta() {
try{
//初始化默认点组
myGroup = new NetPeerGroupFactory().getInterface();
} catch( PeerGroupException e){
//如果不能初始化,打印错误信息并退出
System.out.println("fatal error: group creation failure");
e.printStackTrace();
System.exit(1);
}
//获取默认点组的发现服务
discoSvc = myGroup.getDiscoveryService();
}
private PeerGroup createGroup() {
PeerGroup pg;
PeerGroupAdvertisement adv;
System.out.println("Creating a new group advertisement");
try{
//创建一个包含有点组所有核心服务飞模块实现通告
ModuleImplAdvertisement implAdv =
myGroup.getAllPurposePeerGroupImplAdvertisement();
//创建一个新的点组
pg = myGroup.newGroup(
null, //创建新的点组ID
implAdv, //模块实现通告
"GroupTest", //点组名称
"testing group adv"); //通告描述
//打印点组的名称和ID
adv = pg.getPeerGroupAdvertisement();
PeerGroupID GID = adv.getPeerGroupID();
System.out.println(" Group= "+adv.getName()+"\n Group ID= " +
GID.toString());
} catch (Exception e){
System.out.println("Group creation failed whth " + e.toString());
return null;
}
try{
//发布点组通告
discoSvc.remotePublish(adv);
System.out.println("Group published successfully.\n");
} catch(Exception e){
System.out.println("Error publishing group advertisement");
e.printStackTrace();
return null;
}
return pg;
}
private void joinGroup(PeerGroup grp) {
System.out.println("Joining peer group...");
StructuredDocument creds = null;
try{
//生成点组的信任书
AuthenticationCredential authCred = new AuthenticationCredential(grp,null,creds);
//获取点组成员的关系服务
MembershipService membership = grp.getMembershipService();
//申请加入
Authenticator auth = membership.apply(authCred);
//查看申请是否通过
if(auth.isReadyForJoin()){
Credential myCred = membership.join(auth);
System.out.println("Successfully joined group "+grp.getPeerGroupName());
//打印信任书
System.out.println("\nCredential: ");
StructuredTextDocument doc =
(StructuredTextDocument)myCred.getDocument(new MimeMediaType("text/plain"));
StringWriter out = new StringWriter();
doc.sendToWriter(out);
System.out.println(out.toString());
out.close();
} else
System.out.println("Failure: unable to join group");
} catch(Exception e){
System.out.println("Failure in authentication");
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -