1

我已经成功部署并在 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

这工作正常,因为应用程序是默认的,现在不需要上下文根。

现在,如果不使应用程序默认并明确给出上下文根,是否有任何方法可以做到这一点?

4

0 回答 0