Java 获取有关jboss的信息
如何在部署在jboss服务器上的应用程序/war中以编程方式找到jboss端口?使用JavaJava 获取有关jboss的信息,java,jboss,Java,Jboss,如何在部署在jboss服务器上的应用程序/war中以编程方式找到jboss端口?使用Java 它是一个正在运行的web服务,我们没有任何用户界面我假设您需要HTTP端口 JBoss为每个web侦听器发布一个Tomcat连接器MBean。MBean对象名的命名约定为: 域名:jboss.web 属性: 地址:绑定地址 端口:侦听端口 类型:连接器 诀窍在于,不需要对绑定地址或端口(绑定地址可以是127.0.0.1、0.0.0.0或主机名)做任何假设,就可以找到正确的MBean。为此,可以使
它是一个正在运行的web服务,我们没有任何用户界面我假设您需要HTTP端口 JBoss为每个web侦听器发布一个Tomcat连接器MBean。MBean对象名的命名约定为:
- 域名:jboss.web
- 属性:
- 地址:绑定地址
- 端口:侦听端口
- 类型:连接器
String port = server.queryNames(
new ObjectName("jboss.web:type=Connector,address=*,port=*"),
Query.match(Query.attr("protocol"), Query.value("HTTP/1.1")))
.iterator().next().getKeyProperty("port");
如果您试图从JBoss JVM中运行的代码确定端口,那么获取MBeanServerConnection是很简单的,因为您可以对进行静态调用
以下是打印HTTP端口号的简单JSP示例:
<%@page contentType="text/html" import="java.util.*,org.jboss.mx.util.*,javax.management.*" %>
<html><head><title>JBoss Web Server Port</title></head><body>
<%
try {
MBeanServerConnection server = MBeanServerLocator.locateJBoss();
String port = server.queryNames(
new ObjectName("jboss.web:type=Connector,address=*,port=*"),
Query.match(Query.attr("protocol"), Query.value("HTTP/1.1")))
.iterator().next().getKeyProperty("port");
out.println("<p>Port:" + port + "</p>");
} catch (Exception e) {
e.printStackTrace(System.err);
}
%></body></html>
在哪种情况下?如果您在servlet请求上下文中,只需调用request.getLocalPort()就可以得到您想要的。@pap我没有servlet请求上下文类似的问题,请看
import javax.management.*;
import javax.management.remote.*;
conn = null;
try {
url = new JMXServiceURL("service:jmx:rmi://njw810/jndi/rmi://njw810:1090/jmxconnector");
conn = JMXConnectorFactory.connect(url);
server = conn.getMBeanServerConnection();
objectName = new ObjectName("jboss.web:type=Connector,address=*,port=*"); // HTTP/1.1
println server.queryNames(objectName, Query.match(Query.attr("protocol"), Query.value("HTTP/1.1"))).iterator().next().getKeyProperty("port");
} finally {
try { conn.close(); println "Connection Closed"; } catch (Exception e) {}
}