我在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>
我有一个控制器映射到该网址:
@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模块时:
'配置' - &gt; '虚拟服务器' - &gt; 'server' - &gt; '默认网络模块'
然后一切正常。根本不需要上下文根。因此,可以通过以下方式访问应用程序欢迎文件:
http://localhost:8080
点击orders
链接即可转到:
http://localhost:8080/orders
工作正常,因为应用程序是默认的,现在不需要上下文根。
现在,如果没有使应用程序默认,并且明确地给出上下文根目录,是不是没有这样做?