Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails2.0-是否正确使用serverURL进行生产?_Grails_Grails 2.0 - Fatal编程技术网

Grails2.0-是否正确使用serverURL进行生产?

Grails2.0-是否正确使用serverURL进行生产?,grails,grails-2.0,Grails,Grails 2.0,Grails2.0在开发和测试环境中使用Grails.serverURL的方式发生了变化(如中所述)。然而,在Tomcat上的生产部署方面,我对serverURL有几点看法。serverURL(生产模式)似乎有几个选项: (新增)此设置只是“冒烟和镜像”,因为Tomcat和Jetty有方法控制应用程序的URL处理方式,直至“应用程序”级别 使用它来指定服务器(正如Config.groovy中指出的“TODO”) 不要按照Grails贡献者之一的指示使用它,即“删除serverURL属性并让Gr

Grails2.0在开发和测试环境中使用Grails.serverURL的方式发生了变化(如中所述)。然而,在Tomcat上的生产部署方面,我对serverURL有几点看法。serverURL(生产模式)似乎有几个选项:

  • (新增)此设置只是“冒烟和镜像”,因为Tomcat和Jetty有方法控制应用程序的URL处理方式,直至“应用程序”级别

  • 使用它来指定服务器(正如Config.groovy中指出的“TODO”)

  • 不要按照Grails贡献者之一的指示使用它,即“删除serverURL属性并让Grails生成相对于当前运行的应用程序的URL应该总是安全的。”不清楚这是否扩展到生产环境(在不生成电子邮件时)

  • 改为使用另一种方法,即grails.app.context,grails 2.0手册中未对其进行说明,但在某些参考文献中进行了描述
您能否澄清对于Jetty和Tomcat(生产模式)serverURL和app.context的正确使用


谢谢

所以grails.serverURL配置参数的基本思想是允许createLink方法在创建绝对链接时知道您想要的URL。如果未指定grails.serverURL配置参数,则它将默认为(除非指定了server.port,否则8080将是任意值)

应用程序上下文告诉Jetty/Tomcat在不同的根目录下运行应用程序。例如,指定

grails.app.context="/myApp"
将应用程序根目录设置为“/myApp”。在生产模式中,应用程序上下文由web容器处理,并且忽略此指令。配置生产jetty或tomcat实例以在不同上下文中运行应用程序的选择完全取决于您的技术要求

所以,真正需要考虑的是,在你的应用程序中,你在你的GSP中创建了很多的绝对链接,在那里你需要定义一个“生产”服务器URL?如果没有,则不需要指定它;如果是,则需要指定它

作为个人偏好,在创建新的grails项目之后,我总是做的第一件事是进入配置并将grails.app.context更改为“/”。。。它使镜像生产环境对我来说更容易


希望这能把事情弄清楚

好问题!我只是在寻找一种正确的方法来获取实际的
serverURL
,而不需要在Config.groovy中(在Grails2.1应用程序中)显式地配置它

自Grails 2.0以来,有一个超级有用的类叫做,您可以在任何地方使用,例如在服务中:

import org.codehaus.groovy.grails.web.mapping.LinkGenerator

Class MyService {
    LinkGenerator grailsLinkGenerator

    String serverUrl() {
        // Generate: http://localhost:8080/link-generator
        grailsLinkGenerator.serverBaseURL
    }
}

谢谢Haki先生的关心

谢谢你的详细回复。单独但相关,我在简单地使用UrlMapping时遇到了很多麻烦,例如通过URI规范访问html页面。我创建了类似于:“/test2”(uri:“/test2.html”)的文件,但是grails没有找到test2.html文件,即使它位于web应用程序或视图目录的顶部。你知道如何使用这个映射吗?。。。我现在有了这个工作——URI。我不知道为什么它以前从未工作过,但现在似乎找到了该文件。这对于保持生产环境和开发环境之间的一致性非常有帮助。谢谢