将Spring MVC应用程序从Tomcat迁移到Glassfish。 Context root问题

时间:2013-07-01 10:42:31

标签: java web-applications spring-mvc tomcat7 glassfish-3

我在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.xmlweb.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

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

现在,如果没有使应用程序默认,并且明确地给出上下文根目录,是不是没有这样做?

0 个答案:

没有答案