मुझे समझने में कुछ समस्या है कि क्यों @Context
निर्भरता इंजेक्शन HttpServletRequest या HttpServletResponse की बजाय $ प्रॉक्सी (यादृच्छिक संख्या) उदाहरणों का संग्रह देता है।@Context HttpServletRequest के बजाय प्रॉक्सी लौटाता है (प्रॉक्सी के दायरे में कोई थ्रेड स्थानीय मान नहीं)
मैं ग्लासफ़िश 3.1.2.2 का उपयोग जर्सी के संस्करण (जर्सी: 1.11.1) के साथ कर रहा हूं और मेरा ऐप ईएआर एप्लिकेशन के रूप में बनाया गया है।
मेरे पास सरल @ रिमोट इंटरफ़ेस है जहां मैं अपनी विधियों और आरईएसटी सेवाओं को बिना किसी समस्या के काम करता हूं, लेकिन जिस क्षण मैं HttpServletRequest जानकारी तक पहुंचने का प्रयास करता हूं, यह केवल समस्याओं का कारण बनता है।
मैं अपने सत्र सेम में निजी क्षेत्रों टिप्पणी किए गए:
@POST
@Path("authenticate")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public Response authenticate(@FormParam("username") String username, @FormParam("password") String password, @Context HttpServletRequest request, @Context HttpServletResponse response);
जब मैं कोशिश करते हैं और सिर्फ विधि डिबग:
@Context
private HttpServletRequest request;
@Context
private HttpServletResponse response;
और यह भी बनाई गई विधि हस्ताक्षर मापदंडों के सेट के रूप में शामिल करने के लिए @Context एक प्रविष्टि के बाद मैं देख सकता हूं कि वैश्विक अनुरोध और प्रतिक्रिया वस्तुएं शून्य हैं जहां स्थानीय विधि उदाहरण $ ProxyXXX प्रकार के हैं।
समस्या यह है कि मैं इन वस्तुओं तक पहुंच नहीं सकता (या मुझे यकीन नहीं है)। वेब वे मेरे पास उपलब्ध होना चाहिए, लेकिन इस समय मैं इन तक पहुँचने का प्रयास पर ट्यूटोरियल के अनुसार, इस फेंक दिया जा रहा है:
WARNING: StandardWrapperValve[RestDataService]: PWC1406: Servlet.service() for servlet RestDataService threw exception
java.lang.IllegalStateException: No thread local value in scope for proxy of class $Proxy245
at com.sun.jersey.server.impl.ThreadLocalInvoker.invoke(ThreadLocalInvoker.java:93)
at $Proxy245.getContextPath(Unknown Source)
यह कैसे मैं इन (इस उदाहरण मैं बस फोन में कॉल करने के लिए कोशिश कर रहा हूँ है getContextPath)
@Override
public Response authenticate(String username, String password, HttpServletRequest request, HttpServletResponse response) {
System.out.println("just a test: " + request.getContextPath());
मुझे यहां क्या याद आ रही है? क्या किसी ने भी इसी तरह की समस्या का अनुभव किया है?
ग्रेग
मुझे कुछ समस्या हल हो गई है, आप संदर्भ ले सकते हैं -> http://stackoverflow.com/questions/14397971/spring-jetty-uriinfo-inject-is-null/14400039#14400039 –