मैं जेबॉस 7.1 का उपयोग कर जावा ईई एप्लिकेशन बना रहा हूं।जावा ईई इंटरसेप्टर और @ViewScoped बीन
उपयोगकर्ता क्रियाओं का पूर्ण लेखा परीक्षा प्राप्त करने के लिए, मैं अपने बीन्स के तरीकों के हर आमंत्रण को लॉग इन करने के लिए इंटरसेप्टर्स का उपयोग करने की योजना बना रहा हूं।
@Logged
@Interceptor
public class UserActionInterceptor implements Serializable {
private static final long serialVersionUID = 1L;
private Logger log = LoggerFactory.getLogger(UserActionInterceptor.class);
public UserActionInterceptor() {
}
@AroundInvoke
public Object logMethodEntry(InvocationContext invocationContext) throws Exception {
log.debug(invocationContext.getMethod().getName() + " invoked.");
return invocationContext.proceed();
}
}
अभी तक यह काम कर रहा है ठीक:
@Inherited
@InterceptorBinding
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface Logged {
}
तब मैं अपने इंटरसेप्टर वर्ग को परिभाषित:
तो मैं निम्नलिखित नीलामी है ऐसा करने के लिए। अगर मैं इस इंटरसेप्टर का उपयोग कर कक्षा को बांधता हूं तो मुझे कुछ लॉगिंग मिलती है। हालांकि जब मैं अपने सेम कक्षाओं को लक्षित करना चाहता हूं तो यह मुश्किल हो जाता है।
यदि मेरे पास @RequestScoped प्रकार का बीन है और यह मेरे इंटरसेप्टर को बांधता है तो यह काम करता है। हालांकि, अगर मेरे पास @ViewScoped प्रकार का बीन है तो यह नहीं है।
मैं @ViewScoped की परिभाषा को देखा और मैंने पाया:
@Retention(value=RUNTIME)
@Target(value=TYPE)
@Inherited
public @interface ViewScoped
मैं लग रहा है कि समस्या तथ्य में निहित है कि यह व्याख्या लक्ष्य प्रकार विधि और यह है कि नहीं है है क्लास विधियों को कॉल को अवरुद्ध करने के लिए मेरे इंटरसेप्टर को रोकता है।
क्या किसी के पास पहले भी यही समस्या थी? क्या किसी को पता है कि बीन के दायरे को विस्तारित करना संभव है ताकि @ViewScoped की प्रकृति को बदले बिना इसकी विधियों को अवरुद्ध किया जा सके?