我需要使用Tomcat
容器从servlet应用程序读取application.properties
文件。该文件不能包含在我的war
中,因此它不能以任何方式位于webapps或Tomcat
根文件夹下。该文件必须在文件夹中的某处。我也不能使用FileInputStream
来读取属性文件。我唯一的选择是为文件夹/目录定义一个JNDI
名称,并在运行时查看JNDI
属性以查找文件夹位置以读取文件。你有没有工作的例子?使用Tomcat创建文件资源JNDI
回答
我已经写出了一个解决方案,自己阅读以下类似的帖子和文章。
Reading a global variable from tomcat with JNDI. Example not working
我已经 下定义的环境我的上下文里对我的web应用程序\的conf \卡塔利娜\本地主机\ 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代码对我的文件夹位置进行硬编码,这使得我的应用更加便携。
我有一个类似的问题略有不同的方法。我也玩弄了JNDI的想法,但我发现这有点矫枉过正。
我发现了臭名昭着的Balusc的另一篇文章。它允许你指定相对于你的tomcat安装的文件夹,并在那里部署你所有的属性文件。因此,您将配置保留在应用程序的外部,但不需要为每个应用程序的每个属性文件分别进行配置。
这的链接: Where to place and how to read configuration resource files in servlet based application?
,优选的选择是如下:
放入类路径,这样就可以通过 类加载器#的getResourceAsStream(加载)与类路径相对路径:
Properties properties = new Properties(); (Thread.currentThread()。getContextClassLoader()。getResourceAsStream(“filename.properties”)); 这里filename.properties应该被放置在一个根目录 之中,这些根由webapp的默认类路径覆盖,例如, Webapp/WEB-INF/lib,Webapp/WEB-INF/classes,Appserver/lib或JRE/lib。 如果propertiesfile是特定于webapp的,最好是将它放在WEB-INF/classes中的 。如果您在IDE中开发项目,则可以将其 放在src文件夹(项目的源文件夹)中。
也可以将其放在默认的 类路径之外的某个位置,并将其路径添加到应用服务器的类路径中。在 示例Tomcat中,您可以将其配置为 Tomcat/conf/catalina.properties的shared.loader属性。
我希望这会有所帮助。
Allan
- 1. Datanucleus(JDO)的Tomcat JNDI资源
- 2. Tomcat中的JNDI资源
- 3. 创建从代码JNDI资源?
- 4. 创建自定义JNDI资源
- 5. Tomcat 7 jndi - 缺少资源的javax.naming.NameNotFoundException
- 6. Tomcat的JNDI资源 - 类未发现:oracle.jdbc.xa.client.OracleXADataSource
- 7. ActiveMQ作为本地JNDI tomcat资源
- 8. Tomcat JNDI资源无法访问
- 9. Javamail作为tomcat中的JNDI资源
- 10. Eclipse:覆盖Tomcat中的JNDI资源
- 11. Apache Tomcat中的JNDI资源定义6
- 12. SpringBoot Tomcat嵌入式全局JNDI资源
- 13. Tomcat JNDI资源名称别名
- 14. 使用C#创建资源文件
- 15. 使用JMS Tibco EMS JNDI资源启动Tomcat时,Catalina出现NullPointerException
- 16. 在Tomcat中创建mssql数据库jndi资源时出现异常
- 17. 使用其他应用程序与Tomcat创建的JNDI数据源
- 18. 使用vC++中的资源文件创建exe文件
- 19. 为什么JNDI资源只能在Tomcat中调用一次?
- 20. 如何 - 电子表格/任何简单文件的Tomcat JNDI资源?
- 21. 未创建Maven资源文件夹
- 22. 创建资源文件的工具
- 23. 自动注册JNDI资源
- 24. Spring中的Autowire JNDI资源
- 25. 如何确定JNDI资源
- 26. 在Tomcat中加载JNDI资源时出现ClassNotFoundException
- 27. 如何设置JNDI资源在Tomcat中与IntelliJ IDEA的
- 28. 后自动找不到JNDI资源使用Tomcat 7.0.27和3.7.1 Atomikos公司
- 29. 无法在persistence.xml文件中调用JNDI资源
- 30. 如何使用文件类型创建资源包? NSBundles?
JNDI方法还需要一些'InputStream' ... – home