首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阅读Web应用资源

阅读Web应用资源
EN

Stack Overflow用户
提问于 2011-03-03 00:14:44
回答 3查看 23.3K关注 0票数 6

背景

开发一个简单的web应用程序(Eclipse + JBoss + Apache )来生成XML文件。

问题

“业务区域”列表对数据库进行查询,“列群集”列表使用选定的“业务区域”项查询数据库。这两种查询都是唯一存储的外部文本文件。

这些文件目前存储在下列地点:

  • WebContent/META-INF/business-areas.sql
  • WebContent/META/column-clusters.sql

然后将这些种子用于PreparedStatements的种子。

源代码

读取SQL代码的方法可能类似于:

代码语言:javascript
复制
  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;
  }

问题

我想知道:

  1. 将这些资产作为web应用程序的一部分进行部署的最佳实践是什么?(也就是说,META-INF是一个好的位置,还是META-INF/resources的首选?)
  2. 您会推荐哪些API来读取文件内容?(也就是说,如何编写open方法以使它找到要打开的文件?)

我已经准备好了JNDI来建立数据库连接,但是如果可能的话,我宁愿不使用JNDI来获取文件的句柄。

相关站点

  • 元数据
  • http://www.avajava.com/tutorials/lessons/where-do-i-put-resources-in-my-maven-project.html
  • http://docs.jboss.org/jbossweb/3.0.x/config/context.html
  • http://tomcat.apache.org/tomcat-4.0-doc/catalina/docs/api/org/apache/naming/resources/FileDirContext.html

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-03 01:24:56

正确的位置(以及常见的做法)是将它们放在您的source目录下,然后将其编译到WEB-INF/classes目录中。我不知道您在回答@Dave时所说的“类目录是不稳定的”是什么意思,但这就是大多数Java web应用程序(如果不是全部的话)存储东西的方式。WEB-INF/classes不仅仅适用于Java类。常见的情况是,日志属性文件(如log4j)、Hibernate和Spring文件存储在source目录下,您可以使用以下内容安全地访问这些文件:-

代码语言:javascript
复制
// 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的目的是什么?的一些有用信息

票数 6
EN

Stack Overflow用户

发布于 2013-04-03 19:34:50

我和Dave一样担心将资源与classeslib混合在一起,所以我做了一些修改,找到了这个解决方案:

我将我的资源文件放在WEB-INF/resources中。然后,为了装载它们,我使用了这个:

代码语言:javascript
复制
getClass().getClassLoader().getResourceAsStream("../resources/main.xml");

我不知道使用..是一个更干净的解决方案,但我的文件至少不与类或jars混合。

票数 4
EN

Stack Overflow用户

发布于 2011-03-03 00:25:36

我会将它们放在WEB/类中,或者将它们捆绑在application.jar中,后者将放在WEB/lib中。然后您可以从类路径加载它们,如这里这里所解释的那样。

更好的是,如果您使用maven,最佳实践是将这些类型的文件放入src/main/resources中,然后maven将为您处理这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5175128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档