让你的JXTA应用更加安全.建立真正你自己的私有的组!

在JXTA应用中有对等组的概念,当你加入了对等组之后.你在这个对等组内发布的信息就只有这个组的成员才能收到,所谓的成员资格服务^_^.(差不多这个意思吧.不完全对.)
但是你不能建立你自己的应用中所私有的组的话.那么别人通过搜索 * 匹配来得到你的组通告就可以加入你建立的对等组.如果在你告诉了我你自己的应用中组的名字的话.我就可以自己写一个应用来加入你的组进行任意的破坏.^_^.
那么不就很不安全了吗?应用的维护管理也太不方便了.
虽然我之前写过哪个关于通过认证加入对等组的文章,但是哪个就是不安全.
其实可以通过建立ModuleImplAdvertisement 来为你的对等组增加帐号密码的认证

代码如下:

ExpandedBlockStart.gif ContractedBlock.gif      private  ModuleImplAdvertisement createPasswdMembershipPeerGroupModuleImplAdv(PeerGroup rootPeerGroup)  dot.gif {
InBlock.gif        ModuleImplAdvertisement allPurposePeerGroupImplAdv
=null;
ExpandedSubBlockStart.gifContractedSubBlock.gif        
try dot.gif{
InBlock.gif            allPurposePeerGroupImplAdv
=rootPeerGroup.getAllPurposePeerGroupImplAdvertisement();
ExpandedSubBlockStart.gifContractedSubBlock.gif        }
 catch (java.lang.Exception e) dot.gif{
InBlock.gif            System.exit(
1);
ExpandedSubBlockEnd.gif        }

InBlock.gif        ModuleImplAdvertisement passwdMembershipPeerGroupModuleImplAdv
=allPurposePeerGroupImplAdv;
InBlock.gif        ModuleImplAdvertisement passwdMembershipServiceModuleImplAdv
=null;
InBlock.gif        StdPeerGroupParamAdv passwdMembershipPeerGroupParamAdv
=null;
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
try dot.gif{
InBlock.gif            passwdMembershipPeerGroupParamAdv 
=
InBlock.gif                
new StdPeerGroupParamAdv(allPurposePeerGroupImplAdv.getParam());
ExpandedSubBlockStart.gifContractedSubBlock.gif        }
 catch (net.jxta.exception.PeerGroupException e) dot.gif{
InBlock.gif            System.exit(
1);
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        Hashtable allPurposePeerGroupServicesHashtable 
= passwdMembershipPeerGroupParamAdv.getServices();
InBlock.gif        Enumeration allPurposePeerGroupServicesEnumeration 
= allPurposePeerGroupServicesHashtable.keys();
InBlock.gif        
boolean membershipServiceFound=false;
ExpandedSubBlockStart.gifContractedSubBlock.gif        
while ((!membershipServiceFound) && (allPurposePeerGroupServicesEnumeration.hasMoreElements())) dot.gif{
InBlock.gif            Object allPurposePeerGroupServiceID 
= allPurposePeerGroupServicesEnumeration.nextElement();
ExpandedSubBlockStart.gifContractedSubBlock.gif            
if (allPurposePeerGroupServiceID.equals(PeerGroup.membershipClassID)) dot.gif{
InBlock.gif                ModuleImplAdvertisement allPurposePeerGroupMemershipServiceModuleImplAdv
= (ModuleImplAdvertisement) allPurposePeerGroupServicesHashtable.get(allPurposePeerGroupServiceID);
InBlock.gif                passwdMembershipServiceModuleImplAdv
=this.createPasswdMembershipServiceModuleImplAdv(allPurposePeerGroupMemershipServiceModuleImplAdv);
InBlock.gif                allPurposePeerGroupServicesHashtable.remove(allPurposePeerGroupServiceID);
InBlock.gif                allPurposePeerGroupServicesHashtable.put(PeerGroup.membershipClassID,passwdMembershipServiceModuleImplAdv);
InBlock.gif                membershipServiceFound
=true;
InBlock.gif
InBlock.gif                passwdMembershipPeerGroupModuleImplAdv.setParam((Element) passwdMembershipPeerGroupParamAdv.getDocument(
new MimeMediaType("text/xml")));
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif                
if (!passwdMembershipPeerGroupModuleImplAdv.getModuleSpecID().equals(PeerGroup.allPurposePeerGroupSpecID)) dot.gif{
InBlock.gif                    passwdMembershipPeerGroupModuleImplAdv.setModuleSpecID(IDFactory.newModuleSpecID(passwdMembershipPeerGroupModuleImplAdv.getModuleSpecID().getBaseClass()));
ExpandedSubBlockStart.gifContractedSubBlock.gif                }
 else dot.gif{
InBlock.gif                    ID passwdGrpModSpecID
= ID.nullID;
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
try dot.gif{
InBlock.gif                        passwdGrpModSpecID 
= IDFactory.fromURL(new URL("urn","","jxta:uuid-"+"DeadBeefDeafBabaFeedBabe00000001" +"04" +"06" ) );
ExpandedSubBlockStart.gifContractedSubBlock.gif                    }
 catch (java.net.MalformedURLException e) dot.gif{}
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
catch (java.net.UnknownServiceException ee) dot.gif{}
InBlock.gif                    passwdMembershipPeerGroupModuleImplAdv.setModuleSpecID((ModuleSpecID) passwdGrpModSpecID);
ExpandedSubBlockEnd.gif                }
 
InBlock.gif                membershipServiceFound
=true;
ExpandedSubBlockEnd.gif            }
 
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
return passwdMembershipPeerGroupModuleImplAdv;
ExpandedBlockEnd.gif    }

None.gif
ExpandedBlockStart.gifContractedBlock.gif    
private   ModuleImplAdvertisement createPasswdMembershipServiceModuleImplAdv( ModuleImplAdvertisement allPurposePeerGroupMemershipServiceModuleImplAdv)  dot.gif {
InBlock.gif        ModuleImplAdvertisement passwdMembershipServiceModuleImplAdv 
= (ModuleImplAdvertisement) AdvertisementFactory.newAdvertisement(ModuleImplAdvertisement.getAdvertisementType());
InBlock.gif        passwdMembershipServiceModuleImplAdv.setModuleSpecID(PasswdMembershipService.passwordMembershipSpecID);
InBlock.gif        passwdMembershipServiceModuleImplAdv.setCode(PasswdMembershipService.
class.getName());
InBlock.gif        passwdMembershipServiceModuleImplAdv.setDescription(
" Module Impl Advertisement for the PasswdMembership Service");
InBlock.gif        passwdMembershipServiceModuleImplAdv.setCompat(allPurposePeerGroupMemershipServiceModuleImplAdv.getCompat());
InBlock.gif        passwdMembershipServiceModuleImplAdv.setUri(allPurposePeerGroupMemershipServiceModuleImplAdv.getUri());
InBlock.gif        passwdMembershipServiceModuleImplAdv.setProvider(allPurposePeerGroupMemershipServiceModuleImplAdv.getProvider());
InBlock.gif        
return passwdMembershipServiceModuleImplAdv;
ExpandedBlockEnd.gif    }

好了.之后你就可以利用这个ModuleImplAdvertisement 来建立你的应用中专用的对等组了.

PS:关于如何让JXTA在不同的网络中进行通讯的问题,虽然JXTA里面已经说明了自己有这样的能力可以做到.但是到底是如何实现呢? 下次再说 ^_^

转载于:https://www.cnblogs.com/TtTiCk/archive/2006/08/30/490678.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值