我在JBoss 4.0.2中有一个部署为war的servlet。我有一个部署应用程序的属性文件。我应该在哪里放这个文件?在jboss server \ default \ conf文件夹的conf目录下?如何以便携式方式加载该属性文件?在作为战争部署在JBoss中的java servlet中加载属性文件
回答
来加载性能在便携式方式文件,最好的办法是把它放在Web应用程序的类路径(无论是在JAR下WEB-INF/lib/
或下WEB-INF/classes/
或应用服务器的classpath,如果你想能够编辑该文件而无需重新打包您的Web应用程序)并使用Class#getResourceAsStream(String)
。
以下代码获取一个InputStream
为驻留在同一个包作为servlet在其中执行的代码属性文件:
InputStream inStream = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("myfile.properties");
然后,load(InputStream)
它变成一个Properties
对象(跳过异常处理) :
Properties props = new Properties();
props.load(inStream);
最好的地方,把它就是网络应用自己的文档根目录下,如“./WEB-INF/myapp.properties”,即相对于在servlet容器解开你的.war
或.ear
文件。您可以直接在.war
中提供属性文件。
ServletContext
有一个方法getRealPath(String path)
返回文件系统中的实际路径。使用真实路径,您可以将其加载到Properties
集合中。
更新 您的评论代码试图查找为“/”真正的路径,你应该问你的属性的相对路径文件,如:
String propertiesFilePath = getServletContext().getRealPath("WEB-INF/application.properties");
Properties props = properties.load(new FileInputStream(propertiesFilePath));
所以我尝试了以下内容: String propertiesFilePath = getServletContext()。getRealPath(“/”)+ File.separator +“WEB-INF”+ File.separator +“application.properties”; properties.load(new FileInputStream(propertiesFilePath)); 我得到一个FileNotFoundException。我不明白我做错了什么。 – Carlosfocker 2010-01-06 20:13:49
如果属性文件可以与应用程序一起部署使其成为源代码树的一部分。这将导致属性文件位于WEB-INF/classes文件夹中。
然后可以使用
Properties properties = loadProperties("PropertyFileName.properties", this.getClass());
...
public static Properties loadProperties(String resourceName, Class cl) {
Properties properties = new Properties();
ClassLoader loader = cl.getClassLoader();
try {
InputStream in = loader.getResourceAsStream(resourceName);
if (in != null) {
properties.load(in);
}
} catch (IOException e) {
e.printStackTrace();
}
return properties;
}
只要得到ServletContext中的保持和再
InputStream stream = getServletContext().getResourceAsStream("/WEB-INF/log4j.properties");
Properties props = new Properties();
props.load(stream);
这将总是工作,无论你是否部署战争或战争爆炸阅读。
- 1. 在Jboss部署战争 - MAVEN
- 2. JBoss战争部署
- 3. JBoss 6 - 战争部署
- 4. 将战争部署到JBOSS
- 5. 在jboss上部署战争as7
- 6. Jboss不部署战争,JBAS011006
- 7. JBoss AS 7中的战争部署
- 8. 在jboss的部署目录之外部署战争
- 9. 在jboss中部署不同名称的相同战争5
- 10. 在linux上部署战争
- 11. 的JBoss 7.1没有部署战争
- 12. ant任务在jboss上部署/取消部署战争
- 13. jboss 7部署问题与战争
- 14. GlassFish 3中部署的战争文件
- 15. 战争文件部署
- 16. JBOSS战争部署无法使用mysqlds.xml
- 17. JBoss 4.x没有将src文件夹部署到战争中
- 18. 部署grails 2.1.1战争到JBoss 5.1
- 19. 在战争中共享JSP文件,在java中使用forward Servlet
- 20. 从intellij和maven在jboss 7上部署爆炸式战争
- 21. Jboss 7战争部署失败
- 22. 如何使用Jboss Tools Eclipse插件在Jboss中“热”部署战争依赖?
- 23. Glassfish战争部署Jar未加载
- 24. 在servlet中加载属性文件?
- 25. 通过命令行在Jboss 7.0.1中部署战争
- 26. JBoss 6 - 在战争包装中部署ejb
- 27. 的Jboss 7部署支柱战争文件
- 28. 战争部署init方法
- 29. 战争部署玩
- 30. 部署到JBoss 7的Resteasy战争抱怨没有发现“org.resteasy.plugins.server.servlet.ResteasyBootstrap”
需要这个项目得到取消,所以我从未跟进过。 – Carlosfocker 2010-12-29 15:09:03