我对grails很新。我有一个我想要运行的预先存在的应用程序。应用程序构建并正确运行但我无法弄清楚它正在使用的服务器 - 无论是默认的VMware还是Tomcat实例
我在我的BuildConfig.groovy
中包含了tomcat插件,如下所示
build ':tomcat:7.0.52.1'
我假设应用程序实际上是在tomcat服务器上运行,但我知道无法确认它。在我的GGTS的服务器选项卡上,我只看到一个VMware实例,但没有看到Tomcat实例。这是正常的吗?
我还尝试在部署应用程序时检查日志,方法是将日志级别更改为verbose
中的BuildConfig.groovy
,但这也没有给我足够的信息来获取答案,这是我的搜索结束。
对于那些感兴趣的人,我的主要目的是在tomcat上配置SSL证书(如果它还没有完成)。对此有任何帮助非常感谢。
答案 0 :(得分:2)
可以将Grails WAR文件部署到GGTS管理的服务器,但我从未这样做过。我确信它很容易做到,但我从来没有这么做过。这在一个没有嵌入式(但是完整的)Tomcat实例的框架中更有意义,另外还有一个选项可以将一个完整的嵌入式Jetty实例换成1行配置更改:http://grails.org/plugin/jetty
使用" Run As |在GGTS中运行应用程序时Grails Command(run-app)"你从命令行运行grails run-app
就像做同样的事情。所有GGTS都可以运行应用程序或测试,甚至generate-
和create-
脚本都会调用相同的脚本,但是在一个单独的VM中,它会被隔离,并且它会被捕获并在IDE中显示stdout和stderr。所以你不太可能使用tc服务器(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。这使用了一个"爆炸的WAR"部署风格,它告诉Tomcat你的项目目录是一个解压缩的WAR文件,它配置css和js dirs,图像目录,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
答案 1 :(得分:0)
grails run-app命令创建一个嵌入式servlet容器,默认情况下使用Tomcat。所以你使用grails插件中的Tomcat,而不是GGTS附带的vFabric服务器。
如果您使用grails run-app -https
,则会为您生成自签名证书。
当然,当您将WAR文件部署到生产服务器时,您必须在那里添加SSL证书。