我希望Web应用程序能够了解其环境,以便在发生异常时描述各种细节。
如何在Web应用程序中获取glassfish运行的ip地址?
我还想拍摄配置,JDBC连接,JMS,JNDI等的快照。这可能吗?
我想这与glassfish的API和注入bean或mbean有关。
沃尔特
答案 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)
我执行以下操作:
这为我提供了足够的信息来确定问题的来源。
沃尔特