【问题标题】:Where will WebLogic look for files by default?默认情况下,WebLogic 会在哪里查找文件?
【发布时间】:2009-09-18 12:07:23
【问题描述】:

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

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

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

  1. 为什么是域目录?为什么不是我的具有上述代码行的 java 文件所在的目录?

  2. 是否有任何我不知道但在不知不觉中做了的配置,让 WebLogic 在其域目录中查找?

  3. 在生产中使用上述代码行有什么影响/副作用?

任何 WeLogic 专家,请回复。

谢谢 问候 柴坦尼亚

【问题讨论】:

    标签: java file web-applications weblogic


    【解决方案1】:

    使用这种方式读取文件会降低您的应用程序的可移植性并且不是很健壮:如果您将应用程序部署在另一个应用程序服务器上,您将不得不再次找出将 PleaseNote.txt 文件放在哪里,否则代码将中断.

    这违反了 WORA (一次编写,随处运行) 原则,我认为这是不好的 练习。

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

    【讨论】:

      【解决方案2】:

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

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

      问候 亚历山大·罗日科夫

      【讨论】:

        【解决方案3】:

        使用 new File(..) 时,java 会在 java.exe 启动的目录中查找文件。对于 weblogic 域,这当然是域目录。这是默认的 java 行为。

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

        【讨论】:

        • 如果我从某个随机目录启动 WebLogic 会怎样?它还会在 WL 域目录中查找还是在 WL 开始的随机目录中查找?
        • 我不确定。我认为这取决于启动脚本。如果脚本 cd 进入域目录,Java 将在域目录中查找文件,否则在启动 weblogic 的目录中查找文件
        猜你喜欢
        • 2016-07-23
        • 1970-01-01
        • 2017-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-06
        • 2019-03-27
        • 1970-01-01
        相关资源
        最近更新 更多