无法在Tomcat上运行Grails应用程序

时间:2014-03-14 21:20:42

标签: tomcat grails ubuntu

我正在尝试将Grails应用程序部署到在Ubuntu上运行的Tomcat容器中。我试图做“一切正常”,但仍然无法让它发挥作用。有什么想法吗?

  • 我正在运行“Ubuntu Server 12.04.3 LTS”。我安装了与Ubuntu(6.0.35)捆绑在一起的Tomcat。我知道Grails可以使用大量内存,因此我将分配给JVM的内存增加到512MB。随Tomcat提供的示例应用程序运行良好。

  • 在我的电脑上(运行Windows 7)我安装了Grails(最新版本:2.3.7)和NetBeans(版本:7.4)。

  • 我创建了一个非常简单的“Hello world”Grails应用程序。我在我的电脑上运行它有些麻烦(我刚发布的另一个问题),但它编译得很好,我可以创建一个没有问题的战争文件。通过运行“grails war”。

  • 我使用Tomcat“Web应用程序管理器”上传War-file。它应该放在/ var / lib / tomcat6 / webapps中,解压缩,一切看起来都很好。

  • 但是当我尝试启动应用程序(在管理器中选择“开始”)时,我收到“FAIL - 上下文路径中的应用程序/ 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的吗?或者我应该在我的应用程序中更改一些配置?

我非常感谢任何帮助! : - )

/来自瑞典的安德斯

1 个答案:

答案 0 :(得分:5)

如果使用具有此版本Grails的适当版本的Tomcat,这是一块蛋糕。 :)

最新版本的Grails默认使用Servlet 3.0和嵌入式Tomcat 7.0.52.1(在run-app期间使用),我怀疑它是否与Tomcat 6.0.35兼容。但是您可以根据需要将servlet版本降级到2.5或2.4:

//BuildConfig.groovy (first line)
grails.servlet.version = "3.0" //2.4 or 2.5