我想通过将其存储为servlet上下文属性来共享我的servlet和我的webservice(JAX-WS)之间的对象。但是如何从Web服务中检索servlet上下文?
答案 0 :(得分:44)
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);
答案 1 :(得分:1)
如果您使用Maven添加此依赖项!!!
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
所以我解决了因为避免了获取ServletContext的冲突错误 INFO :
在课堂方法中我使用
@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());
答案 2 :(得分:-1)
如果您要共享的对象是文件,请说myFile.txt
,您可以使用以下方法:
我使用的最佳方法是:
Thread.currentThread().getContextClassLoader().getResource("myFile.txt").getPath()
这给出了放置在WebApp的myFile.txt
文件夹内/WEB-INF/classes/
目录中的任何文件WebContent
的路径。
在Eclipse JEE环境中,您需要将myFile.txt
文件(可能要在Web服务中读取)保存在src
文件夹中,以便将其传输到/WEB-INF/classes/
部署人员创建的文件夹。