【问题标题】:What domain files would an application running in Glassfish have access to?Glassfish 中运行的应用程序可以访问哪些域文件?
【发布时间】:2011-02-16 17:33:18
【问题描述】:

我正在开发一个应用程序的测试版。这是一个在 Glassfish 上运行的 Java 应用程序。显然,我们不时收到错误报告。我想为我的用户提供一个简单的一键式按钮,以从 /domains/domain1/logs 获取服务器日志。我不确定应用程序是否以可以访问此日志文件的方式进行沙盒处理。

glassfish 是否会以阻止我获取文件的方式对应用程序进行沙箱处理?我可以使用标准方法或库来获取日志吗? 如果服务器上的文件权限是正确的,我可以让我的应用程序使用绝对路径读取文件吗?

【问题讨论】:

    标签: java logging glassfish sandbox


    【解决方案1】:

    您的应用程序可以直接读取 server.log 文件。请注意,日志是轮换的,因此您的应用程序必须重新加载日志文件,甚至可能提供对轮换日志的访问权限。

    如果您使用的是 Web 服务器前端,例如 Apache,您可以只提供日志目录。我认为你可以在你的 webroot 中创建一个指向该目录的符号链接。

    请注意不要记录任何敏感信息,因为暴露日志文件可能会带来安全风险。

    【讨论】:

    • 当你说直接读取时,那只是读取File.open(/opt/glassfish/blah/blah/blah/server.log) 的基本文件还是有类似someGlassfishServerObject.getLogFile() 的便捷方法?
    • 在 Logging -> General 部分有一个地方可以指定日志文件名。默认情况下,我的读取为:“${com.sun.aas.instanceRoot}/logs/server.log”。我猜你可以在 File.open 调用中使用它。
    【解决方案2】:

    如果您使用的是 GlassFish 2.1,您应该查看 AMXAMX class Logging 似乎有你想要的数据。

    如果您使用的是 GlassFish 3.1,则应使用 RESTful interface to the admin data。如果您现在有本地运行的 GlassFish 3.1 实例,您可以点击此链接查看日志数据:http://localhost:4848/management/domain/view-log...

    如果您使用的是基于 WebKit 浏览器,例如 Chrome 或 Safari,您 大概需要查看源码 “空”页....

    如果您使用的是 GlassFish 3.0,则需要直接打开文件。

    【讨论】:

    • 这是和 @OleTraveler 之间的折腾。从长远来看,AMX 或 REST 接口是正确的方法,但从短期来看,文件读取似乎可以完成工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    • 2010-09-17
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 2017-08-30
    相关资源
    最近更新 更多