很多中間件的管理員,並不知道容器的認證別名和組件管理的認證別名的區別,實際上,一般也看不出區別。但是偏偏有的情況下會出大問題。
最近我們有一臺數據庫的變更,應用要改連異地的數據庫,因爲維護人不同那邊的數據庫用戶密碼和這邊不一樣。於是切換前,我們這邊修改了J2C的認證別名和數據庫的URL,結果很快我們這邊的數據庫用戶鎖定了,造成了業務還沒切過去這邊數據庫就不能用了,有了一定的業務影響。
爲什麼會鎖定呢,發現修改了URL是不會立刻生效的,而修改密碼是會立刻生效的,結果是外地的用戶密碼連本地的庫,自然就鎖了。這裏的生效指的是應用生效,測試連接保證了改了馬上看到效果的。
IBM官方給出的答覆是,修改URL和J2C認證別名都不會立刻生效。(說實話IBM現在越發不靠譜了)
分析可能影響到生效與否的參數配置,自己動手測,發現如下結果:
1,web.xml中res-auth 爲container(CCIS應用這個參數爲container),並且配置了容器的認證別名,不論組件管理認證別名配置與否,修改J2C認證別名立即生效,不需要重啓;
2,res-auth 爲container但是不配置容器認證別名,則必須配置組件管理認證別名,修改J2C認證別名不立即生效,需要重啓。
3,res-auth爲application,則必須配置組件管理認證別名,不論容器的認證別名配置與否,修改J2C認證別名不立即生效,需要重啓。
so,改了數據庫的密碼有可能會立刻生效的,要當心呢。