Grails不在Tomcat环境中编译

时间:2014-01-29 03:26:10

标签: tomcat grails

我只是将我之前的问题转发到备用StackOverflow论坛社区。但是这个帖子目前被搁置,因为我的帖子问题更注重技术,而不仅仅是一个通用的问题。

这就是


我目前正在研究客户的债务管理软件,我的一项关键任务是改进和增强应用程序的功能和特性。此应用程序完全用Grails编写。

最近,我收到了一位客户的电子邮件,其中说明了软件背后的历史背景,其中一个基本问题是Grails应用程序“无法编译”。这意味着它只能在Groovy环境中编译。但它不会在Tomcat环境中编译。尽管Grails框架已经内置了Tomcat服务器运行时环境包,但它的版本与实际的Tomcat服务器部署包之间存在显着差异。客户端还说明无法编译的原因是因为应用程序由于其类和函数的数量复杂而存在太多的不兼容问题。

请问客户声称这个陈述是多么真实有效? Grails应用程序不适合在发布后的Tomcat服务器生产环境中使用吗?我只是想知道你对它的想法可能并且热衷于听取你的建议我可以做些什么来进一步分析和研究这个问题,然后我可以自信地回到我的客户讨论这些所谓的'未编译的可能的替代方案'状态问题。

这是附加的错误日志(FYI)

enter image description here

2 个答案:

答案 0 :(得分:1)

你的问题在技术上并不合理,但我想我明白你在问什么,所以我会试一试。

你实际上并没有在tomcat环境中编译某些东西,而是在tomcat中运行一些东西。但是grails应用程序可以使用grails run-app运行,以便直接从grails环境运行它。这适合开发,但不适合生产。

Grails确实有war命令可以创建战争。此时,它就像任何其他可以在诸如tomcat之类的Web容器中运行的webapp一样。

Grails应用程序实际上需要groovy来编译它,因为它是groovy代码,但是创建一个war会使它在web容器中可以运行。

答案 1 :(得分:1)

这个问题并没有多大意义。是的,Grails附带了一个Tomcat插件,可以使本地开发更方便,但这完全独立于您部署到生产的方式和位置。事实上,Grails之前使用Jetty作为其开发模式服务器,并且仍然有一个插件。

当您将Grails应用程序部署到“真实”服务器时,您只需创建一个WAR文件。最方便的方法是运行grails war,但这可以自定义。这将编译所有代码,包括GSP,并打包包括JAR依赖项在内的所有内容。然后将它部署到Tomcat / WebLogic / JBoss / whatever - 几乎任何servlet容器。之后没有编译,因为WAR文件包含已编译的类。此外,无需在服务器上安装Grails或Groovy,因为您创建的WAR文件将包含Groovy JAR,Grails JAR以及WAR中的所有其他相关JAR。

更可能的问题是,您正在开发代码并与它们共享,并且他们正在尝试进行构建和部署,但是存在依赖性问题。这不太可能与Tomcat有任何关系。