我需要使用 Tomcat
容器从 servlet 应用程序读取一个 application.properties
文件。该文件不能包含在我的 war
中,因此它不能以任何方式位于 webapps 或 Tomcat
根文件夹下。该文件必须位于文件夹中的某个位置。我也无法使用 FileInputStream
读取属性文件。我唯一的选择是为文件夹/目录定义 JNDI
名称,并在运行时查看 JNDI
属性以找到读取文件的文件夹位置。你有任何可行的例子吗?
最佳答案
我已经为自己找到了一个解决方案,阅读了以下类似的帖子和文章。
Reading a global variable from tomcat with JNDI. Example not working
我已经为我的 Web 应用程序在我的上下文中定义了一个环境 \conf\Catalina\localhost\mywebapp.xml 如下....
<Environment name="propertiesfilelocation" value="E:\\tmp\\application.properties"
type="java.lang.String" override="false"/>
然后使用 JNDI 查找访问我的属性文件以获取文件名。
Context ctx = new InitialContext();
Context envCtx = (Context)ctx.lookup("java:comp/env");
String propertiesFileLocation = (String) envCtx.lookup("propertiesfilelocation");
LOGGER.info("String property === " + propertiesFileLocation);
properties.load(new FileInputStream(propertiesFileLocation));
@home:是的,你是对的,它涉及 FileInputStream。但是,我对这个解决方案很满意,因为我不再在我的 Java 代码中硬编码我的文件夹位置,这使我的应用程序更具可移植性。
关于java - 使用 Tomcat JNDI 创建文件资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19331039/