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