【发布时间】:2014-07-13 17:54:26
【问题描述】:
我在 WildFly 中使用以下方法从 WAR 文件中获取资源:
this.getClass().getResource(relativePath)
当应用程序部署为分解的 WAR 时,它可以工作。 它过去也可以与压缩 WAR 一起工作。昨天,我在 Eclipse 中对项目进行了清理和重建,但它刚刚停止工作。
当我检查资源根目录时:
logger.info(this.getClass().getResource("/").toExternalForm());
我明白了:
file:/C:/JBoss/wildfly8.1.0.CR1/modules/system/layers/base/org/jboss/as/ejb3/main/timers/
所以,难怪它不起作用。它可能与 JBoss 模块加载有关,但我不知道这是一个错误还是正常行为。
我在 StackOverflow 上发现了各种类似的问题,但没有适用的解决方案。建议之一是像这样使用 ServletContext:
@Resource
private WebServiceContext wsContext;
...
ServletContext servletContext = (ServletContext)this.wsContext.getMessageContext()
.get(MessageContext.SERVLET_CONTEXT);
servletContext.getResource(resourcePath);
但是,当我尝试以这种方式获取 MessageContext 时,我得到了 IllegalStateException。所以我基本上被卡住了。有什么想法吗?
【问题讨论】:
-
您试图从哪里访问此代码?
-
来自 JAX-RS Web 服务中的 @GET 方法。
-
更具体地说,来自 stateless JAX-RS Web 服务中的 @GET 方法。
标签: java jboss getresource wildfly-8