6 Stimmen

Rest easy und init params - wie zugreifen?

Ich möchte einige Init-Parameter in meinem web.xml haben und rufen Sie sie später in der Anwendung, ich weiß, ich kann dies tun, wenn ich ein normales Servlet haben. Mit resteasy konfiguriere ich jedoch HttpServletDispatcher als mein Standardservlet, so dass ich nicht ganz sicher bin, wie ich von meiner Rest-Ressource darauf zugreifen kann. Dies könnte ganz einfach sein, oder ich könnte einen anderen Ansatz verwenden müssen, so oder so wäre es gut zu wissen, was Sie Jungs denken. Nachfolgend ist meine web.xml,

<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>

Meine Frage ist, wie ich etwas in der init-param festlegen und dann später in einer restful Ressource abrufen. Für jeden Hinweis wäre ich dankbar. Danke Jungs!

22voto

Mark Lutton Punkte 6749

Verwenden Sie die @Context-Annotation, um Ihre Methode mit dem zu versehen, was Sie wollen:

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

Mit @Context können Sie HttpHeaders, UriInfo, Request, HttpServletRequest, HttpServletResponse, ServletConvig, ServletContext, SecurityContext injizieren.

Oder etwas anderes, wenn Sie diesen Code verwenden:

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();
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X