Wakanda 4Dmobile超时问题

时间:2016-02-25 14:45:10

标签: javascript 4d-database wakanda

我使用4D移动连接从Wakanda Enterpise v11到4D服务器并连接到远程数据存储。我尊重60分钟的超时值。

在4D,on 4D Mobile Authentication Method,所有数据都很好($1包含用户名,$2包含密码。)

当不活动时间超过60分钟且尝试发送wakanda请求时,{4} on 4D Mobile Authentication Method$1上的$2,..值为空并返回“错误”。

如何在没有重启/重新加载Wakanda服务器功能的wakanda服务器/模型的情况下续订/重新连接连接,或者如何将超时设置为无限制?

我正在尝试使用

恢复与4D服务器的连接
  • mergeoutsidecatalog()
  • 向4D发送休息请求

没有任何作用

5 个答案:

答案 0 :(得分:1)

mergeoutsidecatalog()州的文档:

  

超时(仅基于对象的语法):4D服务器上的客户端连接超时(传递表示分钟的数字)。 每个需要对外部4D数据库进行REST访问的客户端查询将在4D服务器端创建或使用客户端连接(进程),保持客户端上下文。默认情况下,连接在60分钟不活动后关闭。您可以将此超时时间减少到15分钟,具体取决于您的需求。

因此,为了保持连接处于活动状态,您需要在超时之前发送查询。

问题是,一旦超时,你就无法再次呼叫mergeoutsidecatalog();它只能在加载Model对象时完成,因此您需要重新启动Wakanda。 mergeoutsidecatalog()文档中记录了此行为:

  

当加载当前的Model对象时,即在Model.js文件的上下文中,必须调用此方法。

检查currentSession()可能会帮助您隔离最终用户会话到期时间,但我不认为将用户重定向到登录页面会有所帮助,因为Wakanda服务器将无法呼叫mergeoutsidecatalog()没有重新加载模型(即重新启动Wakanda)。

如果您希望4D和Wakanda之间的连接能够 无限期 ,那么您需要:

a)将超时增加到一个非常大的数字(可能会尝试0以查看它是否禁用超时)

b)通过在超时超时之前发送查询来维持与4D服务器的心跳连接

答案 1 :(得分:0)

我认为您可以做的最好的事情是,在您向服务器发送任何请求之前,您将测试会话过期。

您可以使用currentSession()。如果它返回“默认访客”,则表示会话已过期。然后,您将用户重定向到登录页面。

答案 2 :(得分:0)

我记得在这些方面遇到问题。检查以确保您的4D服务器具有Wakanda许可证。我发现服务器不喜欢没有许可证。确保您的服务器上有4D Mobile Client许可证。默认情况下,您拥有0个许可证,除非您购买了一定数量的座位的开发者许可证。

答案 3 :(得分:0)

我会考虑许可证问题。我将mergeoutsidecatalog()调用的超时设置为5分钟,Wakanda Session超时默认为60分钟。因此,在我的会话超时之前,我与4D服务器的连接超时,并且在下次调用Wakanda的4D方法时重新建立这些连接没有问题。我这样做是为了限制我的4D移动许可证中的任何一个超过必要的时间。在我的情况下,我的四维移动方法都没有维护选择,我没有访问任何4D表作为Wakanda中的数据源,我只调用4D移动方法,通过4D移动方法返回的对象从4D中的其他4D表返回数据。 4D Mobile Methods都属于同一个表,其中不包含实际记录。

答案 4 :(得分:0)

我看到你希望让Wakanda会议保持活力。

我相信解决方案就是如何调用login方法。

您是否在客户端呼叫loginByKey(),例如,对用户进行身份验证? loginByPassword()login()将是客户端进行身份验证的其他方式。

我了解到你可以提供lifeTime参数,这是Wakanda会话的持续时间。我不相信我在飞行中成功延长了这一点,但我将其设置为一个非常大的值,并在客户端使用waf.directory.logout()手动处理即将到期的Wakanda会话。 (您可以在服务器端使用forceExpire(),这可能是手动使会话过期的更好方法)

以下是lifeTime参数的使用方法:

waf.directory.loginByKey(username, pass, 10800)

10800lifeTime参数,这是Wakanda会话的最长生命周期。如果您不自己指定,则默认为较低的数字。我不确定这个参数的时间单位。我相信它在几秒钟内--- 10800 / 60 would be 180 minutes, or 3 hours.如果您处理好会话管理,您可以将其设置为非常高的数字,并且只需手动记录人员。如果这些信息有用,我也可以就此设置提出建议。