确定我们的应用程序部署到哪个应用程序服务器?
我们的 J2EE 应用程序部署到 JBoss,有时部署到 OC4J。 我可以知道正在使用哪一个吗? 我希望有一种方法可以返回运行时的容器信息。
Our J2EE Application is deployed to JBoss and sometimes to OC4J .
Can I know which one is being used?
I hope there is a method returning the container information on runtime.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我能想到的最简单的事情就是在运行时查看系统属性,因为两个服务器几乎肯定会定义自己的属性。例如,JBoss 4 定义了
jboss.server.dir
系统属性。检查该属性是否存在,如果存在,则可以假设您正在该服务器下运行。 OC4J 也会有类似的东西。或者,尝试以反射方式加载属于服务器基础设施一部分的类(例如 JBoss 4 中的 org.jboss.Version )。如果存在,您就知道您所在的服务器。
Simplest thing I can think of is to look through the system properties at runtime, since both servers are almost certainly going to define their own. For example, JBoss 4 defines the
jboss.server.dir
system property. Check to see if that property exists, and if it does, then you can assume you're running under that server. OC4J will have something similar.Alternatively, try reflectively loading a class that is part of the server's infrastructure (e.g.
org.jboss.Version
in JBoss 4). If it exists, you know what server you're on.您可以通过 找到这一点
ServletContext#getServerInfo()
。You can find this out by
ServletContext#getServerInfo()
.最有可能的是 JMX 是您需要使用的。这两个容器都可能将自身的详细信息公开为 MBean。这里有一些 Oracle有关 JMX 的文档 和 JBoss 文档 。
Most likely JMX is what you are going to need to use. Both containers likely expose details about themselves as MBeans. Here is some Oracle documentation on JMX and JBoss documentation.
更改为 System.getProperty("jboss.home.dir")
Change to
System.getProperty("jboss.home.dir")