私のアプリケーションは、appBase がコンテナーの外部にあり、セキュリティ ポリシーが厳密に維持されている共有 Tomcat ホスティング環境にデプロイされています。私は今、Freemarker テンプレートを導入しようとしていますが、これを取得しています:
Could not create a file template loader for current directory
java.security.AccessControlException: access denied (java.io.FilePermission C:\apache-tomcat\bin read)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
at java.security.AccessController.checkPermission(AccessController.java:546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.lang.SecurityManager.checkRead(SecurityManager.java:871)
at java.io.File.exists(File.java:731)
at freemarker.cache.FileTemplateLoader$1.run(FileTemplateLoader.java:124)
at java.security.AccessController.doPrivileged(Native Method)
at freemarker.cache.FileTemplateLoader.<init>(FileTemplateLoader.java:122)
at freemarker.cache.FileTemplateLoader.<init>(FileTemplateLoader.java:108)
at freemarker.cache.FileTemplateLoader.<init>(FileTemplateLoader.java:94)
at freemarker.cache.TemplateCache.createDefaultTemplateLoader(TemplateCache.java:120)
at freemarker.cache.TemplateCache.<init>(TemplateCache.java:115)
at freemarker.template.Configuration.<init>(Configuration.java:110)
at freemarker.template.Configuration.<clinit>(Configuration.java:96)
at org.springframework.ui.freemarker.FreeMarkerConfigurationFactory.newConfiguration(FreeMarkerConfigurationFactory.java:333)
at org.springframework.ui.freemarker.FreeMarkerConfigurationFactory.createConfiguration(FreeMarkerConfigurationFactory.java:266)
at org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean.afterPropertiesSet(FreeMarkerConfigurationFactoryBean.java:6
0)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$6.run(AbstractAutowireCapableBeanFactory.java:1504)
Freemarker のセキュリティ ポリシーの推奨事項は守られていると思いますが。
Spring を使用して構成を注入する:
<bean id="freemarkerMailConfiguration"
class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
<property name="templateLoaderPath" value="file:/C:/apache-tomcat-files/mailtemplates/"/>
</bean>
または手動で作成する
Configuration freemarkerMailConfiguration = new Configuration();
File dir = new File("C:/apache-tomcat-files/mailtemplates");
freemarkerMailConfiguration.setDirectoryForTemplateLoading(dir);
例外は、構成の引数なしのコンストラクターで発生しているようです。おそらく、変更する前にデフォルトの場所からロードしようとします- setDirectoryForTemplateLoading() を使用するのは遅すぎます。
デフォルトが範囲外の場合、ディレクトリを正常に設定できるかどうか誰か教えてもらえますか?
どうもありがとう、ニール