2014-07-14 10 views
11

स्टार्टअप पर हमें सर्वर का पता और चल रहे एप्लिकेशन के http पोर्ट को प्राप्त करने की आवश्यकता है। अब तक हम इसे इस तरह बनाया:जावा ईई में प्रोग्राम सर्वर से बाध्य सर्वर पता और पोर्ट कैसे प्राप्त करें?

MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer(); 
ObjectName socketBindingMBean = new ObjectName("jboss.as:socket-binding-group=standard-sockets,socket-binding=http"); 

String host = (String) mBeanServer.getAttribute(socketBindingMBean, "boundAddress"), 
Integer port = (Integer) mBeanServer.getAttribute(socketBindingMBean, "boundPort")); 

सब कुछ ठीक था, लेकिन 7.1.3.Final को JBoss 7.1.1.Final से माइग्रेशन के बाद हम समस्या यह है कि MBean सर्वर स्टार्टअप पर परिभाषित नहीं है मिला है। इसका मतलब है कि अगर मैं पर पहले से ही जेबॉस सर्वर चला रहा हूं, तो आवेदन ठीक है, लेकिन यदि मैं सर्वर शुरू करता हूं और सर्वर के दौरान शुरू होता है तो एमबीन वहां नहीं होते हैं।

मुझे नहीं पता कि मुझे क्यों लगता है कि मुझे यह महसूस हो रहा है कि जेबॉस सुनिश्चित करता है कि अधिकांश एमबीन से पहले एप्लिकेशन शुरू/लोड हो गया है। मैं एक छोटे से लग रहे थे और पता चला कि निम्नलिखित Mbeans हमारे आवेदन के बाद लोड किए गए हैं:

  • jboss.as:interface= ..
  • jboss.as:socket-binding-group= ..
  • jboss .as: सबसिस्टम = ..
  • jboss.as:core-service=management .. (कुछ)

तो,

  • मैं अपने आवेदन से पहले एमबीओएस लोड करने के लिए जेबॉस को कैसे मजबूर कर सकता हूं?
  • क्या कोई और तरीका/मेबियन है जहां मैं अपनी जानकारी प्राप्त कर सकता हूं?
+0

आप इस समस्या को हल करने में सक्षम थे: नीचे है कि मेरे लिए काम किया सर्वर पता और http बंदरगाह पाने के लिए मैं कोड के साथ समस्या हल हो? – RedEagle

+1

हुई, एक साल पहले से अधिक :) हमने कुछ सेकंड के लिए एक नए थ्रेड के भीतर getAttribute-method-call को देरी करके काम किया। सही नहीं दिखता है लेकिन आज तक उत्पादक चलाता है। – Marcel

उत्तर

3

मुझे जेबीएसएस वाइल्डफ्लाई 8.1 में एक ही समस्या मिली।

//http port 
ManagementFactory.getPlatformMBeanServer().getAttribute(new ObjectName("jboss.as:socket-binding-group=standard-sockets,socket-binding=http"), "port"); 

//http adress 
ManagementFactory.getPlatformMBeanServer().getAttribute(new ObjectName("jboss.as:interface=public"), "inet-address"); 
संबंधित मुद्दे