繁体   English   中英

如何使用JBoss 4.2.3以编程方式找出我的jboss服务器正在侦听的端口?

[英]How do I find out what port my jboss server is listening on programmatically using JBoss 4.2.3?

例如,如何确定我的简单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");

检查你的启动日志,会有一行:

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

最后四个数字是您当前的端口。 [8180在我的情况下]

回答很晚,但您可以在配置文件的deploy目录下的jbossweb.sar中读取server.xml。 在该文件中,您有Coyote端口和其他配置参数。 这个文件非常有用,它与您在Tomcat中使用的文件相同。

您也可以使用“lsof -i tcp:8080”来检查此端口是否绑定到JBoss AS或“netstat -nlp”。 但是如果你不知道端口,我认为最好是读取server.xml。

我希望答案可以帮助任何阅读它的人。

您可以通过JMX获取JBoss配置详细信息,但为此您需要provider_url与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);

    //---

您可以使用其他属性来获取信息。

否则,您可以解析配置文件(jboss-service.xml)并从中提取详细信息。

执行ps -ef检查jboss进程。

检查以下参数。

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

将8080添加到偏移值,您将获得jboss正在侦听的端口。 例如,对我来说jboss正在收听9090端口。 所以( 8080 +偏移<1010> = 9090

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM