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

Java 如何在glassfish上的应用程序目录中保存文件?,java,glassfish,Java,Glassfish,我正在开发一个GWT应用程序,其中我从web服务检索一个文件,然后通过RPC返回URL以供UI显示。文件正在创建/保存在名为documentFiles的文件夹中: File newFile = new File("documentFiles", doc.getFilename()); newFile.getParentFile().mkdirs(); 当我在GWT-dev模式下本地运行应用程序时,会在war目录中的预期位置创建此文件夹,以便我可以在host:8080/[base url]/do

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

File newFile = new File("documentFiles", doc.getFilename());
newFile.getParentFile().mkdirs();
当我在GWT-dev模式下本地运行应用程序时,会在war目录中的预期位置创建此文件夹,以便我可以在
host:8080/[base url]/documentFiles
处访问它

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

我希望并期望它位于
..\glassfish\domains\domain1\applications\[app name]\documentFiles


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

通过直接文件IO访问web应用程序中的文件通常是个坏主意,也是个坏设计。如何确保只有一个正在运行的实例正在访问该文件?想想你的应用程序被数百个并发用户使用,可能运行在多个Glassfish实例上。交易处理怎么样?等等

如果必须访问文件,则应使用专门为此编写的资源适配器,以“标准”方式访问。上次我检查时(大约两年前),Glassfish的文件资源适配器处于beta状态,它是可用的,但不是很可靠。我记得我们在交易处理部分遇到了一些问题。现在它的形状可能会更好


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

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

如果必须访问文件,则应使用专门为此编写的资源适配器,以“标准”方式访问。上次我检查时(大约两年前),Glassfish的文件资源适配器处于beta状态,它是可用的,但不是很可靠。我记得我们在交易处理部分遇到了一些问题。现在它的形状可能会更好


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

我倾向于建议不要将文件写入应用程序目录(如果您部署为war,则不能)。而是保留在一个可配置的位置,并将它们流回。谢谢!我根本不知道我不能,我已经找到了另一种解决方案。我倾向于建议不要将文件写入应用程序目录(如果部署为war,则不能)。而是保留在一个可配置的位置,并将它们流回。谢谢!我根本不知道我不能,我已经找到了另一个解决方案。谢谢!最后我使用了这里建议的答案:谢谢!我最终使用了这里建议的答案: