设置结点的ID为固定ID
https://www.java.net//forum/topic/jxta/jxta-community-forum/how-initialize-pse-jxse-27
————————————————————————————————————————————————————————————————————
Does anybody know how to initialize PSE in 2.7? If I start a rdv peer without peerId or infrastructureID then an edge peer can connect to it. As soon as I set any of IDs I'm getting the following message on the edge peer
SEVERE: EndpointRouterMsg declared src address does not match the sender's address.
tempMsgERM.getSrcAddress()=jxta://uuid-59616261646162614A78746150325033246734A29C11461D9CC3BB9B20842C1E03,
tempEASuposedToBe=jxta://cbid-59616261646162614A78746150325033426F9328E59F083D855D65F748B6F87E03
It looks to me that it wants the peerId to be generated based on a
certificate that jxse automatically generated for the WorldGroup. But if
I want the peerId to be always the same it seems that I need to
generate all artifacts for PSE myself.
How to properly initialize PSE in 2.7? I mean how it supposed to be
initialized? Examples provided with jxse 2.7 were not working for me
till I commented peerId out. I think there is some way designers of jxse
2.7 intended PSE to be used.
Thank you.
********************************
Sounds like you are deleting the keystore each time you do a restart - if 2.7 discovers that the keystore has gone then it creates a new one and generates a new certificate. Don't forget to save and restore the configuration and it helps to delete the cache.
*********************************
Can you explain me how to save it?
I tried
MyNetworkConfigurator.save();
but it causes exception in
PeerGroup NetPeerGroup = MyNetworkManager.startNetwork();
May 24, 2011 8:40:57 AM net.jxta.impl.peergroup.StdPeerGroup initFirst
SEVERE: Failed to make PSE membership credential 'ready for join'
May 24, 2011 8:40:57 AM net.jxta.peergroup.WorldPeerGroupFactory newWorldPeerGroup
SEVERE: World Peer Group could not be instantiated.
net.jxta.exception.PeerGroupException: Failed to login to this group: null. Error=0
at net.jxta.impl.peergroup.StdPeerGroup.initFirst(StdPeerGroup.java:704)
at net.jxta.impl.peergroup.Platform.initFirst(Platform.java:214)
at net.jxta.impl.peergroup.GenericPeerGroup.init(GenericPeerGroup.java:907)
at net.jxta.peergroup.WorldPeerGroupFactory.newWorldPeerGroup(WorldPeerGroupFactory.java:312)
at net.jxta.peergroup.WorldPeerGroupFactory.<init>(WorldPeerGroupFactory.java:182)
at net.jxta.peergroup.NetPeerGroupFactory.<init>(NetPeerGroupFactory.java:203)
at net.jxta.platform.NetworkManager.startNetwork(NetworkManager.java:408)
at Examples.K_Service.Edge_Jill_The_Customer.main(Edge_Jill_The_Customer.java:128)
Edge Jill, The Customer net.jxta.exception.PeerGroupException: World Peer Group could not be instantiated.
Thank you
1. Delete your jxta run dir/folder
2. Create a new jxta configuration, including peer name, peerid if you need to, username, password and all of your network setup
3. Save the configuration file - this usually defaults to PlatformConfig in the jxta run dir
4. Set up the path to the keystore - there is a default
5. Start jxta.
6. Stop jxta, turn off the machine and have a cup of coffee
7. You might want to delete the cache files/dirs in the jxta run dir. Don't delete the keystore!
8. Load the configuration - you shouldn't need to set anything except
for the username and password - these are for the keystore - everything
else should be in the config file.
9. Set the keystore path if you need to ... must be the one defined above
9 Start jxta.
Read through the source of NetworkManager and NetworkConfigurtor. Believe me, it works!
I've got the same problem i.e. as soon as I set the peerID my code breaks with:
Aug 6, 2012 4:48:53 PM net.jxta.impl.endpoint.WireFormatMessageBinary$Instantiator enforceCbjxOnIncoming
SEVERE: EndpointRouterMsg declared src address does not match the
sender's address.
tempMsgERM.getSrcAddress()=jxta://cbid-59616261646162614E504720503250331884408F6046A2521650BBCBACD41AB303,
tempEASuposedToBe=jxta://cbid-59616261646162614A787461503250335BBE5BCADE2ABB3297475FFEBE0F860903
I've followed your instructions above and modified the practicaljxta2 (http://sourceforge.net/projects/practicaljxta/files/)
examples Examples.B_Exploring_Connectivity_Issues.RendezVous_Jack and
Examples.B_Exploring_Connectivity_Issues.Endge_Anna to reflect this but I
cannot get 2.7 to work without commenting out the setPeerId
(MyNetworkConfigurator.setPeerID(PID)) and removing the
configurator.save() call. Unfortunately in my application I must set the
peerID so this is not a solution for me.
Any advice / pointers appreciated as I'm not sure what to try next.
Thanks,
tah_mas
ok I think I have solved it.. I used to call NetworkConfigurator.setPeerId but changing this to NetworkManager.setPeerId fixes the problem. I'm new to jxta so not quite sure what the difference is...
// ************************ PSEMembershipService *******************************
// TODO: myPrivateKeyPassword与myKeyStorePassword必须相同
public static final String myPrincipalName = "Principal - " + refPeerGroupName;
public static final String myPrivateKeyPassword = "PrivateKey Password - " + refPeerGroupName;
// public static final String myPrivateKeyPassword = "a123456"; public static final String myKeyStoreFileName = "MyKeyStoreFile";
public static final String myKeyStoreLocation = ".jxta";
public static final String myKeyStorePassword = "KeyStore Password - " + refPeerGroupName;
// public static final String myKeyStorePassword = "a123456";
public static final String myKeyStoreProvider = "KeyStore Provider - " + refPeerGroupName; public static final File myKeyStoreDirectory = new File(myKeyStoreLocation);
public static final File myKeyStoreFile = new File(myKeyStoreLocation + File.separator + myKeyStoreFileName); public static final X509Certificate theX509Certificate;
public static final PrivateKey thePrivateKey; static {
// Static initialization of certificates
PSEUtils.IssuerInfo forPSE = PSEUtils.genCert(refPeerGroupName, null);
theX509Certificate = forPSE.cert;
thePrivateKey = forPSE.issuerPkey;
}
其次是配置:
// Preparing data
myKeyStoreDirectory.mkdirs(); // Creating the key store
FileKeyStoreManager myFileKeyStoreManager = new FileKeyStoreManager((String)null, myKeyStoreProvider, myKeyStoreFile);
myFileKeyStoreManager.createKeyStore(myKeyStorePassword.toCharArray()); if(!myFileKeyStoreManager.isInitialized()) {
System.out.println("Keystore is NOT initialized");
} else {
System.out.println("Keystore is initialized");
} // Loading the (empty) keystore
KeyStore myKeyStore = myFileKeyStoreManager.loadKeyStore(myKeyStorePassword.toCharArray()); // Setting data
X509Certificate[] temp = {theX509Certificate};
myKeyStore.setKeyEntry(config.getPeerId(), thePrivateKey, myPrivateKeyPassword.toCharArray(), temp); // Saving the data
myFileKeyStoreManager.saveKeyStore(myKeyStore, myKeyStorePassword.toCharArray()); // Reloading the KeyStore
myKeyStore = myFileKeyStoreManager.loadKeyStore(myKeyStorePassword.toCharArray()); // Retrieving Certificate
X509Certificate myCertificate = (X509Certificate)myKeyStore.getCertificate(config.getPeerId()); if(myCertificate == null) {
System.out.println("X509 Certificate CANNOT be retrieved");
} else {
System.out.println("X509 Certificate can be retrieved: " + myCertificate.toString());
} // Retrieving private key
PrivateKey myPrivateKey = (PrivateKey)myKeyStore.getKey(config.getPeerId(), myPrivateKeyPassword.toCharArray());
if(myPrivateKey == null) {
System.out.println("Private key CANNOT be retrieved");
} else {
System.out.println("Private key can be retrieved: " + myPrivateKey.toString());
}
尤其需要注意的是:myPrivateKeyPassword与myKeyStorePassword必须相同,否则还是会抛出异常。按理来说不应该是这样的,怀疑可能是jxta的实现有问题,太乱,反正现在能跑起来了,先这样吧。
设置结点ID的时候,要调用NetworkConfigurator.setPeerId。
SEVERE: EndpointRouterMsg declared src address does not match the sender's address. tempMsgERM.getSrcAddress()=jxta://cbid-8A634329B1C84ABF9E489F006BDE4B9EC627F04A469202F565EB71A52CAFFDA303, tempEASuposedToBe=jxta://cbid-59616261646162614A78746150325033DD0327CEA6B0E911250B6820AF286AD703
两种解决方式:
1 使用v2.6版(还需要解决无法连接外网rdv的问题)
2 参考v2.6版(主要是ShadowPeerGroup.java),修改v2.7版,使用NoneMembershipService。
设置结点的ID为固定ID的更多相关文章
- 获取和设置用户id以及组id
#include<unistd.h> uid_t getuid(void); uid_t geteuid(void);//获取有效用户id gid_t getgid(void); gid_ ...
- WordPress后台的文章、分类,媒体,页面,评论,链接等所有信息中显示ID并将ID设置为第一列
WordPress后台默认是不显示文章.分类等信息ID的,查看起来非常不方便,不知道Wp团队出于什么原因默认不显示这个但可以使用Simply Show IDs插件来实现 不使用插件,其他网友的实现: ...
- 《UNIX环境高级编程》笔记--更改用户ID和组ID
在unix系统中,特权是基于用户和组ID的,当程序需要增加特权,或需要访问当前并不允许访问的资源时,我们需要更换自己 用户ID或组ID,使的新ID具有合适的特权或访问权限.与此类似,当程序需要降低其特 ...
- 进程控制之更改用户ID和组ID
在UNIX系统中,特权(例如能改变当前日期的表示法以及访问控制(例如,能否读.写一特定文件))是基于用户ID和组ID的.当程序需要增加特权,或需要访问当前并不允许访问的资源时,我们需要更换自己的用户I ...
- Linux下文件权限(一)用户ID和用户组ID
最近在读<unix环境高级编程>,看到文件权限这里比较糊涂,主要设计多个用户ID和用户组ID,包括下面两个: (1)实际用户ID和实际用户组ID:这一部分表示我们究竟是谁.这两个字段在登录 ...
- 用户id,组id和文件访问权限
实际用户ID和实际组ID:标示了我们究竟是谁,这两个字段在登录时取自口令文件中的登录项 有效用户ID和有效组ID以及附属组ID:决定了我们的文件的访问权限(通常有效用户ID等于实际用户ID,有效组ID ...
- 多进程编程之用户ID和用户组ID
实际用户ID(real user id):用于在系统中标识一个用户是谁,当用户使用用户名和密码成功登录后一个UNIX系统后就唯一确定了他的uid:(实际用户组ID类似) 有效用户ID(effect ...
- 现有某电商网站用户对商品的收藏数据,记录了用户收藏的商品id以及收藏日期,名为buyer_favorite1。 buyer_favorite1包含:买家id,商品id,收藏日期这三个字段,数据以“\t”分割
实验内容(mapReduce安装请按照林子雨教程http://dblab.xmu.edu.cn/blog/631-2/) 现有某电商网站用户对商品的收藏数据,记录了用户收藏的商品id以及收藏日期,名为 ...
- 更改用户id 和组id
转自 http://blog.csdn.net/todd911/article/details/16370577 在unix系统中,特权是基于用户和组ID的,当程序需要增加特权,或需要访问当前并不允许 ...
随机推荐
- linux scp
scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令.linux的scp命令可以在linux服务器之间复制文件和目录. scp命令的用处: scp ...
- muParser公式库使用简介( 转)
muParser是一个跨平台的公式解析库,它可以自定义多参数函数,自定义常量.变量及一元前缀.后缀操作符,二元操作符等,它将公式编译成字节码,所以计算起来非常快. 当前版本V1.28,官方网址http ...
- MyEclipse开发WebService教程
. 创建一个 webService 工程. 2. 创建一个普通 Java 类 3. 创建 webService 服务端 HelloJaxwsDelegate.java 的源代码如下: 4. 导 ...
- 关于引用mshtml的问题
今天看了个验证码识别的代码,其中引用到了mshtml.dll,找了半天原来就是microsoft.mshtml.dll.查这个dll的时候还发现了好几篇关于这个dll添加问题的文章.顺便看了下,原来这 ...
- 严重: Catalina.stop: java.net.ConnectException: Connection refused: connect
原因: 1.连接被拒绝,关闭的时候报错.是不是已经关闭了,你又关闭,他当然找不到了. 2.连接被拒绝有可能是服务端连接数到达最高了 3.服务器拒绝连接,ip地址是否写对,端口号正确与否,网络是否通畅, ...
- 本来运行的好的Ajax.dll怎么突然不起作用了
客户中有个好多年前老项目用了Ajax.dll,前几天突然不起作用了. 问了下原因,系统从Windows Server2003 升级为 Windows Server 2008了,IIS也从6升级成7了. ...
- LA 3516 (计数 DP) Exploring Pyramids
设d(i, j)为连续子序列[i, j]构成数的个数,因为遍历从根节点出发最终要回溯到根节点,所以边界情况是:d(i, i) = 1; 如果s[i] != s[j], d(i, j) = 0 假设第一 ...
- SharedPreferencesUtil
用于缓存一个临时的变量 比如 SharedPreferencesUtil.put(getApplicationContext(), "userImage", user.conten ...
- noip2000提高组题解
事实再次向我证明了RP的重要性... 第一题:进制转换 是我最没有把握AC的一道题目却是我唯一一道AC的题目,真是讽刺.看完题目几乎完全没有往正常的解法(取余倒序)去想,直接写了搜索,因为数据范围在2 ...
- 修改dbwr后台进程数量
批量执行脚本时,批量数据写回到数据库:从EM中查看到有较多的dbwr的IO请求 查看后台dbwr的进程数量 select * from v$bgprocess 在查询结果中paddr的字段为非'0 ...