我正在使用JBoss4.0.1和Struts2.1.6
我有一个应用程序,它有一些配置文件(文件夹WEB-INF / config中的appConfig.xml)。 此配置文件包含要读取的其他文件的相对路径。(other.xml,some.xml等)。应用程序在default / deploy
中部署为.war我有一个用于读取配置文件的Utility包。我在default / lib
中部署了utility.jar在ontextInitialized
的c ServletContextListener
方法中,我正在阅读appConfig.xml
并将IOStream
传递到appConfig
到我的实用工具类,后者读取此文件并加载所有上下文相对路径。
我现在如何阅读这些文件?因为如果我尝试创建输入流,则返回NULL。
我试过跟在Utility Class中。
从ServletContextListener的contextInitialized方法内部调用read方法
public void read(){
this.getClass().getClassLoader.getResourceAsStream("/WEB-INF/config/some.xml");
}
public void read(ClassLoader cl){
cl.getResourceAsStream("/WEB-INF/config/some.xml"); --> Null
cl.getResourceAsStream("/../config/some.xml"); --> Null
cl.getResourceAsStream("../config/some.xml"); --> Null
}
public void read(ServletContext ct){
ct.getResourceAsStream("/WEB-INF/config/some.xml");.
ct.getResourceAsStream("/../config/some.xml"); --> Null
ct.getResourceAsStream("../config/some.xml"); --> Null
}
答案 0 :(得分:0)
以下任何一个都不会起作用,因为/ WEB-INF / config不在classpath中,所以classloader对它一无所知,
public void read(){
this.getClass().getClassLoader.getResourceAsStream("/WEB-INF/config/some.xml");
}
public void read(ClassLoader cl){
cl.getResourceAsStream("/WEB-INF/config/some.xml"); --> Null
cl.getResourceAsStream("/../config/some.xml"); --> Null
cl.getResourceAsStream("../config/some.xml"); --> Null
}
那些2不起作用,因为它超出了上下文(...不能是第一个元素),
public void read(ServletContext ct){
ct.getResourceAsStream("/../config/some.xml"); --> Null
ct.getResourceAsStream("../config/some.xml"); --> Null
}
我不太明白你的意图。如果您知道该文件位于“/WEB-INF/config/some.xml”中,为什么要从“/../ config / some.xml”中读取它?
将配置文件存储在战争中并不是一个好主意。你应该考虑将它移到其他地方。