JavaEE:Glassfish v3preload的无理头bug

来源:互联网 发布:web science数据库 编辑:程序博客网 时间:2024/04/29 15:25
环境:Solaris 10(似乎对其他系统也适用)+Glassfish v3preload

因为gf3的默认domain的名称没法改,我这个性不喜欢诸如domain1,domain2这样的比较死板的名称,于是就create-domain了一个新的domain,但是这个domain跟默认domain的管理员名称不一样,启动是没问题,却不想无法停止了。终端显示

com.sun.enterprise.cli.framework.CommandException: Authorization has been refused for credentials [user: yoshua] given in this request.
(Usually, this means invalid user name and/or password)
Command stop-domain failed.


这个问题比较奇怪,是user的问题,用上面的关键字google了一下,只看到有人在官网提交的bug和一堆人的讨论,没能解决问题。(当然,他们发现这个问题是在部署war时,不是关闭时,只是错误提示一样而已!)

用Unix/Linux养成了一个习惯,每运行一个新软件都看看$HOME里是否有相关的配置信息(点文件或点目录之类的),发现有个.asadminpass文件比较接近。其内容如下

# Do not edit this file by hand. Use login interface instead.
asadmin://WarGrey@localhost:3838 Z2xhc3NmaXNoLnlvc2h1YS4wOQ==


哈哈,问题就在这了,两个用户不一致(yoshua和WarGrey),不过后面那串无规则字符不知道是什么,而且人家也说了,“不要手动更改,使用登陆接口”

用Unix/Linux养成了另一个习惯,首先想CLI的方式,然后才是GUI的方式,我能想到的就是两个,一个是基于命令行的asadmin login命令,另一个是基于Web的glassfish 管理控制台,事实证明这次GUI是帮不上忙的,于是在控制台输入

asadmin login --host localhost --port 3838


这个是asadmin的远程命令,在domain启动的情况下远程登陆管理控制台的,其作用之一是会在更新$HOME/.asadminpass文件,这就是bug的来源,gf3的.asadminpass里如果已经有内容了,便不理你了(gf2没问题),删了它再输入上述命令就行了(参数很容易理解,就不多说了)。