Отдыхайте спокойно и инициализируйте параметры - как получить доступ? - PullRequest
6 голосов
/ 25 марта 2011

Я хотел бы иметь некоторые параметры инициализации в моем web.xml и получить их позже в приложении, я знаю, что могу сделать это, когда у меня есть обычный сервлет.Однако с помощью resteasy я настраиваю HttpServletDispatcher в качестве моего сервлета по умолчанию, поэтому я не совсем уверен, как получить к нему доступ из своего ресурса отдыха.Это может быть очень просто, или мне может понадобиться другой подход, в любом случае было бы хорошо узнать, что вы, ребята, думаете.Ниже приведен мой 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>

Мой вопрос заключается в том, как установить что-то в init-param, а затем извлечь его позже в ресурсе restful.Любые советы будут оценены.Спасибо, ребята!

1 Ответ

22 голосов
/ 04 апреля 2011

Используйте аннотацию @Context, чтобы добавить в свой метод все, что вы хотите:

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

С помощью @Context вы можете вводить HttpHeaders, UriInfo, Request, 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();
}
...