0

我希望 Web 应用程序能够了解有关其环境的信息,以便它可以在发生异常时描述各种细节。

如何获取 glassfish 在 Web 应用程序中运行的 IP 地址?

我还想拍摄配置、JDBC 连接、JMS、JNDI 等的快照。这可能吗?

我想这将与 glassfish 的 API 和注入 bean 或 mbean 更相关。

沃尔特

4

3 回答 3

0

如何获取 glassfish 在 Web 应用程序中运行的 IP 地址?

你可以得到这样ServletRequest的信息,例如端口

我还想拍摄配置、JDBC 连接、JMS、JNDI 等的快照。这可能吗?

您将需要依赖连接或连接工厂的元数据。如果担心这不是完全可移植的,但您应该能够获得一些信息,例如JDBC 元数据

您还可以连接 Glassfish 的 JMX bean。我曾经从一个网络应用程序中这样做过,以监控随着时间的推移分配的连接。如果您知道要查找的 JMX bean 的名称(例如,如果您知道数据源的名称),您可以在那里获得信息。基本上,原生 Glassfish 控制台显示的所有内容都在那里。

您可以在启动时收集所有信息,ServletContextListener然后将它们存储在某个地方以在出现异常时将它们吐出。

请注意,您可以向最终用户披露潜在的敏感信息,这不是推荐的做法。

于 2010-02-05T14:49:36.867 回答
0

如何获取 glassfish 在 Web 应用程序中运行的 IP 地址?

用于ServletRequest#getLocalPort()那个(不是ServletRequest#getServerPort()实际返回请求发送到的端口号,最常见的是80,并且可能由于路由/负载平衡而与容器正在侦听的端口不同)。

我还想拍摄配置、JDBC 连接、JMS、JNDI 等的快照。这可能吗?

好吧,您也许可以浏览 JNDI 树以查看其中的内容,但您的应用程序不应该知道所有细节(请理解:我认为您无法访问所有元数据,至少不是这个方式)。

另一种选择是通过 JMX 连接到GlassFish 的公开管理 MBean。但这将需要管理员凭据(因此可能是不可能的)。

也许您应该澄清您的需求和限制以获得更准确的答案。

于 2010-02-06T16:21:58.330 回答
0

我执行以下操作:

  1. 找到机器上的所有网络接口
  2. 记录JVM信息

这给了我足够的信息来确定问题来自哪里。

沃尔特

于 2010-03-31T16:06:18.737 回答