如何为UniObjects设置时区?

3
我正在使用Uniobjects for Java从Win7Pro连接到AIX 5.3 box。当udcs用户登录时,/etc/profile被执行。但是似乎/etc/environment没有被调用。
如果rpc方法(使用aix用户"sbr")调用使用TIME()的Unidata子例程,则其结果为UTC。如果同一用户("sbr")登录并执行相同操作(不使用rpc),则TIME()返回UTC-5。
与我的支持人员讨论时,他们告诉我UniObjects rpc调用执行/etc/profile,但永远不会检查用户主目录中是否有.profile。正如我在第一句话中所说,似乎也没有使用/etc/environment。
注:最初我没有将此标记为Java,因为这与对同一rpc服务的VB绑定一致。
2个回答

1

这不是您通过UniObjects来解决的问题。您需要确保服务器上的udcs用户设置了正确的时区。


我不知道有一个udcs用户。我的问题用词不当。如果我没记错,unirpcd是以root身份运行的。你能在你的unidata盒子上复制我的发现吗? - slestak
不,我不能这样做,这很可能意味着是AIX用户配置问题。是的,UniRPC以root身份启动,然后将分叉一个进程,该进程通过UniRPC更改为您登录的用户。请检查root在时区方面的设置是否正确。 - Dan McGrath
我已经仔细检查了UniRPC分叉的用户,它似乎具有适当的TZ设置。现在正在检查root。当我在$UDTHOME中设置serverdebug时,写入的文件已经存在TZ问题。第一列中的时间戳是UTC。ksh中的root设置为EST。 - slestak
我希望在RPC守护程序上运行ps eww命令可以显示$TZ,但实际上并没有。 - slestak

0

我已经花了几个小时来尝试解决这个问题。

真正的解决方案是不要依赖于 TIME() 函数来处理任何重要的事情。如果你在这个特定的盒子上修复了问题,只是将其移动到另一个盒子上,问题可能会再次出现。

而且,如果其他程序同样对时区设置敏感(即 cron 作业),调整这些设置可能会与它们产生冲突。

庆幸的是,我可以重构我的 UniBasic 函数,不依赖于 TIME() 函数。

祝好运!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接