1

我正在开发一个 GWT 应用程序,我从 Web 服务中检索文件,然后通过 RPC 返回 URL 以供 UI 显示。该文件正在创建/保存在名为 documentFiles 的文件夹中:

File newFile = new File("documentFiles", doc.getFilename());
newFile.getParentFile().mkdirs();

当我在 GWT 开发模式下本地运行应用程序时,这个文件夹会在我期望的地方创建,在 war 目录中,所以我可以在host:8080/[base url]/documentFiles.

但是,当我在 glassfish(在 Windows 上)上运行它时,该文件夹是在...\glassfish\domains\domain1\config\documentFiles.

我想要并期望它在...\glassfish\domains\domain1\applications\[app name]\documentFiles

我希望这是有道理的。如何指定在应用程序文件夹下创建文件?感谢任何帮助。谢谢。

4

1 回答 1

1

通过直接文件 IO 从 Web 应用程序访问文件通常是一个坏主意和一个糟糕的设计。您如何确保只有一个正在运行的实例正在访问该文件?想想你的应用被数百个并发用户使用,可能在多个 Glassfish 实例上运行。事务处理如何?等等。

如果您必须访问文件,您应该以“标准”方式进行,使用专门为此目的编写的资源适配器。上次我检查(大约 2 年前)有一个用于 Glassfish 的文件资源适配器处于 beta 状态 - 它可用,但不是很可靠。我记得我们在事务处理部分遇到了一些问题。它现在可能处于更好的状态......

忘记文件 IO 并以其他方式解决问题(例如,通过数据库或 JMS 通信)可能会更好。由于遗留 API,我们被迫使用文件,如果您没有此类限制,请不要这样做。

于 2012-06-15T12:48:50.233 回答