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. 獲取有關YouTube視頻的信息
- 2. WooCommerce獲取有關訂單的信息
- 3. 獲取有關繼承鏈的信息
- 4. 獲取有關numpy dtype的信息
- 5. 獲取有關splayd的信息
- 6. API來獲取有關URL的信息
- 7. 獲取有關JVM崩潰的信息
- 8. 獲取有關WiFi網絡的信息
- 9. buildLoadSettings,獲取有關引用的信息
- 10. 如何獲取有關最近獲取的信息?
- 11. 獲取有關信號處理的信息
- 12. 如何獲取有關發送短信的信息?
- 13. 如何獲取有關oracle中表關係的信息?
- 14. 如何獲取關係表的所有關聯信息?
- 15. PHP獲取關於對象的信息
- 16. 獲取方面相關的信息REG
- 17. 獲取關於CGpath,UIBezierPath的信息?
- 18. 獲取關於PayPal餘額的信息
- 19. 如何獲取有關沒有回調的元素的信息
- 20. JBoss部署信息
- 21. 獲取有關Facebook帖子的所有信息,包括反應
- 22. Freebase獲取有關一個主題的所有信息
- 23. 是否有API獲取有關美國法律的信息?
- 24. 如何獲取有關Oracle中某個表的所有信息?
- 25. Bitbucket獲取有關存儲庫所有提交的信息
- 26. 獲取有關活動參與者的有用信息
- 27. 獲取信息
- 28. 獲取信息
- 29. 如何獲取黑莓的NeighboringCell信息(與網絡信息有關)
- 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