我想通过将其存储为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 / 文件夹。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top