如何在glassfish的应用程序目录中保存文件?

时间:2012-06-14 20:46:12

标签: java glassfish

我正在开发一个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

之下

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

1 个答案:

答案 0 :(得分:1)

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

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

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