पर नाम बाइंडिंग के माध्यम से विशिष्ट विधि के साथ मिलान करें, मैं RESTeasy documentation सुझावों का पालन करके, मेरे कुछ एपीआई कॉल से जुड़ा हुआ एक प्री-मेलिंग फ़िल्टर निर्दिष्ट करने का प्रयास कर रहा हूं।रीस्टेसी
नाम बाध्यकारी:: यहाँ की तरह क्या मेरी कोड दिखता है
@NameBinding
public @interface ValidateFoo {}
संसाधन:
@Path("/foo/bar")
@Produces(MediaType.APPLICATION_JSON)
public class FooBar {
@GET
@ValidateFoo
public Object doStuff() {
//do stuff
}
@POST
public Object doAnotherStuff() {
//do another stuff
}
}
फिल्टर:
@ValidateFoo
@Provider
@PreMatching
public class FooValidation implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext reqContext) throws IOException {
//validate stuff
}
}
समस्या है: FooValidation फिल्टर हर से पहले चलाता है विधि कॉल (उदाहरण: जीईटी और POSTs से पहले/foo/bar), चालू नहीं @ValidateFoo
के साथ एनोटेटेड गीत (मुझे एक बग लगता है)। अगर मैं फ़िल्टर से @Provider
एनोटेशन हटा देता हूं, तो यह किसी भी कॉल (अपेक्षित के रूप में) से पहले नहीं चलेगा।
मैं वेबलॉगिक या टॉमकैट का उपयोग करके लगातार इस व्यवहार को देख रहा हूं। मेरा निर्भरता प्रबंधन मैवेन के माध्यम से किया जाता है, और रीस्टेसी संस्करण 3.0-बीटा -3 है।
कोई भी व्यक्ति एक ही व्यवहार का अनुभव/अनुभव कर रहा है? मैंने JBoss forums पर एक और समस्या के साथ एक और उपयोगकर्ता को देखा है, अब तक कोई किस्मत नहीं है।
अद्यतन: अभी भी RESTeasy 3.0.1-Final के साथ एक ही समस्या का सामना करना पड़ रहा है।
आपके सुझाव के लिए धन्यवाद। मैंने कोशिश की, लेकिन बदलाव के बाद भी, फ़िल्टर अभी भी मेरे ऐप पर प्रत्येक कॉल से पहले कॉल किया जा रहा है, न कि केवल @ValidateFoo के साथ एनोटेटेड। – Viccari
ठीक है, अब हम इसे काम करने में सक्षम थे। ऐसा लगता है कि रीस्टेसी को '@ प्रीमैचिंग' एनोटेशन पसंद नहीं आया। अपने सुझाव का पालन करके और '@ प्रीमैचिंग' एनोटेशन को हटाकर, सबकुछ अपेक्षित के रूप में काम करता था। धन्यवाद! – Viccari
यह समझ में आता है, क्योंकि '@ प्रीमैचिंग' का मतलब रीस्टेसी संसाधन के अनुरोध को मैप करने से पहले है, इसलिए उस बिंदु पर रीस्टेसी को पता नहीं है कि कोई नेमबाइंडिंग है या नहीं। – stackoverflower