में @ टिमड मेट्रिक्स एनोटेशन का उपयोग करके मैं कोडहाले मेट्रिक्स का उपयोग करके एक सादे जावा एप्लिकेशन में मीट्रिक जोड़ने की कोशिश कर रहा हूं। मैं @ टिमड एनोटेशन का उपयोग करना चाहता हूं, लेकिन यह मेरे लिए अस्पष्ट है कि मेट्रिक रजिस्ट्री इसका उपयोग करती है, या मेट्रिक रजिस्ट्री का उपयोग करने के तरीके को कैसे बताया जाए। एप्लिकेशन एक सादा जावा 8 एप्लीकेशन है, जिसे मैवेन 3, स्प्रिंग, नो हाइबरनेट के साथ बनाया गया है।कोडाहले मेट्रिक्स: सादे जावा
मैं कैसे dropwizard दस्तावेज में @Timed को लागू करने पर किसी भी प्रलेखन नहीं मिल सकता है: https://dropwizard.github.io/metrics/3.1.0/manual/
मैं इन निर्भरताओं जोड़ दिया है:
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-core</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>com.codahale.metrics</groupId>
<artifactId>metrics-annotation</artifactId>
<version>3.0.2</version>
</dependency>
जब मैं टाइमर के लिए एक programatic कॉल का उपयोग करें, मैं क्योंकि मैं जानता हूँ कि जो MetricsRegistry प्रयोग किया जाता है रिपोर्ट प्राप्त कर सकते हैं:
static final MetricRegistry metrics = new MetricRegistry();
private void update() throws SQLException {
Timer.Context time = metrics.timer("domainobject.update").time();
try {
[...]
} finally {
time.stop();
}
}
लेकिन जब मैं और अधिक सुरुचिपूर्ण @Timed एनोटेशन का उपयोग करें, मुझे पता नहीं है जो ज रजिस्ट्री प्रयोग किया जाता है, और इसलिए मैं एक पत्रकार नहीं बना सकते, जिसका मतलब है मैं रिपोर्टेड मैट्रिक्स नहीं मिल सकता है (मैं भी यकीन है कि अगर यह वास्तव में कुछ भी नहीं कर रहा हूँ):
@Timed(name = "domainobject.update")
private void update() throws SQLException {
[...]
}
कृपया कैसे बनाने के लिए पर सलाह @Timed और अन्य मेट्रिक्स एनोटेशन नियमित जावा एप्लिकेशन में काम करते हैं।
अतिरिक्त जानकारी: कारण मुझे यह अजीब लगता है कि मैंने लंबोक ढांचे को जोड़ा है और @ एसएलएफ 4 जे एनोटेशन काम करते हैं। मैं Maven pom.xml में एक निर्भरता के रूप में लंबोक कहा:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.14.8</version>
</dependency>
और मैं सदस्य चर को अव्यवस्थित बिना वर्ग के लिए एक लकड़हारा जोड़ने के लिए @ Sl4fj वर्ग एनोटेशन का उपयोग कर सकते हैं:
@Slf4j
public class App {
public void logsome(){
log.info("Hello there");
}
}
तो यदि निर्भरता को जोड़कर यह संभव है, तो मुझे लगता है कि ऊपर वर्णित अनुसार, कोडडाले @ टिमड एनोटेशन कार्य प्राप्त करने के लिए मुझे बस निर्भरता या कॉन्फ़िगरेशन गुम हो रहा है।
(वैसे, लंबोक की जाँच, यह आपके जीवन आसान हो जाएगा: http://projectlombok.org/)
एक
InstrumentedResourceMethodApplicationListener
रजिस्टर करने के लिए आवश्यकता होती है। इस तरह की चीज केवल एओपी के साथ काम करती है, इसलिए आपको अपनी कक्षाओं में इसे प्रदान करने के लिए कुछ चाहिए। उदाहरण के लिए, स्प्रिंग एओपी इस – Alexको प्राप्त करने के लिए जेडीके प्रॉक्सी, सीजीआईएलबी या एस्पेक्टजे का उपयोग करता है तो AspectJ जाने का रास्ता होगा? मैं इसे कैसे करूं? – Rolf
और भी दिलचस्प: उदाहरण के लिए @ Slf4j क्यों काम करता है, और @ Timed नहीं करता है? Slf4j काम करने के लिए मैं स्पष्ट रूप से AspectJ का उपयोग नहीं कर रहा हूं। – Rolf