Perforce Performce Server 2020在多次登录时出现问题

Perforce Performce Server 2020在多次登录时出现问题,perforce,p4java,Perforce,P4java,从2015年Performce server迁移到2019年时,我面临着来自P4、P4JAVA的Java API的并行登录问题 在2019服务器上,如果多个IServer对象(例如server1和server2)使用相同的用户ID连接到服务器,则注销server1(即server1.logout())将结束所有其他同时登录的IServer对象的会话 2015服务器不会出现这种情况,使用注销结束server1的登录不会导致server2出现同样的情况 这是2019服务器的预期工作方式吗?更改任何属

从2015年Performce server迁移到2019年时,我面临着来自P4、P4JAVA的Java API的并行登录问题

在2019服务器上,如果多个IServer对象(例如
server1
server2
)使用相同的用户ID连接到服务器,则注销server1(即
server1.logout()
)将结束所有其他同时登录的IServer对象的会话

2015服务器不会出现这种情况,使用注销结束server1的登录不会导致server2出现同样的情况

这是2019服务器的预期工作方式吗?更改任何属性是否可以使2019身份验证恢复到与2015 server类似的工作状态? 我在下面附上了一段代码并输出以供进一步参考

  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分钟后到期


所有客户端票证都存储在票证文件(
P4TICKETS
)中,由用户名和服务器端口键入。通过运行
p4 tickets
命令,您可以查看所有票据


当您执行
p4注销时
,当前用户/端口的票证将从本地票证文件中删除,要求您再次
p4登录
,以从服务器获取新的副本。由于定期
注销不会使服务器上的票证无效,因此只要保留票证副本,您就可以保持“登录”;您可以通过拥有多个票证文件来实现这一点,或者只需保存散列然后还原它(如果票证文件中没有票证,您也可以将票证散列作为
P4PASSWD
传递)。

所有客户端票证都存储在一个票证文件(
P4TICKETS
)中,由用户名和服务器端口键入。通过运行
p4 tickets
命令,您可以查看所有票据


当您执行
p4注销时
,当前用户/端口的票证将从本地票证文件中删除,要求您再次
p4登录
,以从服务器获取新的副本。由于定期
注销不会使服务器上的票证无效,因此只要保留票证副本,您就可以保持“登录”;您可以通过拥有多个票证文件来实现这一点,或者只需保存散列然后还原它(如果票证文件中没有票证,您也可以将票证散列作为
P4PASSWD
传递)。

不同之处可能在于P4Java默认为
注销-a
,而不是常规的
注销
?检查文档,看看是否有一个注销选项,可以在不使服务器端票证无效的情况下清除本地票证。@Samwise默认情况下,
logout
发生在
logout-a
上,我已经验证了这一点。这可以使用LoginOptions进行控制。这看起来更像是服务器2019中的身份验证的内部功能从2015Ah起发生了一些变化,可能不同之处在于现在它们共享相同的票证文件?P4Java是否允许您配置票证文件位置?我不知道票证文件如何用于登录/身份验证,但我认为这不是问题所在。我相信是这样的,因为我从另一台机器上登录和注销,而从另一台机器上注销也结束了我当前的会话machine@Samwise另外,如果有帮助,我已经将服务器的TLS安全设置为1.2。区别可能是P4Java默认为
logout-a
,而不是常规的
logout
?检查文档,看看是否有一个注销选项,可以在不使服务器端票证无效的情况下清除本地票证。@Samwise默认情况下,
logout
发生在
logout-a
上,我已经验证了这一点。这可以使用LoginOptions进行控制。这看起来更像是服务器2019中的身份验证的内部功能从2015Ah起发生了一些变化,可能不同之处在于现在它们共享相同的票证文件?P4Java是否允许您配置票证文件位置?我不知道票证文件如何用于登录/身份验证,但我认为这不是问题所在。我相信是这样的,因为我从另一台机器上登录和注销,而从另一台机器上注销也结束了我当前的会话machine@Samwise如果有帮助的话,我已经将服务器的TLS安全设置为1.2