在从 2015 perforce 服务器迁移到 2019 时,我遇到了来自 Java API for P4、P4JAVA 的并行登录问题。
在 2019 服务器上,如果多个 IServer 对象(例如server1和server2)使用相同的 userId 连接到服务器,则注销 server1(即server1.logout())结束同时登录的所有其他 IServer 对象的会话。
2015 年的服务器不会发生这种情况,并且使用注销的 server1 结束 Seesion 不会导致 server2 的结果相同。
这是 2019 年服务器的预期工作吗?更改任何属性可以恢复 2019 身份验证以类似于 2015 服务器工作吗?我在下面附上了一段代码并输出以供进一步参考
public static void main(String args[]) throws P4JavaException, URISyntaxException {
IOptionsServer server1 = null, server2 =null;
server1 = connectServer(server1,"p4javassl://127.0.0.1:1666");
server2 = connectServer(server2,"p4javassl://127.0.0.1:1666");
System.out.println(server1.getLoginStatus());
System.out.println(server2.getLoginStatus());
server1.logout();
System.out.println(server1.getLoginStatus());
System.out.println(server2.getLoginStatus());
}
public static IOptionsServer connectServer(IOptionsServer server,String URL)
throws P4JavaException, URISyntaxException {
Properties defaultProps = new Properties();
defaultProps.put(RpcPropertyDefs.RPC_SOCKET_SO_TIMEOUT_NICK, "90000");
defaultProps.putAll(System.getProperties());
server = ServerFactory.getOptionsServer(URL, defaultProps);
TrustOptions trustOptions = new TrustOptions(true, false, true);
((IOptionsServer) server).addTrust(trustOptions);
server.connect();
server.setUserName("usr");
server.login("pass");
return server;
}
2019 年服务器的输出
用户超级票在 11 小时 59 分钟后到期。用户超级票在 11 小时 59 分钟后到期。Perforce 密码 (P4PASSWD) 无效或未设置。
Perforce 密码 (P4PASSWD) 无效或未设置。
2015 年服务器的输出
用户超级票在 11 小时 59 分钟后到期。用户超级票在 11 小时 59 分钟后到期。Perforce 密码 (P4PASSWD) 无效或未设置。
用户超级票在 11 小时 59 分钟后到期。