有谁知道如何以编程方式获取JBossAS 5.1下的服务器版本号?
JBossAS 4.2有org.jboss.Version
,getMajor()
和getMinor()
方法,但这似乎不存在于5.1中。
答案 0 :(得分:4)
有多种方法可以获得版本号。我的官方方式是使用JMX,如Website所述,但为此,appserver必须可以访问。要问的MBean是 jboss.system:type = server 。你甚至可以使用外壳skript twiddle:
%JBOSS_HOME%\bin>twiddle get jboss.system:type=Server VersionNumber
VersionNumber=5.1.0.GA
这是他们网站上的Code-Snippet(远程jmx):
MBeanServerConnection server = (MBeanServerConnection)new InitialContext().lookup("jmx/rmi/RMIAdaptor");
ObjectName on = new ObjectName("jboss.system:type=Server");
Object ver = server.getAttribute(on, "VersionNumber");
另一个变体是使用已加载类的包信息。如果你加载一个类,比如org.jboss.Main,你就可以在JAR file spec中获得实现版本。这是一个例子:
org.jboss.Main m=new Main(); //at least a jboss class loaded. not needed in the container
Package p=Package.getPackage("org.jboss");
System.out.println("Major=" + p.getImplementationVersion().split("\\.")[0]);
System.out.println("Minor=" + p.getImplementationVersion().split("\\.")[1]);
更新:通过包裹检查添加版本号。
答案 1 :(得分:0)
最后,我选择从JBoss 4.2反编译Version
类以查看它正在做什么,并查看结果是否可以改装到JBoss 5中。最终结果是加载资源{{1进入/org/jboss/version.properties
对象,然后从中读出Properties
和version.major
属性。打败我为什么他们不能离开version.minor
课程,但你去了。