IBM Bluemix Liberty for Java公共可访问目录

时间:2016-05-25 17:11:09

标签: java ibm-cloud websphere-liberty

我使用Liberty for Java运行时在IBM Bluemix中开发Java Web应用程序。在我的应用程序中,我创建了csv文件,我想在下载时提供给我的用户。

不幸的是,我无法弄清楚我要把这些文件写到哪里。网址应该是http://myapp.eu-gb.mybluemix.net/test.csvhttp://myapp.eu-gb.mybluemix.net/download/test.csv

我是否必须在server.xml中指定路由?

3 个答案:

答案 0 :(得分:1)

请注意,在云中部署应用程序(特别是基于Cloud Foundry的平台)需要考虑有关本地文件系统的一些注意事项:

  • 本地文件系统存储是短暂的。当应用程序实例崩溃或停止时,平台将回收分配给该实例的资源,包括自应用程序启动以来所做的任何本地磁盘更改。重新启动实例时,应用程序将以新磁盘映像启动。虽然您的应用程序可以在运行时写入本地文件,但文件将在应用程序重新启动后消失。
  • 同一应用程序的实例不共享本地文件系统。每个应用程序实例都在自己的独立容器中运行因此,如果您的应用程序需要文件中的数据在应用程序重新启动时保持不变,或者需要在应用程序的所有正在运行的实例之间共享数据,则不应使用本地文件系统

如果您想了解有关此主题的更多信息,请查看Considerations for Designing and Running an Application in the Cloud

我建议您查看Bluemix上的Object Storage服务,该服务允许存储您的数据并使用API​​检索它。

答案 1 :(得分:0)

你能不能马上下载文件?不是将数据写入FileOutputStreamPrintWriter,而是将数据写入从OutputStream获得的HttpServletResponseresponse.setContentType("text/csv"); OutputStream outputStream=response.getOutputStream(); writeCsvData(outputStream);

例如:

response.setContentType("text/csv");
PrintWriter writer=response.getWriter();
writeCsvData(writer);

{{1}}

答案 2 :(得分:0)

当您完全了解Cloud Foundry中与ephemeral file system相关的问题时,您应该能够通过ServetContext.getRealPath('/')调用在磁盘上获取应用程序的真实路径。现在,假设您部署了一个简单的Web应用程序,您可以将文件写入该位置,并通过http://<appName>.mybluemix.net/<file>访问它们。如果您使用非根上下文路径或想要将文件放在子目录中(只要该子目录不是WEB-INFMETA-INF),这也应该有用。