【发布时间】:2014-04-20 09:21:37
【问题描述】:
我正在尝试将 Grails 应用程序部署到在 Ubuntu 上运行的 Tomcat 容器。我试图做“一切都正确”,但仍然无法正常工作。有什么想法吗?
我正在运行“Ubuntu Server 12.04.3 LTS”。我安装了与 Ubuntu (6.0.35) 捆绑在一起的 Tomcat。我知道 Grails 可以使用大量内存,所以我将分配给 JVM 的内存提高到 512MB。 Tomcat 提供的示例应用程序运行良好。
在我的 PC(运行 Windows 7)上,我安装了 Grails(最新版本:2.3.7)和 NetBeans(版本:7.4)。
我创建了一个非常简单的“Hello world”Grails 应用程序。我在我的 PC 上运行它时遇到了一些问题(我刚刚发布的另一个问题),但它编译得很好,我可以毫无问题地创建一个 War 文件。通过运行“圣杯战争”。
我已使用 Tomcat“Web 应用程序管理器”上传 War 文件。它按原样放在 /var/lib/tomcat6/webapps 中,解压后一切正常。
但是当我尝试启动应用程序(在管理器中选择“启动”)时,我收到“失败 - 上下文路径 /MyTestApp 的应用程序无法启动”消息。我尝试重新启动 Tomcat,但遇到了同样的问题。
当我查看 Tomcat 日志 (catalina.out) 时,会记录以下内容:
2014-03-14 20:24:32,148 [http-8080-1] ERROR context.ContextLoader - Context
initialization failed
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'grailsApplication' defined in ServletContext
resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed;
nested exception is java.lang.NoClassDefFoundError: javax/servlet/AsyncContext
at java.lang.Thread.run(Thread.java:701) Caused by:
java.lang.NoClassDefFoundError: javax/servlet/AsyncContext
at java.lang.Class.privateGetDeclaredMethods(Class.java:2534)
at java.lang.Class.getDeclaredMethods(Class.java:1855)
...
Caused by: java.lang.ClassNotFoundException: javax.servlet.AsyncContext
似乎找不到“javax.servlet.AsyncContext”类。 Grails 文档说在 Tomcat 上运行 Grails 是小菜一碟,应该不会出错……“javax.servlet.AsyncContext”类似乎与“Servlet 3.0”有关,但我没有非常了解Java EE。我只是认为最新版本的一切都可以开箱即用......
我需要在服务器上安装什么吗?有什么要添加到 Tomcat 的吗?或者我应该在我的应用程序中更改一些配置?
如果有任何帮助,我将不胜感激! :-)
/来自瑞典的安德斯
【问题讨论】:
-
你能发布你的 BuildConfig.groovy 我认为你的目标可能是 Tomcat 7 而不是 6。