Saturday, May 14, 2005

如何处理多数据库登录的选择问题

现在越来越多的用户已经不满足于单个数据库的情况了,除了正式数据库之外,可能还会有测试 用的,培训用的,等等,那么就涉及到用户在登录时要选择适当的数据库的问题,一不小心选错了数据库,就会有些麻烦了,那么,如何让用户在登录到IMAN 时,不必担心选错数据库呢?这里提供一个办法。

从IMAN7到IMAN9一路用过来的用户可能发现了,从IMAN8之后,在IMAN中加 入了 cookie技术,可以记忆用户上次登录的信息以及其它操作历史信息,这种技术是配合操作系统来实现的,即当用户退出应用程序之后,一些与用户相关的信息 自动记录到操作系统的某个位置,等到该用户再次进入时,可以首先加载这部分信息,然后将其自动填写到适当位置。

对cookie了解之后,可能很多朋友都会蒙生这样一个想法,试想,如果能让应用在启动时加载适当的cookie,是不是就解决问题了呢? 答曰:然!

下面介绍一下实现的过程:



假设:存在两个数据库实例,sid1, sid2, 数据库登录别名分别为SID1 Database与SID2 Database
(1) 首先,对于不同的数据库实例,创建独立的portal启动脚本文件(这种方法对每个实例使用独立的客户化包时犹为有效);
# 创建portal.bat的复本
copy portal.bat portal_sid1.bat
copy portal.bat portal_sid2.bat
# 修改两个文件中的classpath定义,添加开发部分的classpath及其它定制信息
# 亦可以在该文件中用ECHO语句显示一些辅助信息,如当前实例的信息等
(2) 其次,为每个实例创建独立的cookie文件;
# 首先根据默认的登录cookie文件创建两个实例所需的cookie文件
# 假设 set %IPR%=d:\LSE0912
# 首先在%IPR%下创建一个文件夹,用于存放Cookies
mkdir %IPR%\cookies
copy "%USERPROFILE%\.pcookie\%USERNAME%\portal.cookie" %IPR%\cookies\portal_sid1.cookie
copy "%USERPROFILE%\.pcookie\%USERNAME%\portal.cookie" %IPR%\cookies\portal_sid2.cookie
# 接下来修改两个Cookie文件(均为文本文件,可用写字板打开),可以按如下方法修改:
a. 将两个cookie文件中的"username"赋值为您常用的用户名,或赋值为"input your name";
b. 将portal_sid1.cookie中的"servername"赋值为"SID1 Database";
c. 将portal_sid2.cookie中的"servername"赋值为"SID2 Database";
d. 两个cookie文件中,"groupname"值可以为空,或赋值为您常用的组名;
(3) 然后,修改两个portal启动文件,使其在适当的位置加载cookie;
a. 对于portal_sid1.bat做如下修改, 其中红色部分为要添加的内容
set IPR=......
SET PVR=......
rem IDR is ......
set IDR=%IPR%
echo Loading SID1 Login Cookies ...
xcopy %IPR%\cookies\portal_sid1.cookie
"%USERPROFILE%\.pcookie\%USERNAME%\portal.cookie" /y > Nul 2>&1

......

b. 同样,对portal_sid2.bat做类似的修改, 其中红色部分为要添加的内容
set IPR=......
SET PVR=......
rem IDR is ......
set IDR=%IPR%
echo Loading SID2 Login Cookies ...
xcopy %IPR%\cookies\portal_sid2.cookie
"%USERPROFILE%\.pcookie\%USERNAME%\portal.cookie" /y > Nul 2>&1

......

最后,您还需要为两个portal启动脚本文件创建两个快捷方式,登录时,只要选择了正确的快捷方式,就不用担心选错数据库了
到此为止,对cookie的操作已经完成, 感兴趣的不妨试一试.

以 上方法是从操作系统的COOKIE的角度来解决问题,当然实现的方法还有很多,同样也可以编写多个client_specific_xxx.properties 来实现,为每个client_specific_xxx.properties提供合适的ServerName与ServerMarker, 然后在调用它的portal_xxx.bat将其xcopy /y 过去。

No comments: