获取有关jboss的信息

如何在该jboss服务器上部署的application / war中以编程方式找到jboss端口? 使用Java

它是一个运行的Web服务,我们没有任何用户界面

我假设你想要HTTP端口。

JBoss为每个Web侦听器发布一个Tomcat连接器MBean。 mbeans的ObjectNames的命名约定是:

  • 域名: jboss.web
  • 属性:
    • 地址:绑定地址
    • port:监听端口
    • 类型: 连接器

诀窍是,不对绑定地址或端口做任何假设(绑定地址可以是127.0.0.1,或0.0.0.0或主机名),找到正确的MBean。 为此,您可以使用指定以下内容的JMX查询:

  1. 已知的域名: jboss.web
  2. 已知类型: 连接器
  3. 地址的外卡:*****
  4. 港口的外卡:*****
  5. 一个属性值表达式,指定您正在查找HTTP / 1.1协议端口(而不是AJP端口): Query.match(Query.attr(“protocol”),Query.value(“HTTP / 1.1”))

一旦你有一个MBeanServerConnection到JBoss MBeanServer,这个语句将返回正确的端口:

String port = server.queryNames( new ObjectName("jboss.web:type=Connector,address=*,port=*"), Query.match(Query.attr("protocol"), Query.value("HTTP/1.1"))) .iterator().next().getKeyProperty("port"); 

如果您尝试从JBoss JVM 内部运行的代码中确定端口,则获取MBeanServerConnection是微不足道的,因为您可以对org.jboss.mx.util.MBeanServerLocator.locateJBoss()进行静态调用。

以下是打印HTTP端口号的简单JSP示例:

 <%@page contentType="text/html" import="java.util.*,org.jboss.mx.util.*,javax.management.*" %> JBoss Web Server Port <% try { MBeanServerConnection server = MBeanServerLocator.locateJBoss(); String port = server.queryNames( new ObjectName("jboss.web:type=Connector,address=*,port=*"), Query.match(Query.attr("protocol"), Query.value("HTTP/1.1"))) .iterator().next().getKeyProperty("port"); out.println("

Port:" + port + "

"); } catch (Exception e) { e.printStackTrace(System.err); } %>

如果需要远程获取,则需要使用JBoss客户端RMIAdaptor 。 Nayan Wadekar提供的参考资料是如何做到这一点的一个很好的例子。

如果您的JBoss服务器部署了org.jboss.mx.remoting.service.JMXConnectorServerService,或者您正在使用平台MBeanServer运行JBoss,那么您也可以使用本机JMX远程处理。 这是一个Groovy示例:

 import javax.management.*; import javax.management.remote.*; conn = null; try { url = new JMXServiceURL("service:jmx:rmi://njw810/jndi/rmi://njw810:1090/jmxconnector"); conn = JMXConnectorFactory.connect(url); server = conn.getMBeanServerConnection(); objectName = new ObjectName("jboss.web:type=Connector,address=*,port=*"); // HTTP/1.1 println server.queryNames(objectName, Query.match(Query.attr("protocol"), Query.value("HTTP/1.1"))).iterator().next().getKeyProperty("port"); } finally { try { conn.close(); println "Connection Closed"; } catch (Exception e) {} }