2010-12-16 18 views
9

Por ejemplo, ¿cómo puedo determinar si mi servidor JBoss 4.2.3 simple está escuchando en el puerto 8080?¿Cómo puedo saber qué puerto está escuchando mi servidor jboss programáticamente usando JBoss 4.2.3?

Esto es lo más cerca que he podido venir, pero esto no funciona:

MBeanServerConnection server = (MBeanServerConnection)new InitialContext() 
    .lookup("jmx/rmi/RMIAdaptor"); 
ObjectName on = new ObjectName(
    "jboss:readonly=true,service=invoker,target=Naming,type=http"); 
String port = (String)server.getAttribute(on, "InvokerURLSuffix"); 
+0

JBoss escucha en docenas de puertos, es solo el conector HTTP integrado de Tomcat que escucha en 8080, y es poco probable que cambie. – skaffman

Respuesta

3

se puede recuperar JBoss detalles de configuración a través de JMX, pero para eso se necesitará PROVIDER_URL para la comunicación con JBoss.

//--- 

    Hashtable props = new Hashtable(); 
    props.put(InitialContext.PROVIDER_URL, "jnp://localhost:1099"); 
    props.put(InitialContext.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); 

    InitialContext ctx = new InitialContext(props); 

    MBeanServerConnection serverConn = (MBeanServerConnection)ctx.lookup("jmx/rmi/RMIAdaptor"); 

    ObjectName namingObject= new ObjectName("jboss:service=Naming"); 
    Object rmiPort = serverConn.getAttribute(namingObject, "RmiPort"); 
    Object bindAddress = serverConn.getAttribute(name1, "BindAddress"); 
    Object port = serverConn.getAttribute(name1, "Port"); 

    System.out.println("rmiPort : "+rmiPort + "bindAddress : " + bindAddress + "port : "+port); 

    String[] domains = serverConn.getDomains(); 

    for(int i =0; i < domains.length; i++){ 
     System.out.println(domains[i]); 
    } 

    ObjectName obj = ObjectName.getInstance("jboss.system", "type", "Server"); 
    Boolean serverStatus = (Boolean) serverConn.getAttribute(obj, "Started"); 
    System.out.println("Server started : "+serverStatus); 

    //--- 

Puede usar otros atributos para buscar información.

De lo contrario, puede analizar el archivo de configuración (jboss-service.xml) & extraer los detalles de allí.

16

Compruebe su arranque de registro, habrá una línea:

21:03:10,415 INFO [Http11AprProtocol] Initializing Coyote HTTP/1.1 on http-127.0.0.1-8180 

Los últimos cuatro números son su puerto actual. [8180 en mi caso]

+0

OP, por favor, designe esta respuesta como correcta. Seguí las instrucciones de Patrick y recuperé el puerto para mi JBoss. – Mushy

2

Es tarde para la respuesta pero puede leer el archivo server.xml en jbossweb.sar en el directorio de implementación de su perfil. En ese archivo tiene el puerto de Coyote y otros parámetros de configuración. Este archivo es realmente útil y es el mismo que usas en Tomcat.

También puede usar "lsof -i tcp: 8080" para verificar si este puerto es vinculante para JBoss AS o "netstat -nlp". Pero si no conoces el puerto, creo que lo mejor es leer server.xml.

Espero que la respuesta pueda ayudar a cualquiera que la lea.