2010-12-16 11 views
9

Na przykład, w jaki sposób określić, że mój prosty serwer JBoss 4.2.3 nasłuchuje na porcie 8080?Jak mogę się dowiedzieć, który port mój serwer jboss nasłuchuje programowo za pomocą JBoss 4.2.3?

Jest to najbliżej udało mi przyjść, ale to nie działa:

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 nasłuchuje na kilkudziesięciu portach, jest to tylko wbudowane złącze HTTP Tomcat, które nasłuchuje na 8080 i jest mało prawdopodobne, aby uległo zmianie. – skaffman

Odpowiedz

3

Można pobrać JBoss dane konfiguracyjne przez JMX, ale do tego trzeba będzie provider_url do komunikacji z 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); 

    //--- 

Do pobierania informacji można używać innych atrybutów.

W przeciwnym razie można przeanalizować plik konfiguracyjny (jboss-service.xml). & wypakować szczegóły z tego miejsca.

16

Sprawdź bagażnik się dziennik, nie będzie linia:

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

Cztery ostatnie cyfry są aktualna portu. [8180 w moim przypadku]

+0

OP, proszę określić tę odpowiedź jako poprawną. Postępowałem zgodnie z instrukcjami Patricka i odzyskałem port dla mojego JBossa. – Mushy

2

Spóźnienie na odpowiedź, ale można przeczytać plik server.xml w jbossweb.sar w katalogu wdrażania swojego profilu. W tym pliku masz port Coyote i inne parametry konfiguracyjne. Ten plik jest naprawdę użyteczny i jest taki sam, jak w Tomcat.

Możesz także użyć "lsof -i tcp: 8080", aby sprawdzić, czy ten port jest powiązany z JBoss AS lub "netstat -nlp". Ale jeśli nie znasz portu, myślę, że najlepiej jest przeczytać plik server.xml.

Mam nadzieję, że odpowiedź może pomóc każdemu, kto ją przeczyta.