gpt4 book ai didi

java - 无法访问 JAX-RS api

转载 作者:行者123 更新时间:2023-12-02 01:30:46 26 4
gpt4 key购买 nike

我看了很多,但似乎无法让我的 JAX-RS API 工作。

我有一个部署到 tomcat(在 docker 中运行)的 WAR 文件,并且我能够访问欢迎页面,但如果我尝试访问 REST API url,我总是会收到 404 NotFound 响应。

也许有人可以检查我的东西并告诉我是否有任何东西丢失或有问题(我们将不胜感激):

示例.java

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

}

示例应用程序.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 类,则不需要 Servlet 映射)。

<?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>

我的 postman 请求: /image/2FT2j.jpg

在这里您可以看到映射有效,因为除/rest/* 之外的所有内容都映射到欢迎页面(我已使用/somethingelse/sad/asd 尝试过)。

最佳答案

您应该调用 /rest/example/all 而不是 /rest/example

关于java - 无法访问 JAX-RS api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56099530/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com