Wildfly war部署获取资源文件的路径

时间:2016-10-06 06:52:14

标签: java wildfly

我有一个使用外部工具创建报告的网络应用程序。此工具需要一个绝对路径指向我想要生成报告的模板。

我将模板部署为我的war文件中包含的资源。

当使用爆炸战时,我可以做这样的事情,效果很好:

String path = Thread.currentThread().getContextClassLoader().getResource(resourceFile).getPath();
File f = new File(path);
String absoluteFileName = f.getAbsolutePath();

使用未爆炸的战争,这不起作用。有没有机会做这样的事情?

我不需要资源的内容,所以getResourceAsStream(..)不是我想要的。

1 个答案:

答案 0 :(得分:2)

您必须使用getResourceAsStream()并将内容写入已知位置。您可以使用以下内容将部署中的模板复制到临时文件中。

final InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(resourceFile);
final Path f = Files.createTempFile("template", ".txt");
Files.copy(in, f);
final String absoluteFileName = f.toAbsolutePath().toString();

如果您有一组已知模板,则可以使用@javax.ejb.Singleton @javax.ejb.Startup EJB。