java - Jersey/web.xml/Servlet 路由问题

标签 java rest web-applications jersey jax-rs

因此,这主要是说明问题的代码,但问题如下:

将我的浏览器指向 localhost:8080/licsrv/items 返回 404。

相关的web.xml

<!-- Java Remoting Servlet -->
    <servlet>
        <servlet-name>licenseGenService</servlet-name>
        <servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>licenseGenService</servlet-name>
        <url-pattern>/remoting/licensing</url-pattern>
    </servlet-mapping>

    <!-- Restful API Servlet-->
    <servlet>
        <servlet-name>licensingRestService</servlet-name>
        <servlet-class>
            com.sun.jersey.spi.spring.container.servlet.SpringServlet
        </servlet-class>
        <init-param>
            <param-name>
                    com.sun.jersey.config.property.packages
            </param-name>
            <param-value>
                mypackage.rest
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>licensingRestService</servlet-name>
        <url-pattern>/orders</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>licensingRestService</servlet-name>
        <url-pattern>/items</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>licensingRestService</servlet-name>
        <url-pattern>/customers</url-pattern>
    </servlet-mapping>

ItemsResourceImpl.java

@Path("/items")
public class ItemsResourceImpl implements ItemsResource 
{

@GET
    @Produces("text/html")
    public String testItems()
    {
        return "<html><body><h1>Items Resource Tester</h1><p>Items Resource is available.</p></body></html>";
    }

.....
}

然后我的 applicationContext.xml 中有这个 bean

现在 ItemsResource(一个接口(interface))也定义了注释和方法,这可能是问题所在吗?我的印象是 Jax-RS 注释不是继承的。是因为我有两个 servlet 并且缺少某些内容吗?我有一个纯 REST 服务,只有一个 servlet 和相同的配置来做同样的事情。根据我更改配置的方式,我也会得到 405 Method Not allowed 的信息。有什么想法吗?

最佳答案

尝试访问http://localhost:8080/licsrv/items/items@Path 注释定义相对于应用程序根目录的路径(由 web.xml 中的 servlet 映射定义)。

关于java - Jersey/web.xml/Servlet 路由问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12628112/

相关文章:

java - 如何在应用程序部署后立即打开所有连接?

java - Java中的多态问题

java - 导入 java.net.URLEncoder 时 NetBeans 7.4 找不到符号错误

maven - log4j2不登录部署在tomcat上的webapplication

node.js - 我是否需要在 Node.js 中创建 2 个独立的应用程序,一个用于访问者,一个用于 CRUD 管理员?

java - 在 Spring Boot 中启用 TLSv1 密码

android - 解析 REST API 不返回客户端 key

ajax - 使用 API 身份验证和未登录的用户构建 API 驱动的网站

java - 在 Tomcat7 上创建 REST 服务的依赖项(使用 Maven 的 Netbeans 项目)

c# - 如何使用服务器端任务的进度更新网页?