【发布时间】:2014-02-24 18:48:08
【问题描述】:
我有一个 Java Web 项目,我使用 Maven 并将“src/main/resources”和“src/main/java”文件夹作为默认源文件夹。该项目实际上是一个 RESTful Web 服务,我使用 Jersey 来处理 REST 资源和 api 调用。
在 api(用于测试)中有一个调用,它导出一些图像和 xml 文件(使用 Photoshop 脚本),使用这些 xml 文件将数据插入数据库,然后向客户端返回成功消息。之后,客户端应该可以使用 api 获取这些图像了。
问题是我目前正在将图像和 xml 文件导出到 src/main/resources 文件夹,并且服务器(Tomcat)只有在我清理/重新发布或重新启动它时才能访问这些新文件,并且我猜我不能通过代码做到这一点。此外,由于服务器无法访问新导出的 xml 文件,因此无法更新数据库。
因此,我尝试了另一种方法,即将图像和 xml 文件放在已部署资源的 webapp 文件夹中(连同网页)。它的工作原理是服务器无需重新启动即可读取新文件。但是,在这种情况下,我使用绝对路径来访问 xml 文件以更新数据库。我搜索了如何使用相对路径访问 webapp 文件夹中的文件,但没有找到任何东西。
那么,首先,上述解决方案中哪一个是最好用的?
如果将文件导出到资源文件夹更好,如何在不重新启动服务器的情况下访问新文件?
如果将images/xml文件放在webapp文件夹下比较好,如何使用相对路径访问?
P.S.:当我导出图像和 xml 文件时,我在 photoshop 脚本中使用绝对路径将它们放在 src/main/resources 文件夹或 webapp 文件夹中。
【问题讨论】:
-
源文件夹未部署到您的服务器(我希望),webapp 文件夹也不是一个好位置,因为它可能会在另一个部署中被删除。您应该始终划分应用程序和数据。因此,只需定义一个外部目录,您的服务器可以在其中读取/写入数据。
-
@Stefan,感谢您的回复。我不知道为什么我认为将这些文件放在项目中是个好主意。将它们导出到外部目录更有意义,这就是我现在要尝试做的事情。正如我所说,这只是一个测试功能。我有一个亚马逊存储桶用于存储导出的图像,我只是不想用它来测试(上传和刷新文件需要很多时间)。
-
@Salil,感谢您的回复。将这些文件放在数据库中也很有意义,但这就是这些 xml 文件的用途。我使用 xml 数据来填充我的表,然后我可以把 xml 文件扔掉。我认为将它们放在外部目录中是可行的方法。
-
@Stefan 你的想法对我来说效果很好。您介意发表您的评论作为答案,以便我接受吗?谢谢。
标签: java maven tomcat resources