背景
开发一个简单的web应用程序(Eclipse + JBoss + Apache )来生成XML文件。
问题
“业务区域”列表对数据库进行查询,“列群集”列表使用选定的“业务区域”项查询数据库。这两种查询都是唯一存储的外部文本文件。
这些文件目前存储在下列地点:
然后将这些种子用于PreparedStatements的种子。
源代码
读取SQL代码的方法可能类似于:
private String getSQL() {
String result = "";
try {
BufferedReader br = open( "business-areas.sql" );
String line = null;
while( (line = br.readLine()) != null ) {
result += line;
}
br.close();
}
catch( Exception e ) {
e.printStackTrace();
}
return result;
}问题
我想知道:
META-INF是一个好的位置,还是META-INF/resources的首选?)open方法以使它找到要打开的文件?)我已经准备好了JNDI来建立数据库连接,但是如果可能的话,我宁愿不使用JNDI来获取文件的句柄。
相关站点
谢谢!
发布于 2011-03-03 01:24:56
正确的位置(以及常见的做法)是将它们放在您的source目录下,然后将其编译到WEB-INF/classes目录中。我不知道您在回答@Dave时所说的“类目录是不稳定的”是什么意思,但这就是大多数Java web应用程序(如果不是全部的话)存储东西的方式。WEB-INF/classes不仅仅适用于Java类。常见的情况是,日志属性文件(如log4j)、Hibernate和Spring文件存储在source目录下,您可以使用以下内容安全地访问这些文件:-
// in this case, the business-areas.sql is located right under "source/sql" directory
InputStream is = getClass().getClassLoader().getResourceAsStream("sql/business-areas.sql");
BufferedReader br = new BufferedReader(new InputStreamReader(is));有关使用META:元INF的目的是什么?的一些有用信息
发布于 2013-04-03 19:34:50
我和Dave一样担心将资源与classes和lib混合在一起,所以我做了一些修改,找到了这个解决方案:
我将我的资源文件放在WEB-INF/resources中。然后,为了装载它们,我使用了这个:
getClass().getClassLoader().getResourceAsStream("../resources/main.xml");我不知道使用..是一个更干净的解决方案,但我的文件至少不与类或jars混合。
发布于 2011-03-03 00:25:36
我会将它们放在WEB/类中,或者将它们捆绑在application.jar中,后者将放在WEB/lib中。然后您可以从类路径加载它们,如这里和这里所解释的那样。
更好的是,如果您使用maven,最佳实践是将这些类型的文件放入src/main/resources中,然后maven将为您处理这个问题。
https://stackoverflow.com/questions/5175128
复制相似问题