WEB-INF中资源的怪异

时间:2013-10-26 00:50:57

标签: java grails elastic-beanstalk

所以我尝试使用GetResource引用战争中打包的文件作为我的grails应用程序的一部分,使用:

grailsApplication.mainContext.getResource) 

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

我看过很多文章都在谈论某些环境如何解开战争,但我不认为这是问题,因为这是两次不同的战争被发送到相同的环境。一场战争有效,另一场没有

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

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

任何?

1 个答案:

答案 0 :(得分:1)

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