Grails:在生产环境中的Web应用程序上定位文件



我在我的Grails项目的Web应用程序中有一个文件..在某些APNs插件的配置文件中将配置如下

    environments {
    development {
        apns {
            pathToCertificate = "web-app/apns-dev.p12"
            password = "password"
            environment = "sandbox"
        }
    }
    test {
        apns {
            pathToCertificate = "web-app/apns-dev.p12"
            password = "password"
            environment = "sandbox"
        }
    }
    production {
        apns {
            pathToCertificate = "apns-prod.p12"
            password = "password"
            environment = "production"
        }
    }
}

把生产的P12没有"web-app"的原因是因为我注意到文件直接位于根目录下的生产环境中,但它给了我fileNotFoundException..那么我如何找到它呢?

apns 插件页面状态

如果您无法访问服务器的文件系统,您还可以将 pathToCertificate 替换为 certificateResourcePath,并将其设置为相对于 src/java 的证书路径。例如,如果您的证书位于 src/java/mycert.p12 中,则可以设置 certificateResourcePath=mycert.p12。

这可能是你最好的选择,允许你使用相对于 src/java 的路径而不是绝对路径。

这是获取文件绝对路径的一种(有点笨拙的)方法:

首先,将文件放在classpath的某个地方(例如,conf目录中的"资源"目录)。然后,将pathToCertificate行更改为:

pathToCertificate = ApplicationHolder.application.parentContext.getResource("classpath:resources/apns-dev.p12").file.absolutePath

它应该解析为文件系统上该文件的绝对路径。

相关内容

  • 没有找到相关文章

最新更新