【问题标题】:Placement of data files for java web servicejava web服务的数据文件的放置
【发布时间】:2011-06-04 17:05:49
【问题描述】:

我正在 java 上编写一个简单的 Web 服务,它应该读取一个 xml 文件并为结果生成一个字符串。然而,我不知所措:

a) xml 文件应该放在文件系统的什么位置,以便 Web 服务可以访问它?

b) 从服务到文件的相对方式是什么

c) 或者,我如何将 xml 文件添加到项目中,以便将其与 Web 服务一起部署

我使用 NetBeans 作为 IDE,使用 maven 作为构建系统。

【问题讨论】:

    标签: java netbeans maven


    【解决方案1】:

    通常我会在我的 Web 应用程序中提供一个资源包 (.jar)。如果在运行时不应该修改文件,这应该是访问它的最佳方式。这将是 c) 在您的问题中。您可以通过以下方式访问该文件:

    ClassLoader cl = this.getClass().getClassLoader();
    InputStream is = cl.getResourceAsStream("resourceName");
    

    "resourceName" 将是 jar 文件中的路径。如果您使用 Maven 打包,src/main/webapp/WEB-INF/classes 中的所有内容都将在您的类路径中可用,并且可以使用 getResourceAsStream 加载。


    使用 maven 的另一种方法是创建一个新模块并将所有必需的资源放在 src/main/resources 中,然后在您的 webapp pom 中添加对该工件的依赖项。

    【讨论】:

    • /WEB-INF 不在 CLASSPATH 中,但 /WEB-INF/classes 在。
    • 您能否详细说明一下资源包是什么以及您如何提供它?一个教程链接就足够了。
    • 那么,如果我将文件 'filename.xml' 放在 WEB-INF 中,然后调用 getResourceAsStream("filename.xml"),我会访问它吗?现在试试
    • @Srv10 必须在 WEB-INF/classes 中,参见 duffymo 的更正。
    • 工作就像一个魅力。我不知道如果不是因为你,我是否会想到这一点 - 以及何时
    【解决方案2】:

    a) 任何地方,只要您的进程有权访问该文件。

    b) 相对路径取决于您使用的应用服务器。相对路径是相对于 jvm 的 home 的。 tomcattomcat-baseweblogic域目录。我建议不要依赖于此,而是使用包含绝对路径的配置参数。

    c) 把它放在 WEB-INF (servletcontext path) 或 WEB-INF/classes (你可以作为类路径资源访问)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      • 2017-07-07
      • 1970-01-01
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多