Не удается получить доступ к API JAX-RS - PullRequest
0 голосов
/ 12 мая 2019

Я много выглядел и просто не могу заставить мой JAX-RS API работать.

У меня есть файл WAR, который я развернул на tomcat (работает в Docker), и я могу получить доступ кстраница приветствия, но если я пытаюсь получить доступ к URL-адресу REST API, я всегда получаю 404 NotFound Response.

Может быть, кто-то может просмотреть мои вещи и сказать мне, если что-то отсутствует или просто неправильно (Это было бы многоприветствуется):

Example.java

@Path("/example")
@Transactional
public class Example {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getExample() {
        return "good";
    }

}

ExampleApplication.java

@ApplicationPath("/rest")
public class ExampleApplication extends Application {
    @Override
    public Set<Class<?>> getClasses() {
        final Set<Class<?>> endpoints = new HashSet<Class<?>>();
        endpoints.add(Example.class);
        return endpoints;
    }

}

Web.xml (в руководствах по Jax-RS упоминается, что никакое отображение сервлета не являетсятребуется, если у меня есть класс 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_2_5.xsd" version="2.5">
  <display-name>presentation</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
   <filter>
        <filter-name>UrlRewriteFilter</filter-name>
        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
        <init-param>
            <param-name>logLevel</param-name>
            <param-value>DEBUG</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>UrlRewriteFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

urlrewrite.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
        "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">

<urlrewrite>
    <!-- do not redirect references to static resources -->
    <rule>
        <from>/assets/*</from>
        <to last="true">-</to>
    </rule>
    <!-- do not redirect references to REST api -->
    <rule>
        <from>/rest/*</from>
        <to last="true">-</to>
    </rule>
    <!-- redirect everything else -->
    <rule match-type="regex" enabled="true">
        <condition type="request-filename" operator="notfile"/>
        <condition type="request-filename" operator="notdir"/>
        <condition type="request-uri" operator="notequal">.*(\.html|\.js|\.css|\.ico)$</condition>
        <from>^/(.*)$</from>
        <to last="true">/index.html</to>
    </rule>
</urlrewrite>

Мои запросы почтальона: https://imgur.com/a/TO9FGua

Здесь вы можете видеть, что отображениеработает, так как все, кроме / rest / *, сопоставлено со страницей приветствия (я пробовал с /somethingelse/sad/asd).

1 Ответ

2 голосов
/ 12 мая 2019

Вы должны позвонить /rest/example/all вместо /rest/example.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...