您可以使用侦听器来初始化缓存,并在Web应用程序启动之前将其设置为上下文作为属性。类似于以下内容:
package org.paulvargas.shared;import java.util.HashMap;import java.util.Map;import javax.servlet.ServletContext;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;public class CacheListener implements ServletContextListener { public void contextInitialized(ServletContextEvent sce) { Map<String, String> dummyCache = new HashMap<String, String>(); dummyCache.put("greeting", "Hello Word!"); ServletContext context = sce.getServletContext(); context.setAttribute("dummyCache", dummyCache); } public void contextDestroyed(ServletContextEvent sce) { ServletContext context = sce.getServletContext(); context.removeAttribute("dummyCache"); }}该侦听器在中配置
web.xml。
<listener> <listener-class>org.paulvargas.shared.CacheListener</listener-class></listener><servlet> <servlet-name>restSdkService</servlet-name> <servlet-class> org.apache.wink.server.internal.servlet.RestServlet </servlet-class> <init-param> <param-name>applicationConfigLocation</param-name> <param-value>/WEB-INF/application</param-value> </init-param></servlet><servlet-mapping> <servlet-name>restSdkService</servlet-name> <url-pattern>/rest/*</url-pattern></servlet-mapping>
您可以使用
@Context注释来注入
ServletContext和检索属性。
package org.apache.wink.example.helloworld;import java.util.*;import javax.servlet.ServletContext;import javax.ws.rs.*;import javax.ws.rs.core.*;import org.apache.wink.common.model.synd.*;@Path("/world")public class HelloWorld { @Context private ServletContext context; public static final String ID = "helloworld:1"; @GET @Produces(MediaType.APPLICATION_ATOM_XML) public SyndEntry getGreeting() { Map<String, String> dummyCache = (Map<String, String>) context.getAttribute("dummyCache"); String text = dummyCache.get("greeting"); SyndEntry synd = new SyndEntry(new SyndText(text), ID, new Date()); return synd; }}


