背景Background
-Repository Data Dictionary Locales : en, ja
-CONTENTSERVER/WEBTOP Version 6.5
-Webtop default language :Japanese (<default_locale>ja_JP</default_locale>)
-App Server OS language : English
-用户能够正常登陆Webtop,其他的操作没有问题。只是打开Centera存储的文件,特别是登陆后第一次打开一个文件总是失败(80%),并且后台会抛出这个异常
Users are able to login the Webtop Application properly, and normal operations are all fine except accessing contents stored in Centera. The first content accessing after login may be(80%) failed with the following exception
[DM_SESSION_E_AUTH_FAIL]error: "Authentication failed for user testuser with docbase mybase.";
ERRORCODE: 100; NEXT: null
at com.documentum.fc.client.impl.docbase.DocbaseExceptionMapper.newException(DocbaseExceptionMapper.java:52)
解决方案Solution
在dfc.properties中加上 dfc.locale = ja
Add dfc.locale = ja to
dfc.properties of the Webtop Application.
原因
服务器的OS是英语,但是webtop中的app.xml指定了<default_locale>ja_JP</default_locale>。在DA中会发现content server 为1个user生成了2个session,导致连接Centra的冲突。当一个session连接到Centra并读取数据的时候,另外一个session也试图连接,这样前一个会被踢掉并抛出异常,于是整个连接都失败了。不确定是不是6.5的bug, 正在使用5.3并没有这样的问题。
As mentioned in the background ,the locale of my client’s host machine is English and the default_locale of the Webtop application is Japanese.In the case, when a users login the application, 2 sessions can be found via DA. Both of the sessions try to connect with Centera, hence one of them will be interrupted.Unfortunately, another won't work either as the interrupted session throws an exception to Client. I have version 6.5 and 5.3 on my server, confirmed only 6.5 has the issue.Now the question is why 2 sessions are created for 1 user?
正常的情况是
当一个用户通过Webtop Application(IE) 连接ContentServer, ContentServer 获取客户端(APP SERVER)的dfc.locale来生成对应的session配置对象(它的session_locale属性对应dfc.locale)。如果dfc.locale没有设置,DFC就通过JVM来获取服务器OS的语言并生成对应的session配置对象(s1)。接下来检查Webtop Application 的app.xml中default_locale的设置,如果default_locale和前边一系列动作获取的语言不一致,刚生成的session对象(s1)则会被更新。
A session config object describes the configuration of a repository session. It is created when a client opens a repository session. The property values are taken from values in the client config object, the server config object, and the connection config object. session_locale is the locale of the repository session. The value is obtained from the dfc.locale property of the client config object. If dfc.locale is not, the default value is determined programmatically from the locale of the client’s host machine. Then default_locale of Webtop Application will be verified, if it is different from the session_locale of the session object created earlier, the session object will be update according to the default_locale.
异常
session对象(s1)没有被更新,而是ContentServer根据default_locale重新生成了一个session对象(s2),2个session同属于一个用户并且会随机交替被使用。
I guess the issue is, the existing session is not updated but a new one is created somehow.The 2 sessions are used alternately and randomly.