3 回答
TA贡献1725条经验 获得超7个赞
Class#getResourceAsStream(String)在类路径中搜索对类加载器和资源的委托的调用。换句话说,你当前的代码将无法正常工作,你应该把abc.txt在WEB-INF/classes,或者WEB-INF/lib如果打包在一个jar文件。
或使用ServletContext.getResourceAsStream(String)该允许servlet容器来使资源可从任何地点一个servlet,而无需使用一个类加载器。因此,从Servlet使用它:
this.getServletContext().getResourceAsStream("/WEB-INF/abc.txt") ;
但是有什么方法可以从Web服务调用getServletContext吗?
如果使用的是JAX-WS,则可以WebServiceContext注入:
@Resource
private WebServiceContext wsContext;
然后从中获取ServletContext:
ServletContext sContext= wsContext.getMessageContext()
.get(MessageContext.SERVLET_CONTEXT));
TA贡献1865条经验 获得超7个赞
代替
InputStream fstream = this.getClass().getResourceAsStream("abc.txt");
采用
InputStream fstream = this.getClass().getClassLoader().getResourceAsStream("abc.txt");
这样,它将从根目录而不是当前调用类的路径进行查看
添加回答
举报