spring - 如何在 Tomcat 7 上部署 Grails 3 应用程序?

标签 spring tomcat grails gradle tomcat7

我有一个 Grails 应用程序,我想将其部署到 tomcat 实例。使用的相关库版本:

Grails Version: 3.2.0
Groovy Version: 2.4.7
JVM Version: 1.7.0_79
Tomcat Version: 7.0.39

我建了一个WAR文件(使用grails war),上传到服务器,放到webapp目录下,重启tomcat。 WAR 文件像往常一样被解压,但是当试图访问 webapp 的索引页面时,它只返回错误 404。如果我手动将一个名为 ìndex.html 的文件放在 webapp 的目录中,那么这个文件就会被提供。因此,我得出结论,tomcat 根本没有启动该应用程序。

我试图检查日志是否有错误,但 catalina.out 几乎是空的。重新部署我的 webapp 会产生以下日志输出:

INFO: Reloading Context with name [/myapp] has started
Oct 18, 2016 1:56:30 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/<tomcat-path>/webapps/myapp/WEB-INF/lib/javax.el-api-2.2.4.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/el/Expression.class
Oct 18, 2016 1:57:43 PM org.apache.catalina.core.ApplicationContext log
INFO: 1 Spring WebApplicationInitializers detected on classpath
Oct 18, 2016 1:57:43 PM org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/myapp] is completed

我在那里看不到任何严重错误。我怀疑的一件事是我的项目没有 web.xml 文件,但我读到这在 Grails 3 和 servlet 容器 > 版本 3.0 中不再需要 web.xml(tomcat 7 支持 servlet 3.0 版)。我尝试过的事情:

  • 在服务器上以独立模式启动应用程序(使用 java -Dgrails.env=prod -jar myapp.war)。这工作得很好,我可以在端口 8080 上本地访问它(我不能从远程尝试它,因为只有我真正想要部署到的 tomcat 实例被允许通过防火墙)。
  • 应用官方 grails 文档 ( http://docs.grails.org/latest/guide/deployment.html ) 中的建议:将依赖范围 org.springframework.boot:spring-boot-starter-tomcat 设置为 provided
  • build.gradle中的tomcat版本设置为ext['tomcat.version'] = '7.0.72'(官方文档推荐,我可以不要使用与服务器 (7.0.39) 上的 tomcat 完全相同的版本,因为某些库在 Maven Central 上不适用于此版本。

所有尝试都没有任何效果。我非常感谢任何提示、进一步的调试技巧或我可能忽略的事情。

提前致谢!

最佳答案

这是一个 Grails 错误,将在今天发布的 3.2.1 中修复。 3.2.0 的解决方案见如下命令:

https://github.com/grails/grails-core/issues/10196#issuecomment-251155196

关于spring - 如何在 Tomcat 7 上部署 Grails 3 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40108167/

相关文章:

spring - 如何在 Swagger 中连接 importMappings 和 yaml

java - 如何修复 [Error] realm = plugin>org.apache.maven.plugins :maven-compiler-plugin:3. x(在使用 Spring Boot 时发生)

java - SymmetricDS 客户端抛出 AuthenticationException

google-chrome - Google Chrome 显示的是 tomcat 图标而不是我的网站图标

testing - 在grails集成测试中重写服务方法

grails - Grails将所有日志记录到一个文件

ios - AFNetworking - 序列化连接

java - 无需 XML 的 AspectJ 加载时编织配置

java - 找不到适合响应类型和内容类型的 HttpMessageConverter

java - tomcat v8.0 无法在 ubuntu 上启动