tomcat - 在 Tomcat 上运行 Grails 应用程序时遇到问题

标签 tomcat grails ubuntu

我正在尝试将 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 文件。通过运行“grails 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 中的吗?或者我应该在我的应用程序中更改一些配置?

如有任何帮助,我将不胜感激! :-)

/来自瑞典的安德斯

最佳答案

如果在这个版本的 Grails 上使用合适的 Tomcat 版本,那就小菜一碟了。 :)

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

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

关于tomcat - 在 Tomcat 上运行 Grails 应用程序时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22415939/

相关文章:

java - Grails - 项目构建系统

grails - 在 GRAILS 中创建与其他类型对象不同类型的对象时需要建议如何使用服务

node.js - postgres中的kthreaddk使用高cpu

java - 如何在 Java 中发送电子邮件?

grails - 如果超时,是否有任何方法可以获取 PromiseList 的结果

windows - 窗口 : Can't connect from remote machine 上的 Tomcat

linux - 安装 linux-headers-2.6.32-042stab085.20

python - pyenv install : 3. x BUILD FAILED (Ubuntu 20.04 using python-build 20180424)

java - 如何使用 Eclipse 和 Tomcat 为没有 web.xml 的动态 Web 项目创建 JNDI

java - 使用 Jersey、Tomcat 和 Java 解析网站 - 编码问题