Java 获取有关jboss的信息

Java 获取有关jboss的信息,java,jboss,Java,Jboss,如何在部署在jboss服务器上的应用程序/war中以编程方式找到jboss端口?使用Java 它是一个正在运行的web服务,我们没有任何用户界面我假设您需要HTTP端口 JBoss为每个web侦听器发布一个Tomcat连接器MBean。MBean对象名的命名约定为: 域名:jboss.web 属性: 地址:绑定地址 端口:侦听端口 类型:连接器 诀窍在于,不需要对绑定地址或端口(绑定地址可以是127.0.0.1、0.0.0.0或主机名)做任何假设,就可以找到正确的MBean。为此,可以使

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


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

我假设您需要HTTP端口

JBoss为每个web侦听器发布一个Tomcat连接器MBean。MBean对象名的命名约定为:

  • 域名:jboss.web
  • 属性:
    • 地址:绑定地址
    • 端口:侦听端口
    • 类型:连接器
诀窍在于,不需要对绑定地址或端口(绑定地址可以是127.0.0.1、0.0.0.0或主机名)做任何假设,就可以找到正确的MBean。为此,可以使用JMX查询指定:

  • 已知域名:jboss.web
  • 已知类型:连接器
  • 地址的通配符:*****
  • 端口的通配符:*****
  • 一个属性值表达式,指定要查找的是HTTP/1.1协议端口(与AJP端口相反):Query.match(Query.attr(“协议”),Query.value(“HTTP/1.1”)
  • 一旦您与JBoss MBeanServer建立了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是很简单的,因为您可以对进行静态调用

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

    <%@page contentType="text/html" import="java.util.*,org.jboss.mx.util.*,javax.management.*" %>
    <html><head><title>JBoss Web Server Port</title></head><body>
    <%
        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("<p>Port:" + port + "</p>");
    
        } catch (Exception e) {
            e.printStackTrace(System.err);
        }
    %></body></html>
    

    在哪种情况下?如果您在servlet请求上下文中,只需调用request.getLocalPort()就可以得到您想要的。@pap我没有servlet请求上下文类似的问题,请看
    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) {}
    }