我已经成功部署并在 Tomcat 上运行了一个 Spring MVC 应用程序。现在,我正试图将其移至 glassfish,只是因为,我想从管理控制台设置 JNDI 数据源。
现在,当我在 glassfish 中部署 war 文件并启动应用程序时,它会成功启动在以下位置设置的欢迎文件web.xml
:
<welcome-file-list>
<welcome-file>home</welcome-file>
</welcome-file-list>
此时浏览器上的链接为:
http://localhost:8080/ContextRoot
欢迎页面有一些这样的链接:
<a href="orders">Manage Orders</a>
我在该 url 映射了一个控制器:
@Controller
@RequestMapping("/orders")
public class OrderItemController {
@RequestMapping(method = RequestMethod.GET)
public String displayTables(Model model,
@RequestParam(value="message", required = false) String message) {
occupiedTables = tableService.getOccupiedTables();
model.addAttribute("message", message);
model.addAttribute("occupiedTables", occupiedTables);
return "orderItem";
}
}
但是,当我单击orders
该页面上的链接 ( ) 时,上下文根消失了,我剩下的是:
http://localhost:8080/orders
因此,由于不再显示上下文根,因此无法找到应用程序本身。我收到 404 错误。
我的问题是,将应用程序从 Tomcat 迁移到 Glassfish 时是否需要进行一些更改?通过互联网搜索后,我在我的应用程序中添加了一个 , 与以下内容glassfish-web.xml
并行:web.xml
<!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 error-url="">
<context-root>/ContextRoot</context-root>
</glassfish-web-app>
但这没有帮助。我还可以在 glassfish 管理控制台中看到上下文根被列为应用程序的一部分。
这里有什么问题?我是否还缺少其他东西。
更新:
当我在 glassfish 管理控制台中设置默认 Web 模块时:
“配置”->“虚拟服务器”->“服务器”->“默认 Web 模块”
然后一切正常。根本不需要上下文根。因此,可以在以下位置访问应用程序欢迎文件:
http://localhost:8080
单击orders
链接将带我到:
http://localhost:8080/orders
这工作正常,因为应用程序是默认的,现在不需要上下文根。
现在,如果不使应用程序默认并明确给出上下文根,是否有任何方法可以做到这一点?