GlassFish3部署WAR包失败:应用已部署问题求助
解决GlassFish 3中WAR包部署提示“应用已在此域中部署”的问题
我来帮你搞定这个GlassFish部署的小麻烦,这种场景我碰到过好多次了——你的应用myapp其实已经在域层面完成注册,但还没给目标服务器实例创建对应的应用引用,所以直接用deploy --force=true才会失败,毕竟--force主要是用来覆盖已经关联到服务器实例的应用,没法处理“仅域内存在但无实例引用”的情况。
下面是一步步的解决步骤:
1. 先确认应用的实际状态
先执行命令查看域内已部署的应用列表,确认myapp确实存在:
./asadmin list-apps
如果输出里能看到myapp,就说明它已经在域中注册了,只是没关联到目标服务器。
2. 为目标服务器创建应用引用
按照提示的create-application-ref命令,给默认的server实例创建引用就行:
./asadmin create-application-ref --target server myapp
如果你的部署目标是集群或者自定义实例,把--target的值换成对应的集群/实例名称就好。执行完这个命令,你的应用应该就能在目标服务器上正常访问了。
3. 如果需要重新部署新版本应用
要是你其实是想替换现有应用的版本,更稳妥的方式是先卸载再重新部署:
# 先卸载域内的旧应用 ./asadmin undeploy myapp # 再部署新的WAR包 ./asadmin deploy myapp.war
要是想一步到位,也可以尝试结合--force和--target参数(不过还是先卸载再部署更不容易出问题):
./asadmin deploy --force=true --target server myapp.war
额外排查小技巧
- 要是执行
undeploy时提示应用不存在,大概率是域内的应用记录有残留。这时候可以手动清理GlassFish域的applications文件夹(默认路径是glassfish/domains/[你的域名]/applications),删掉里面myapp相关的文件夹,再重新执行部署命令。 - 确保你用的
asadmin命令和目标GlassFish服务器版本匹配,版本不兼容也可能导致这类奇怪的异常。
内容的提问来源于stack exchange,提问作者dmitry
相关产品推荐
相关产品推荐

