Я разрабатываю некоторые веб-сервисы RESTful, используя следующие технологии.
* Java 1.7
* Jersey 2.4.1
* spring 3.2.1
* Jboss-5.1.0.GA
До сих пор я использовал eclipse для создания файла войны, как в разобранном, так и в сжатом виде. Я скопировал файлы по одному в {jboss-home}/server/web/deploy
и запустил сервер с помощью командной строки, запустив run.bat -c web
. В обоих случаях сервер запускается без ошибок, а файлы журналов идентичны. (временные метки исключены)
Когда я развертываю развернутый военный файл, а затем перехожу по URL-адресу http://mydomain.com:8080/{app}/rest/application.wadl
, трикотаж правильно идентифицирует аннотированные ресурсы, и я могу использовать их, как ожидалось.
майка с комментариями
@Path("/v1/ping")
@Service("pingV1")
public class PingV1 extends BaseResource {
@Autowired
private PingBusiness pingBusiness;
@GET
@Produces(MediaType.APPLICATION_XML)
public PingVO getPing(
@Context UriInfo uriInfo,
@Context HttpServletRequest httpServletRequest){
...
PingVO pingVO = pingBusiness.doGet();
...
return pingVO;
}
}
application.wadl (динамически сгенерированный)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application xmlns="http://wadl.dev.java.net/2009/02">
<doc xmlns:jersey="http://jersey.java.net/" jersey:generatedBy="Jersey: 2.4.1 2013-11-08 12:08:47"/>
<grammars>
<include href="application.wadl/xsd0.xsd">
<doc xml:lang="en" title="Generated"/>
</include>
</grammars>
<resources base="http://mydomain.com:8080/{app}/rest/">
<resource path="/v1/ping">...</resource>
<resource path="/">...</resource>
<resource path="application.wadl">...</resource>
</resources>
</application>
Однако, когда я развертываю сжатый файл .war и перехожу к тому же URL-адресу http://mydomain.com:8080/{app}/rest/application.wadl
, майка не находит аннотированный ресурс, и когда я нажимаю ожидаемые URL-адреса, jboss возвращает 404 - NOT FOUND.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application xmlns="http://wadl.dev.java.net/2009/02">
<doc xmlns:jersey="http://jersey.java.net/" jersey:generatedBy="Jersey: 2.4.1 2013-11-08 12:08:47"/>
<grammars/>
<resources base="http://mydomain.com:8080/{app}/rest/">
<resource path="application.wadl">...</resource>
</resources>
</application>
Наконец, я использовал WinRAR для извлечения содержимого сжатого файла войны в папку, а затем использовал Beyond Compare для сравнения папок исходной развернутой войны с контекстами, которые были только что извлечены, и они были ИДЕНТИЧНЫМИ.
Это заставляет меня поверить, что есть что-то уникальное в том, как jboss развертывает разнесенные войны по сравнению со сжатыми файлами войны, но я не понимаю, что это может быть и почему он ведет себя таким образом. Может ли кто-нибудь помочь или указать мне в новом направлении?
Хотя простой ответ может быть хорошо, просто разверните развернутый файл войны, я хотел бы понять, почему это происходит, и продолжать использовать мой существующий файл build.xml, который создает сжатый файл .war.