gpt4 book ai didi

java - WEB-INF 中资源的奇怪之处

转载 作者:行者123 更新时间:2023-12-01 13:56:25 25 4
gpt4 key购买 nike

因此,我尝试使用 GetResource 来引用打包在 war 中的文件,作为我的 grails 应用程序的一部分:

grailsApplication.mainContext.getResource) 

奇怪的是,如果我在 OSX 上使用“grails test war”构建它,它可以在 Elastic Beanstalk(Tomcat 7 32 位)上运行。但是,当 CI 服务器(在 Linux EC2 实例上运行的 TeamCity)使用相同的命令构建和部署它时,永远找不到该资源。

我看过很多文章讨论某些环境如何无法解开 war ,但我认为这不是问题,因为这是发送到同一环境的两场不同的 war 。一场 war 有效,另一场则无效

我检查过的事情:1)war文件的大小几乎相同,并且都在WEB-INF中包含文件2)两台机器上的Java版本相似(JDK 1.6)3)我在两者上使用相同版本的grails(2.0.4)4)我在两者上使用相同的命令(grails test war)5) 代码是相同的(都来自同一个 git repo)

有什么想法吗?我读过我可以使用 GetResourceAsStream 但我使用的是回复物理文件的电子邮件插件。我可以每次都将流写入文件,但这并不是什么选择。

有人吗?

最佳答案

Grails 有一个用于此目的的 bean,名为 grailsResourceLocator。这适用于开发环境和部署环境。示例:

package com.mrhaki.templates

import groovy.text.SimpleTemplateEngine

class MessageService {

def grailsResourceLocator

String template

String followUpMessage(final String user, final String subject) {
final Resource template = grailsResourceLocator.findResourceForURI(template)
final Map binding = [user: user, subject: subject]
final SimpleTemplateEngine templateEngine = new SimpleTemplateEngine()
templateEngine.createTemplate(template.URL).make(binding)
}
}

此示例取自here .

关于java - WEB-INF 中资源的奇怪之处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19601602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com