java web服务数据文件的放置
我正在用java编写一个简单的web服务,它应该读取一个xml文件并为结果生成一个字符串。然而,我不知道: a) xml文件应该放在文件系统中的什么位置才能被web服务访问 b) 从服务到文件的相对方式是什么 c) 另外,如何将xml文件添加到项目中,以便与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)。您可以通过以下方式访问该文件:
我将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的更正。工作起来很有魅力。我不知道如果不是为了你,我会不会明白——什么时候