Glassfish - 描述Web应用程序正在运行的环境

时间:2010-02-05 14:44:19

标签: java-ee glassfish glassfish-3

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

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

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

我想这与glassfish的API和注入bean或mbean有关。

沃尔特

3 个答案:

答案 0 :(得分:0)

  

我如何获得IP地址?   那条玻璃鱼在里面奔跑   网络应用程序?

您可以在ServletRequest中获取此类信息,例如port

  

我想拍一张快照   配置,JDBC   连接,JMS,JNDI等。这是   可能的?

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

您还可以连接Glassfish的JMX bean。我从Web应用程序那样做了一次,以监视随时间分配的连接。如果您知道要查找的JMX bean的名称(例如,如果您知道数据源的名称),那么您可以获得有关信息的旅行车。基本上,本机Glassfish控制台显示的所有内容都在那里。

您可以在启动时使用ServletContextListener收集所有信息,然后将它们存储在某处以便在发生异常时将它们吐出来。

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

答案 1 :(得分:0)

  

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

使用ServletRequest#getLocalPort()(不是ServletRequest#getServerPort()实际上返回发送请求的端口号,最常见的是80,可能会有所不同从容器正在侦听的端口,由于路由/负载平衡)。

  

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

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

另一种选择是连接到GlassFish's exposed administrative MBeans via JMX。但这需要管理员凭证(因此可能无法实现)。

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

答案 2 :(得分:0)

我执行以下操作:

  1. 查找计算机上的所有网络接口
  2. 记录JVM信息
  3. 这为我提供了足够的信息来确定问题的来源。

    沃尔特