मैं एक काम कर सोप वेब सेवा जावा में CXF साथ लागू किया है। सर्वर पक्ष पर विधि निष्पादन की गणना करने का एक अच्छा तरीका क्या होगा?वेब सेवा अनुरोध exection समय गणना
मैं के लिए क्या किया है अब मैं इंटरसेप्टर का इस्तेमाल किया है। मैंने अपने इनइंटरसेप्टर (Phase.RECEIVE) में public static long start
परिभाषित किया है। और मेरे OutInterceptor (Phase.SEND) में मैं इस तरह की प्रतिक्रिया समय की गणना:
@Override
public void handleMessage(Message arg0) {
long stop = System.currentTimeMillis();
long executionTime = stop - RequestStartInterceptor.start;
System.out.println("execution time was ~" + executionTime + " ms");
}
वहाँ यह करने के लिए एक बेहतर तरीका है? मैं विधि गड़बड़ी प्रॉक्सी के निष्पादन के बारे में पढ़ रहा था, लेकिन मुझे कोई संकेत नहीं है कि यह कैसे करें।
प्रश्न अद्यतन:
मैं थोड़ा अधिक एक प्रॉक्सी यानी का उपयोग कर दूसरी तरह से arround मेरी रास्ता खोजने googled है:
@Aspect
public class MyServiceProfiler {
@Pointcut("execution(* gov.noaa.nhc.*.*(..))")
public void myServiceMethods() { }
@Around("myServiceMethods()")
public Object profile(ProceedingJoinPoint pjp) throws Throwable {
long start = System.currentTimeMillis();
System.out.println("Going to call the method.");
Object output = pjp.proceed();
System.out.println("Method execution completed.");
long elapsedTime = System.currentTimeMillis() - start;
System.out.println("Method execution time: " + elapsedTime + " milliseconds.");
return output;
}
}
इस सवाल का टिप्पणियां अब तक के आधार पर, इंटरसेप्टर उपयोग कर रहा है प्रॉक्सी का उपयोग करने से बेहतर है। मैं जितना संभव हो सके webservice को धीमा करना चाहता हूं (यह निश्चित रूप से इसे धीमा कर देगा) और साथ ही साथ एक सटीक प्रदर्शन माप प्राप्त करें।
मुझे लगता है कि उपर्युक्त तंत्र अच्छा है। –
मैं वास्तव में _very_ सहायक होने के लिए इंटरसेप्टर्स की भी सिफारिश करता हूं, – mtraut