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));