Шаблон URL Jax-RS вызывает ошибку 404 - PullRequest
0 голосов
/ 21 мая 2018

Я использую JBOSS 6.4 EAP в кислородном затмении.

У меня есть простой и работающий веб-сервис, который только что вернулся, жив.

Когда я настраиваю шаблон URL как "/ *"это выполнено как ожидалось.Когда я помещаю более существенный шаблон "/ rws / *" в шаблон url, я получаю 404

Мой URL-адрес localhost: 8080 / mesh / rws / menu / isAlive

ошибка web.xml Для этого сервлета нет соответствующего блока сервлета

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

Класс сервлета

@Path("/rws/menu")
public class MenuService
{
    @GET
    @Path("/isAlive")
    public Response isAlive()
    {
        return Response.ok("I am alive").build();
    }
}

Ошибка с сервера

JBWEB000065: HTTP-статус 404 - RESTEASY001185: Не удалось найти ресурс для относительного: / menu / isAlive полного пути: http://localhost:8080/mesh/rws/menu/isAlive

Контекстный параметр Я попытался добавить контекстный параметр в файл web.xml, как это предлагается в различных местах в строке, но, похоже, он уже установлен, и я не уверенкак перегрузить.

<context-param>
    <param-name>resteasy.servlet.mapping.prefix</param-name>
    <param-value>/rws</param-value>
</context-param >

выдает ошибку:

ОШИБКА [org.apache.catalina.core] (Пул потоков ServerService - 64) JBWEB001097: Ошибка запуска контекста / сетки: Java.lang.IllegalArgumentException: JBWEB000280: Дублированный параметр инициализации контекста resteasy.servlet.mapping.prefix

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Когда у вас есть /rws/* в шаблоне url, вы не должны положить /rws в @Path.Если вы сделаете это, то URL будет /rws/rws.Шаблон url является префиксом для всего приложения.Так что просто удалите /rws из @Path.

0 голосов
/ 21 мая 2018

Вот что я закончил.Я не могу дать полное объяснение того, почему это работает, но вот мое предположение.Это определяет новый сервлет с использованием класса core.Application, поэтому реализация по умолчанию, используемая в этом вопросе, игнорируется.Таким образом, нет необходимости устанавливать параметр контекста, как я пытался сделать в исходном вопросе.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

    <servlet>
        <servlet-name>EbigExtWS</servlet-name>
        <servlet-class>javax.ws.rs.core.Application</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>EbigExtWS</servlet-name>
        <url-pattern>/rws/*</url-pattern>
    </servlet-mapping>

</web-app>
...