我试图从.war文件内的servlet访问配置文件。问题是,默认文件路径是tomcat根本身,并且硬编码文件的路径似乎也不是一个选项。是否有可能通过ServletContext或任何Tomcat变量获取任何信息?如何从部署为.war文件并在Tomcat 5.5中运行的servlet访问配置文件?
1
A
回答
1
如果你把文件中的“类”目录特定的webapps目录下(./webapps/{servlet}/classes),那么你可以从一个Java类中做这个访问:
Class.getResourceAsStream(<filename>);
所以,如果你有在/ webapps /下myServlet/conf文件classes/conf.xml
Class.getResourceAsStream("conf.xml");
0
我并不确定这是“正确”的事情,但是在过去,我已经读取了配置文件路径的环境变量。
像这样的东西(你应该做的处理比这个例子,例外一个更好的工作......但你明白了吧):
public File getConfigurationFile() {
String envPath = System.getEnv("CONFIG_FILE"); // Use a better-named variable
if(envPath == null || envPath.equals("") {
throw new RuntimeException("CONFIG_FILE environment variable not set.");
} else {
File f = new File(envPath);
if(!f.exists()) {
throw new RuntimeException("CONFIG_FILE environment variable points to non-existent file");
} else if(!f.isFile()) {
throw new RuntimeException("CONFIG_FILE environment variable points to non-file entity.");
} else if(!if.canRead()) {
throw new RuntimeException("CONFIG_FILE points to unreadable file.");
} else {
return f;
}
}
}
1
甘道夫提供了“正确的”答案。你可以安全地在任何地方使用。这就是你需要的一切。
只是谨慎。有些人认为,因为可以从WAR中读取数据,所以这意味着在WAR中写入数据也是可以的。从字面意义上讲,有时候这是真的。但不总是。它几乎从不安全。
我提到这个是因为我继承了一个完全做到这一点的webapp。在分解的WAR目录中存储整个文件目录树。首次软件升级,“Poof!”所有那些仔细上传的数据文件都没有了。
因此将WARs视为只读。如果您需要编写,请在应用程序服务器外指定一个目录。最好将它作为web.xml文件中的可配置参数,以便您可以使用JNDI查找它,并且可以覆盖它以用于测试目的,而无需修改源代码。
相关问题
- 1. 如何将WAR文件部署到Tomcat 5.5?
- 2. 无法在Tomcat上访问已部署的WAR文件
- 3. 我想知道如何部署在Apache Tomcat上war文件,并使其运行
- 4. 如何在apache tomcat 8中将uaa部署为war文件?
- 5. 部署带配置的WAR文件
- 6. 在tomcat上部署war文件
- 7. 在Tomcat上部署war文件
- 8. 在aws apache tomcat上部署ans运行war文件
- 9. 如何从部署在同一个tomcat中的另一个war文件中重新配置war4文件
- 10. 如何在部署为war文件时运行Play Framework演变
- 11. Tomcat 8 Unicode文件名war文件部署问题
- 12. 如何保护部署在tomcat服务器中的war文件?
- 13. 如何在Docker容器的tomcat 7中部署war文件
- 14. 在Tomcat中手动部署WAR文件在Tomcat中手动
- 15. Maven嵌入式tomcat部署war文件
- 16. tomcat war部署
- 17. 在Tomcat中部署war
- 18. 在tomcat上部署的Servlet中写入文件的问题
- 19. 从NetBeans向Tomcat部署WAR文件时出现问题
- 20. 在Tomcat/Eclipse中部署WAR
- 21. 如何在Tomcat热部署期间覆盖war文件?
- 22. 如何通过uploadind .war文件在tomcat上部署java webapp
- 23. 在tomcat 5.5问题中的Spring部署
- 24. 在tomcat中部署WAR
- 25. 无法通过在JBoss7.1中部署.war文件来访问URL
- 26. 在Google计算引擎上的apache-tomcat中部署war文件
- 27. 用于在tomcat中部署war文件的安装页面
- 28. 如何解析grails war部署的外部配置文件中的类引用?
- 29. 如何在war文件内部运行java类文件
- 30. Apache Ant如何将.war文件部署到Tomcat