java web服务数据文件的放置

java web服务数据文件的放置,java,netbeans,maven,Java,Netbeans,Maven,我正在用java编写一个简单的web服务,它应该读取一个xml文件并为结果生成一个字符串。然而,我不知道: a) xml文件应该放在文件系统中的什么位置才能被web服务访问 b) 从服务到文件的相对方式是什么 c) 另外,如何将xml文件添加到项目中,以便与web服务一起部署 我将NetBeans用作IDE,将maven用作构建系统。通常我在web应用程序中提供一个资源包(.jar)。如果不应在运行时修改该文件,则这应该是访问该文件的最佳方式。这将是你问题中的c)。您可以通过以下方式访问该文件:

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

a) xml文件应该放在文件系统中的什么位置才能被web服务访问

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

c) 另外,如何将xml文件添加到项目中,以便与web服务一起部署


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

通常我在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应用程序中提供一个资源包(.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中的任何位置向该工件添加依赖项。

a),只要您的进程有权访问该文件

b) 相对路径取决于您正在使用的应用程序服务器。相对路径是相对于jvm的主路径的。因为tomcat是tomcat base,而weblogic是域目录。我建议不要依赖于此,而是使用包含绝对路径的配置参数

c) 只要您的进程具有访问该文件的权限,就可以将它放在WEB-INF(servletcontext路径)或WEB-INF/classes(您可以作为类路径资源访问它)

a)中的任何位置

b) 相对路径取决于您正在使用的应用程序服务器。相对路径是相对于jvm的主路径的。因为tomcat是tomcat base,而weblogic是域目录。我建议不要依赖于此,而是使用包含绝对路径的配置参数


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

/WEB-INF不在类路径中,但/WEB-INF/classes在类路径中。您能否详细说明什么是资源包,以及如何确切地提供它?一个到教程的链接就足够了。所以,如果我将文件“filename.xml”放在WEB-INF中,然后调用getResourceAsStream(“filename.xml”),我会访问它吗?尝试now@Srv10它必须在WEB-INF/classes中,请参阅duffymo的更正。工作起来很有魅力。我不知道如果不是为了你,我是否会发现,/WEB-INF不在类路径中,而/WEB-INF/classes在类路径中。你能详细说明什么是资源包,以及你是如何提供它的吗?一个到教程的链接就足够了。所以,如果我将文件“filename.xml”放在WEB-INF中,然后调用getResourceAsStream(“filename.xml”),我会访问它吗?尝试now@Srv10它必须在WEB-INF/classes中,请参阅duffymo的更正。工作起来很有魅力。我不知道如果不是为了你,我会不会明白——什么时候