有几种方法可以获得版本号.我的官方方式是使用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]);
更新:通过包检查添加版本号.