web-dev-qa-db-ja.com

JBoss 4.2.3を使用して、jbossサーバーがプログラムでリッスンしているポートを確認するにはどうすればよいですか?

たとえば、単純なJBoss 4.2.3サーバーがポート8080でリッスンしていることを確認するにはどうすればよいですか?

これは私が来ることができた最も近いものですが、これは機能しません:

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");
11
Frank Flannigan

起動ログを確認してください。次の行があります。

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

最後の4つの番号は、現在のポートです。 [私の場合は8180]

20
Patrick

回答が遅れていますが、プロファイルのデプロイディレクトリの下にあるjbossweb.sarのserver.xmlを読み取ることができます。そのファイルには、Coyoteのポートとその他の構成パラメーターがあります。このファイルは本当に便利で、Tomcatで使用するものと同じです。

また、「lsof -i tcp:8080」を使用して、このポートがJBossASまたは「netstat-nlp」にバインドされているかどうかを確認できます。しかし、ポートがわからない場合は、server.xmlを読むのが最善だと思います。

答えがそれを読んだ人の助けになることを願っています。

4
Chema

Executeps -efjbossプロセスをチェックします。

次のパラメータを確認してください。

-Djboss.socket.binding.port-offset=1010

オフセット値に8080を追加すると、jbossがリッスンしているポートが取得されます。たとえば、私にとってjbossは9090ポートをリッスンしています。したがって(8080+オフセット<1010> = 909

3
Vikram Sharma

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)を解析して、そこから詳細を抽出できます。

3
Nayan Wadekar