Разверните простой пример Jax-RS в сообществе JBoss AS 7 - PullRequest
1 голос
/ 14 октября 2011

Я пытаюсь развернуть простой пример REST в JBOSS AS 7, но мне кажется, что я делаю что-то не так, и теперь я ничего не понимаю. Я использую плагин Eclipse для развертывания.

Класс, который я написал, следующий:

@Path("/resources")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
public class ReceivedImagePersister {

    @POST
    @Path("/image")
    public Response save(String entry) {
        return Response.ok().build();
    }

}

Затем я создаю web.xml

<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>API</display-name>

    <servlet-mapping>
        <servlet-name>javax.ws.rs.core.Application</servlet-name>
        <url-pattern>/resources/*</url-pattern>
    </servlet-mapping>

</web-app>

И jboss-web.xml

<jboss-web>
  <context-root>api</context-root>
</jboss-web>

Когда я развертываю приложение и пытаюсь отправить некоторые данные сервлету RESTful, ответ всегда таков:

(Не удалось найти ресурс для относительного: / изображение полного пути: http://localhost:8080/api/resources/image)

Нужно ли вносить некоторые изменения в конфигурацию?

Заранее большое спасибо.

Ответы [ 3 ]

4 голосов
/ 14 октября 2011

Я думаю, что ваш web.xml ваш шаблон URL должен / * то есть

<url-pattern>/resources/*</url-pattern>

должен быть

<url-pattern>/*</url-pattern>

То, что я получаю, это то, что вам нужно, пусть javax.ws.rs.core.Application анализирует ваш URL, начиная с http://localhost/api/, только тогда он сможет обнаружить, что существует ресурс с именем "resources", у которого есть метод "image"

В данный момент он пытается найтиресурс с именем "image", который находится под контекстным путем / api / resources /

Следующий URL-адрес может работать так, как он был настроен сейчас http://localhost:8080/api/resources/resources/image

0 голосов
/ 09 сентября 2014

Правильный URL-адрес для доступа к объявленному вами:

http://localhost:8080/api/resources/resources/image

Первый ресурс - это отображение сервлета, а второй - имя остального контроллера.

0 голосов
/ 14 октября 2011

У меня нет опыта работы с JBoss, но вам, вероятно, следует использовать Servlet 3.0 web.xml вместо 2.4, если вы хотите обеспечить лучшую совместимость с моделью развертывания Java EE 6.

...