我希望web应用程序能够了解有关其环境的信息,以便在发生异常时能够描述各种细节。
如何在web应用程序中获取运行glassfish的ip地址?
我还想对配置、JDBC连接、JMS、JNDI等进行快照。这可能吗?
我猜这与glassfish和注入bean或mbean的API更相关。
沃尔特
发布于 2010-04-01 00:06:19
我执行以下操作:
这为我提供了足够的信息来确定问题的来源。
沃尔特
发布于 2010-02-05 22:49:37
如何在web应用程序中获取运行glassfish的ip地址?
你可以在ServletRequest中获得这样的信息,例如port。
我还想对配置、JDBC连接、JMS、JNDI等进行快照。这可能吗?
您将需要依赖于连接或连接工厂的元数据。如果害怕,这不是完全便携的,但你应该能够获得一些信息,例如JDBC metadata。
您还可以连接Glassfish的JMX bean。我曾经在一个web应用程序中这样做过一次,以监控随时间分配的连接。如果您知道要查找的JMX bean的名称(例如,如果您知道数据源的名称),您可以在那里获得信息。基本上,原生Glassfish控制台显示的所有内容都在那里。
你也许可以在启动时用一个ServletContextListener收集所有的信息,然后把它们存储在某个地方,以便在出现异常的情况下把它们吐出来。
请注意,您可以向最终用户透露潜在的敏感信息,这不是建议的做法。
发布于 2010-02-07 00:21:58
如何在web应用程序中获取运行glassfish的ip地址?
为此使用ServletRequest#getLocalPort() (而不是ServletRequest#getServerPort(),它实际返回请求发送到的端口号,最常见的是80,由于路由/负载平衡,它可能与容器侦听的端口不同)。
我还想对配置、JDBC连接、JMS、JNDI等进行快照。这可能吗?
您也许可以浏览JNDI树来查看其中的内容,但是您的应用程序不应该知道所有的细节(请理解:我不认为您能够访问所有的元数据,至少不能通过这种方式)。
另一种选择是连接到GlassFish's exposed administrative MBeans via JMX。但这将需要管理员凭据(因此可能不可能)。
也许你应该澄清你的需求和约束,以获得更准确的答案。
https://stackoverflow.com/questions/2207934
复制相似问题