Я использую следующий метод, чтобы получить ресурс из WAR-файла в WildFly: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. Поэтому я в основном застрял. Есть идеи?
откуда, вы пытаетесь открыть код? – UVM
Из метода @GET в веб-сервисе JAX-RS. –
В частности, из метода @GET в ** безстоящем ** веб-службе JAX-RS. –