2010-12-16 6 views
9

たとえば、単純なJBoss 4.2.3サーバーがポート8080でリッスンしていると判断するにはどうすればよいですか?jbossサーバーがJBoss 4.2.3を使用してプログラムでリッスンしているポートを調べるにはどうすればよいですか?

これは、私が来ることができたが、これは動作しません。最も近い:

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は数十のポートをリッスンします。これは、8080でリッスンするTomcat HTTPコネクタが埋め込まれているだけなので、変更する可能性は低いです。 – skaffman

答えて

3

あなたはJMXを通じてJBossの設定の詳細を取得することができますが、そのためにあなたは、JBossとの通信にPROVIDER_URLが必要になります。

//--- 

    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); 

    //--- 

他の属性を使用して情報を取得できます。

それ以外の場合は、構成ファイル(jboss-service.xml)を解析して、&から詳細を抽出できます。

16

がブートアップログを確認し、ラインが存在します。

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

最後の4つの数字があなたの現在のポートです。 [私の場合は8180]

+0

OP、この回答を正しいものとして指定してください。私はPatrickの指示に従って、JBossのポートを取得しました。 – Mushy

2

答えが遅れていますが、jbossweb.sarのserver.xmlはプロファイルのdeployディレクトリの下にあります。そのファイルには、Coyoteのポートとその他の設定パラメータがあります。このファイルは本当に役に立ち、Tomcatで使用するのと同じです。

また、 "lsof -i tcp:8080"を使用して、このポートがJBoss ASまたは "netstat -nlp"にバインドされているかどうかを確認できます。しかし、あなたがポートを知らないのであれば、最高のものはserver.xmlです。

答えが読んだ人に役立つことを願っています。

関連する問題