每天晚上,XML文档都会出现在WS服务器的文件夹中。 我希望Web服务在某个时间读取这个XML文件(让我们说在05:00)并将其放在存储在内存中的对象中。
我怎样才能做到这一点?我应该使用哪个对象? 我打算使用JAX-WS。是否也可以使用JAX-RS?
韩国社交协会
答案 0 :(得分:0)
您可以将其作为属性存储在应用程序的ServletContext
中。 Web模块中的任何JAX-WS服务或JAX-RS资源都可以访问它。作为额外的好处,如果您的JAX-WS服务和JAX-RS资源位于同一模块(war)中,它们将共享您放置在那里的对象/文档的实例。
对于JAX-RS资源:
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.servlet.ServletContext;
@Path("myresource")
public class MyResource {
@Context ServletContext context;
@GET
@Produces("text/plain")
public String getMyResource() {
return context.getAttribute("cachedDocument");
}
}
对于JAX-WS服务:
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.annotation.Resource;
import javax.servlet.ServletContext;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;
@WebService
public class MyService {
@Resource
private WebServiceContext context;
@WebMethod
public String getDocument() {
ServletContext servletContext =
(ServletContext) context.getMessageContext().get(MessageContext.SERVLET_CONTEXT);
return servletContext.getAttribute("cachedDocument");
}
}
另见:ServletContext javadocs。