0

我对grails很陌生。我有一个想要运行的预先存在的应用程序。该应用程序可以正确构建和运行,但我无法确定它正在使用的服务器 - 无论是默认的 VMware 还是 Tomcat 实例

我在我的中包含了tomcat插件,BuildConfig.groovy如下所示

build ':tomcat:7.0.52.1'

我假设该应用程序实际上是在 tomcat 服务器上运行,但我不知道如何确认它。在我的 GGTS 的服务器选项卡上,我只看到一个 VMware 实例,而没有看到 Tomcat 实例。这是正常的吗?

我还尝试通过将日志级别更改为verbosein来在部署应用程序时检查日志BuildConfig.groovy,但这也没有给我足够的信息来获得我的搜索结束的答案。

对于那些感兴趣的人,我的主要目标是在 tomcat 上配置 SSL 证书(如果尚未完成)。非常感谢您对此的任何帮助。

4

2 回答 2

2

可以将 Grails WAR 文件部署到 GGTS 管理的服务器,但我从未这样做过。我确信这很容易做到,但我从来不需要这样做。这在不附带 Tomcat 的嵌入式(但完整)实例的框架中更有意义,另外还可以选择通过 1 行配置更改将其替换为完整的嵌入式 Jetty 实例:http ://grails.org/plugin/jetty

当您在 GGTS 中使用“Run As | Grails Command (run-app)”运行应用程序时,您所做的事情与从命令行运行grails run-app时完全相同。GGTS 所做的一切都是为了运行应用程序或测试,甚至generate-create-脚本都调用相同的脚本,但在单独的 VM 中,因此它是隔离的,它在 IDE 中捕获和显示 stdout 和 stderr。因此,您不太可能使用 tc Server(VMware 是公司(或者曾经是,现在是 Pivotal),vFabric 是平台,tc Server 是他们出售许可证和支持的增强版 Tomcat)。如果您想完全确定,请转到 Spring 仪表板并卸载 tc Server,除非您计划将来部署到它并希望在本地进行测试。

另一个快速测试是(假设您没有自定义 404 页面)是为正确的主机、端口和上下文请求一个 url,但在您的应用程序中请求一个不存在的页面或控制器。404 页面应该显示 Tomcat,但 tc Server 页面应该显示“tc Server”,类似于以下内容:在此处输入图像描述

因此,如果您的应用名称是“foo”,请请求

http://localhost:8080/foo/whereAreWeRunningFrom?

或类似的东西。

此外,如果 GGTS 部署到 tc Server(甚至是 Tomcat,但它是自己托管的 Tomcat,而不是 Grails 中无法配置或访问的嵌入式 Tomcat),它会通过创建 WAR 文件并部署它来做到这一点,然后将使用生产环境。所以重新加载将被禁用。如果您可以更改控制器、服务、taglib、i18n 文件、GSP 等并且更改生效,那么您使用的是 Grails 配置的 Tomcat。这使用了“exploded WAR”部署风格,它告诉 Tomcat 你的项目目录是一个解压缩的 WAR 文件,它配置 css 和 js 目录、图像目录、WEB-INF 等指向你的项目文件夹不是真正的解压 WAR 文件。

您可以使用该-https标志在本地运行 SSL,请参阅http://grails.org/doc/latest/ref/Command%20Line/run-app.html - Grails 将首次为您创建一个自签名证书,您可以继续使用它,或者使用此处描述的方法来替换它: http: //grails.1312388.n4.nabble.com/Specifying-the-SSL-certificate-in-Grails-2-x-td4629128 .html

于 2014-10-08T18:54:48.840 回答
0

grails run-app 命令创建一个嵌入式 servlet 容器,默认使用 Tomcat。因此,您使用的是 grails 插件中的 Tomcat,而不是 GGTS 附带的 vFabric 服务器。

如果您使用grails run-app -https自签名证书,将为您生成。

当然,当您将 WAR 文件部署到生产服务器时,您必须在其中添加 SSL 证书。

于 2014-10-08T18:47:48.940 回答