Я много выглядел и просто не могу заставить мой 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).