如何使用JBoss4.2.3以编程方式找出jboss服务器正在侦听的端口?
例如,如何确定我的简单JBoss 4.2.3服务器正在侦听端口8080 这是我能来的最近的一次,但这不起作用:如何使用JBoss4.2.3以编程方式找出jboss服务器正在侦听的端口?,jboss,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=Nami
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");
您可以通过JMX获取JBoss配置的详细信息,但为此,您需要提供程序的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);
//---
//---
Hashtable props=新的Hashtable();
props.put(InitialContext.PROVIDER\u URL,“jnp://localhost:1099");
put(InitialContext.INITIAL_CONTEXT_FACTORY,“org.jnp.interfaces.NamingContextFactory”);
InitialContext ctx=新的InitialContext(道具);
MBeanServerConnectionServerConn=(MBeanServerConnection)ctx.lookup(“jmx/rmi/rmiadapter”);
ObjectName namingObject=newobjectname(“jboss:service=Naming”);
对象rmiPort=serverConn.getAttribute(namingObject,“rmiPort”);
对象bindAddress=serverConn.getAttribute(名称1,“bindAddress”);
对象端口=serverConn.getAttribute(名称1,“端口”);
System.out.println(“rmiPort:+rmiPort+”bindAddress:+bindAddress+”port:+port”);
String[]domains=serverConn.getDomains();
对于(int i=0;i
您可以使用其他属性来获取信息
否则,您可以解析配置文件(jboss service.xml)并从中提取详细信息。检查启动日志,会有一行:
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
我希望这个答案能对任何读过它的人有所帮助。执行
ps-ef
检查jboss进程
没有检查以下参数
-Djboss.socket.binding.port-offset=1010
将8080添加到偏移量值,您将获得jboss正在侦听的端口。例如,对于我来说,jboss正在监听9090端口。所以(8080+offset=9090)JBoss在几十个端口上侦听,它只是在8080上侦听的嵌入式Tomcat HTTP连接器,不太可能更改。OP,请将此答案指定为正确答案。我按照Patrick的指示检索了JBoss的端口。对于JBoss EAP 7.x,我使用
ps-ef | grep JBoss.management.native.port