この投稿への簡単な質問は次のとおりです。
GrailsのWEB-APPディレクトリ外のファイルにアクセスするにはどうすればよいですか?
別のシステムといくつかの共有リソース(画像)を持つgrailsアプリケーションがあります。そこで、新しいファイルを指すシンボリックリンクを作成しました。これらのファイルはユーザーによってアップロードされるため、意図的にWebルートの外部に配置されます。
例えば:
/images/country_flags/ --> /some/directory/with/images/country_flags/
したがって、Tomcatが画像を要求すると、次のようになります。
/images/country_flags/flag1.png
それは本当に行きます:
/some/directory/with/images/country_flags/flag1.png
Tomcatはデフォルトでシンボリックリンクをサポートしていないことを理解していますが、META-INFディレクトリに次の情報を含むcontext.xmlファイルを作成することで有効にできます。
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/images" allowLinking="true"></Context>
Grailsでは、scriptsディレクトリに「_Events.groovy」という新しいファイルを作成することでTomcatを設定できます。
インターネットを見回すと、これでうまくいくはずです。
eventConfigureTomcat = {tomcat ->
println "Changing the configuration for tomcat"
println serverContextPath
def ctx=tomcat.host.findChild(serverContextPath)
ctx.allowLinking = true
println "Configuration changed"
}
ただし、コンソールに次の出力が表示されます。
Changing the configuration for tomcat
/
| Error Exception occurred trigger event [ConfigureTomcat]: Cannot set property 'allowLinking' on null object (Use --stacktrace to see the full trace)
私のapplication.propertiesファイルは次のとおりです(コンテキストが「/」に変更されていることに注意してください)。
#Grails Metadata file
#Wed Sep 26 09:56:39 BST 2012
app.context=/
app.grails.version=2.1.1
app.name=SomeCoolApp
app.version=0.1
plugins.google-visualization=0.5.3
plugins.mail=1.0
plugins.quartz=1.0-RC2
plugins.searchable=0.6.3
plugins.spring-security-core=1.2.7.3
これらの方法はどちらも機能しません。誰かが_Events.groovyメソッドを使用してTomcatを構成する方法に関するドキュメントを教えてもらえますか?コンソールに出力しようとする以外に、コンテキストがnullである理由をトラブルシューティングする方法はありますか?