You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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文件,添加如下配置:
    <?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>
    
    把这个文件打包进WAR包再部署,Glassfish就会优先使用这里指定的上下文根。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:55:57