2011-03-25 12 views
6

मैं अपने web.xml में कुछ init पैरा चाहता हूं और बाद में एप्लिकेशन में उन्हें पुनर्प्राप्त करना चाहता हूं, मुझे पता है कि जब मैं एक सामान्य सर्वलेट करता हूं तो मैं ऐसा कर सकता हूं। हालांकि resteasy के साथ मैं HttpServletDispatcher को मेरा डिफ़ॉल्ट सर्वलेट होने के लिए कॉन्फ़िगर करता हूं, इसलिए मुझे पूरा यकीन नहीं है कि मैं इसे अपने शेष संसाधन से कैसे एक्सेस कर सकता हूं। यह पूरी तरह से सरल हो सकता है या मुझे एक अलग दृष्टिकोण का उपयोग करने की आवश्यकता हो सकती है, किसी भी तरह से यह जानना अच्छा होगा कि आप क्या सोचते हैं। बाद मेरी web.xml है,आराम आसान और init पैरा - कैसे उपयोग करें?

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
<display-name>RestEasy sample Web Application</display-name> 
<!-- <context-param> 
     <param-name>resteasy.scan</param-name> 
     <param-value>true</param-value> 
</context-param> --> 

<listener> 
    <listener-class> 
     org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap 
    </listener-class> 
</listener> 

<servlet> 
    <servlet-name>Resteasy</servlet-name> 
    <servlet-class> 
     org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher 
    </servlet-class> 
    <init-param> 
     <param-name>javax.ws.rs.Application</param-name> 
     <param-value>com.pravin.sample.YoWorldApplication</param-value> 
    </init-param> 
</servlet> 

<servlet-mapping> 
    <servlet-name>Resteasy</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

</web-app> 

मेरा प्रश्न है कि कैसे मैं init-परम में कुछ स्थापित कर सकता है और फिर एक शोकहारा संसाधन में बाद में इसे पुनः प्राप्त। किसी भी संकेत की सराहना की जाएगी। धन्यवाद दोस्तों!

+0

बस सवाल स्पष्ट करने के लिए, यदि मैं कई शोकहारा संसाधन हैं मैं उनमें से प्रत्येक के लिए init-पैरामीटर की स्थापना की और बाद में पुन: प्राप्त करने में सक्षम होना चाहते हैं उस संसाधन के अंदर। यदि कोई बेहतर दृष्टिकोण है तो मैं भी उतना ही खुश हूं ... तो कोई भी ?? – opensourcegeek

उत्तर

21

जो आप अपने विधि में चाहते सुई @Context एनोटेशन का उपयोग करें:

@GET 
public Response getWhatever(@Context ServletContext servletContext) { 
    String myParm = servletContext.getInitParameter("parmName"); 
} 

@Context के साथ आप HttpHeaders, UriInfo, अनुरोध, HttpServletRequest, HttpServletResponse, ServletConvig, ServletContext, SecurityContext इंजेक्षन कर सकते हैं।

या कुछ और अगर आप इस कोड का उपयोग करें:

public class MyApplication extends Application { 
    public MyApplication(@Context Dispatcher dispatcher) { 
    MyClass myInstance = new MyClass(); 
    dispatcher.getDefautlContextObjects(). 
     put(MyClass.class, myInstance); 
    } 
} 

@GET 
public Response getWhatever(@Context MyClass myInstance) { 
    myInstance.doWhatever(); 
} 
+0

मैं देखता हूं कि आपका क्या मतलब है, क्या आप महान होंगे यदि आप कोड के बजाए web.xml के माध्यम से ऐसा कर सकते हैं - लेकिन आपकी प्रतिक्रिया के लिए धन्यवाद! – opensourcegeek

+0

अच्छा जवाब, @pravin अगर आपको यह मदद मिली तो आपको यह जवाब स्वीकार करना चाहिए। – gresdiplitude

+0

धन्यवाद ऐसा करने के लिए भूल गया! - मैं विभिन्न कारणों से आराम से अपाचे सीएक्सएफ में चले गए, फिर भी यह सही जवाब है। – opensourcegeek

संबंधित मुद्दे