java - 如何为 eclipse-tomcat 设置持久存储以进行备份和流式传输(不使用数据库)?

标签 java eclipse tomcat servlets

我正在使用 servlet、eclipse 和 tomcat 开发一个 Java Web 应用程序项目。

我希望能够从 servlet 动态存储/创建持久文件,并允许用户使用链接访问文件,而无需将文件存储在数据库中。

我读到 getServletContext().getRealPath("/") 是不稳定的,每次重新启动服务器时都会重置。

我还读到创建一个像“$HOME/.ourapp”这样的目录可以解决这个问题。虽然,我似乎无法找到如何设置 tomcat 以允许用户使用链接访问文件,使用 eclipse-tomcat。

问题:如何设置 eclipse-tomcat 以便网站“http://localhost/”和文件“http://localhost/temp-xx.txt”的链接相同,同时还允许动态创建持久数据“temp-xx. txt"由 servlet 生成并允许用户访问它,并且在服务器重新启动时不会被删除。

最佳答案

这变得复杂了,因为 Tomcat 可以使用 DefaultServlet 服务器文件(它只是将文件发送回客户端,正如您对 Web 服务器所期望的那样),但它在内部缓存文件,因此修改其下的文件系统可能会产生一些令人惊讶的行为。

您可以为 DefaultServlet 禁用缓存但我看到有报道说它仍然以令人惊讶的方式表现。我见过的唯一万无一失的解决方案是编写您自己的 servlet,从文件存储的任何地方流式传输文件。

但是编写自己的流式 servlet 并不像您想象的那么简单。如果您希望它具有高性能,您将需要启用所有不错的 HTTP 功能,例如范围请求、eTag、If-Modified-Since 以及 DefaultServlet 的所有内容。已经提供。也许你应该开始使用 DefaultServlet看看它能让你走多远。

配置实际上非常简单:只需添加一个 <Resources>元素到你的META-INF/context.xml文件并使用 postResources属性。您可以在 Tomcat users' guide for resources 中找到文档.

关于java - 如何为 eclipse-tomcat 设置持久存储以进行备份和流式传输(不使用数据库)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32763578/

相关文章:

java - 已正确部署 REST 服务并正确配置 tomcat 管理器,但访问该服务会抛出 404

java - 如何在数据库中使用 hibernate 和 spring mvc 获取一些 utf-8 字符?

java - 如何将参数传递给Workmanager DoWork方法

java - m2eclipse 搜索仅搜索本地存储库

python - 类似 Bpython 的编辑器/IDE?

java - j_security_check - 可以为表单提交传递额外的参数吗?

java - Tomcat 在作为服务运行时忽略 Java 选项

java - 将消息 JavaFX gui 交换到同一台机器上的 C++ 应用程序

java - Android有 "onInstall"方法吗?

java - 如何混合来自 DatagramPackets 的多个实时语音音频流?