8
A
回答
7
我假设你想要的HTTP端口。
JBoss为每个Web侦听器发布一个Tomcat连接器MBean。的MBean的ObjectName的命名规则是:
- 域:jboss.web
- 属性:
- 地址:装订地址
- 端口:侦听端口
- 类型:连接器
诀窍是,在不对绑定地址或端口(绑定地址可能是127.0.0.1或0.0.0.0或主机名)做任何假设的情况下,找到正确的MBean。要做到这一点,你可以用一个JMX查询指定:
- 已知域名:jboss.web
- 已知类型:连接器
- 通配符的地址:* ****
- 通配符的端口:*****
- 一个属性值表达式,指定你正在寻找的HTTP/1.1协议端口(而不是在 AJP端口):Query.match(Query.attr( “协议”),Query.value( “HTTP/1.1”))
一旦你有一个MBeanServerConnection到JBoss MBeanServer中,这一声明将返回正确的端口:
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中是微不足道的,因为你可以使静态调用org.jboss.mx.util.MBeanServerLocator.locateJBoss()。
下面是一个简单的JSP示例打印的HTTP端口号:
<%@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>
如果你需要远程获取这一点,你需要使用JBoss的客户端RMIAdaptor。 Nayan Wadekar提供的reference是如何做到这一点的一个很好的例子。
如果您的JBoss服务器部署了org.jboss.mx.remoting.service.JMXConnectorServerService或者您使用platform MBeanServer运行JBoss,那么您还可以使用本地JMX远程处理。这里有一个Groovy的例子:
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) {}
}
相关问题
- 1. 获取有关WiFi网络的信息
- 2. API来获取有关URL的信息
- 3. 获取有关JVM崩溃的信息
- 4. 获取有关splayd的信息
- 5. 获取有关YouTube视频的信息
- 6. WooCommerce获取有关订单的信息
- 7. 获取有关继承链的信息
- 8. 如何获取有关发送短信的信息?
- 9. 如何获取关系表的所有关联信息?
- 10. PHP获取关于对象的信息
- 11. JBoss部署信息
- 12. 是否有API获取有关美国法律的信息?
- 13. 如何获取有关Oracle中某个表的所有信息?
- 14. Bitbucket获取有关存储库所有提交的信息
- 15. 获取信息
- 16. 如何获取黑莓的NeighboringCell信息(与网络信息有关)
- 17. Jboss 7.1.1.Final - 获取集群中服务器的统计信息?
- 18. 与laravel雄辩关系获取信息
- 19. 获取相关信息MySQL查询
- 20. 从FLV获取关键帧信息
- 21. 的JavaScript - 获取详细信息有关浏览器的
- 22. 获取有关正在运行的进程的信息
- 23. 如何获取有关C函数的调用者的信息?
- 24. 获取有关使用freebase api的地方的信息
- 25. 获取有关ios 5中的mp3文件的信息
- 26. 使用ffmpeg获取有关mp3的信息的命令?
- 27. 在swift中获取有关EKEvent的信息
- 28. 如何获取有关ZIP文件的信息?
- 29. AJAX:如何获取信息有关的许可拒绝
- 30. 在运行时获取有关实体的休眠信息
在哪个上下文中?如果你在一个servlet请求上下文中,简单地调用request.getLocalPort()应该会给你你想要的。 – pap 2011-05-27 14:41:29
@pap我没有servlet请求上下文 – 2011-05-27 15:57:29
类似的问题,请看http://stackoverflow.com/questions/4466518/how-do-i-find-out-what-port-my-jboss-server-是听-上编程,全光照/ 4508602#4508602 – 2011-05-27 19:33:00