Glassfish 5.0部署应用URL附加ID问题求助
嘿,这个问题我之前碰到过好几次,大概率是Glassfish为了避免上下文根冲突自动生成了随机后缀导致的,别担心,咱们一步步来搞定它:
1. 手动指定固定上下文根(最直接的解决方法)
这是最有效的办法,强制让Glassfish使用你想要的上下文根,不会再自动加随机ID:
- 通过Glassfish管理控制台设置:
打开Glassfish控制台(默认地址是http://localhost:4848),在部署应用的步骤里,找到「Context Root」(上下文根)选项,直接填写/AppName,不要留空或者让系统自动生成,完成部署后URL就正常了。 - 在应用内部配置:
如果是Java EE应用,可以在项目的WEB-INF目录下新建(如果没有的话)一个glassfish-web.xml文件,添加如下配置:
把这个文件打包进WAR包再部署,Glassfish就会优先使用这里指定的上下文根。<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd"> <glassfish-web-app> <context-root>/AppName</context-root> </glassfish-web-app>
2. 清理残留的同名应用缓存
有时候之前部署过同名应用,即使你删除了,Glassfish的域里可能还有残留的配置或缓存,导致系统误以为上下文根冲突:
- 先停止Glassfish服务;
- 找到Glassfish的域目录(默认路径是
glassfish5/glassfish/domains/domain1),删除applications和generated文件夹下与你的应用相关的内容; - 重启Glassfish后再重新部署应用。
3. 命令行部署时指定上下文根
如果你习惯用asadmin命令行部署,记得加上--contextroot参数来指定:
asadmin deploy --contextroot /AppName /path/to/your/App.war
这样部署时就会直接用你指定的上下文根,不会自动追加随机ID了。
一般来说,按第一种方法操作就能解决问题,如果还是不行,试试清理缓存,应该就能搞定啦!
内容的提问来源于stack exchange,提问作者user1529313
相关产品推荐
相关产品推荐

