WebLogic默认在哪里查找文件?

问题描述 投票:0回答:3

我在WebLogic中部署了一个Web应用程序。在我的一个java文件中,我尝试读取PleaseNote.txt如下:

File file = new File("PleaseNote.txt");

现在WebLogic正在从其域名目录中获取PleaseNote.txt。我的问题是:

  1. 为什么它是域名目录?为什么不具有上述代码行的java文件所在的目录?
  2. 是否有任何我不知道的配置,但在不知不觉中,WebLogic要查看其域目录?
  3. 在生产中使用上面的代码行有什么影响/副作用?

任何WeLogic专家,请回复。

谢谢Chaitanya

java file web-applications weblogic
3个回答
3
投票

使用这种方式读取文件会降低应用程序的可移植性并且不够健壮:如果在另一个应用程序服务器上部署应用程序,则必须再次找到放置PleaseNote.txt文件的位置或代码将中断。

这打破了WORA(一次写入,随处运行)原则,我认为这是一种不好的做法。

所以,我宁愿将此文件放在类路径中,并使用ClassLoader#getResourceAsStream(String name)来读取它。


0
投票

它是域目录,因为它对应于user.dir系统变量的值,如果路径未明确设置,则java读取/写入文件的位置。

为什么域名目录对应user.dir?因为你在这里启动Weblogic服务器。

关心Alexander Rozhkov


0
投票

当使用新的File(..)时,java会在启动java.exe的目录中查找该文件。在weblogic域的情况下,这是域目录。这是默认的java行为。

如果要加载与要加载的类文件位于同一目录中的文件,请使用ClassLoad.getResourcesAsStream()。如果要从类路径加载资源,请使用相同的方法,但在文件前面加上“/”。

© www.soinside.com 2019 - 2024. All rights reserved.