我如何从JAX-WS Web服务中访问ServletContext?

我想通过将它存储为servlet上下文属性来在我的servlet和我的web服务(JAX-WS)之间共享一个对象。 但是,我怎样才能从Web服务检索servlet上下文?

JAX-WS通过消息上下文使servlet上下文可用,该上下文可以使用Web服务上下文来检索。 插入以下成员将导致JAX-WS将对Web服务上下文的引用注入到Web服务中:

import javax.annotation.Resource; import javax.servlet.ServletContext; import javax.xml.ws.WebServiceContext; import javax.xml.ws.handler.MessageContext; ... @Resource private WebServiceContext context; 

然后,您可以使用以下方式访问servlet上下文:

 ServletContext servletContext = (ServletContext) context.getMessageContext().get(MessageContext.SERVLET_CONTEXT); 

如果你使用Maven添加这个依赖项!

  <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.4</version> <scope>provided</scope> </dependency> 

所以我解决了避免冲突错误获取ServletContext 信息:

在课堂上我使用的方法

 @WebService(endpointInterface = "choice.HelloWorld") public class HelloWorldImpl implements HelloWorld { @Resource private WebServiceContext context; public String sayHi(String text) { HttpServletRequest request =(HttpServletRequest) context.getMessageContext().get(MessageContext.SERVLET_REQUEST); System.out.println(request.getContextPath());