如何从JAX-WS Web服务中访问ServletContext?
-
06-07-2019 - |
题
我想通过将其存储为servlet上下文属性来共享我的servlet和我的webservice(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());
如果您要共享的对象是文件,例如 myFile.txt
,您可以使用以下方法:
我使用的最佳方法是:
Thread.currentThread().getContextClassLoader().getResource("myFile.txt").getPath()
这给出了 / WEB-INF / classes /
目录下的 webContent
目录下的任何文件 myFile.txt
的路径。 Web应用程序。
在Eclipse JEE环境中,您需要保留文件 myFile.txt
,您可能希望在Web服务中读取 src
文件夹中的文件。部署者将其传送到 / WEB-INF / classes /
文件夹。
不隶属于 StackOverflow