【问题标题】:Trouble running Grails application on Tomcat在 Tomcat 上运行 Grails 应用程序时出现问题
【发布时间】: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。

标签: tomcat grails ubuntu


【解决方案1】:

如果使用适当版本的 Tomcat 和此版本的 Grails,那将是小菜一碟。 :)

最新版本的 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

【讨论】:

  • 哈哈。这仍然是一个疑问。如果您添加任何其他可能性,我将非常高兴。 @JoshuaMoore
  • 啊哈。谢谢! :-) 好吧,我认为它会是这样的。将两个版本一起打补丁可能需要很长时间,所以我将 Tomcat 7 下载到了我的 Ubuntu。 (来自 Apache 主页 - 版本 7.0.52。)网上有关于如何安装它的很好的文档。但我仍然没有让它工作。现在我在 catalina.out 中遇到了另一个错误:www.agodata.se/TomcatError.txt 知道是什么原因造成的吗?
  • 啊——我自己找到的。 (数据库连接出错。)问题解决了!谢谢你们的帮助,你们俩。
  • Grails 2.4 存在一个未解决的错误,阻止降级到 Tomcat 6。
  • 根据这个 Jira 案例:jira.grails.org/browse/GRAILS-11466 这个错误应该在 2.4.1 中修复,但它似乎又回到了 2.4.3。谁能确认一下?
猜你喜欢
  • 1970-01-01
  • 2021-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多