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

将我的浏览器指向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(一个接口)还定义了注释和方法,这可能是问题吗?我的印象是Jax-RS注释没有被继承。我有两个servlet并缺少某些东西吗?我有一个纯REST服务,只有一个servlet和相同的配置可以完成相同的事情。根据我如何更改配置,我也会从中得到405方法不允许。有任何想法吗?

最佳答案

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

10-01 02:26
查看更多