Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jersey/web.xml/Servlet路由问题_Java_Rest_Web Applications_Jersey_Jax Rs - Fatal编程技术网

Java Jersey/web.xml/Servlet路由问题

Java Jersey/web.xml/Servlet路由问题,java,rest,web-applications,jersey,jax-rs,Java,Rest,Web Applications,Jersey,Jax Rs,因此,这将主要是说明问题的代码,但问题如下: 将我的浏览器指向localhost:8080/licsrv/items返回404 relvant web.xml <!-- Java Remoting Servlet --> <servlet> <servlet-name>licenseGenService</servlet-name> <servlet-class>org.springframewo

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

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

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

许可证服务
org.springframework.web.context.support.HttpRequestHandlerServlet
许可证服务
/远程处理/许可
许可证服务
com.sun.jersey.spi.spring.container.servlet.SpringServlet
com.sun.jersey.config.property.packages
mypackage.rest
1.
许可证服务
/命令
许可证服务
/项目
许可证服务
/顾客
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>";
    }

.....
}
@Path(“/items”)
公共类ItemsResourceImpl实现ItemsResource
{
@得到
@生成(“文本/html”)
公共字符串testItems()
{
return“项目资源测试器项目资源可用。

”; } ..... }
然后我的applicationContext.xml中就有了这个bean


现在ItemsResource(一个接口)也定义了注释和方法,这可能是问题所在吗?我的印象是Jax-RS注释不是继承的。是因为我有两个Servlet,却遗漏了什么吗?我有一个纯REST服务,只有一个servlet和相同的配置来做相同的事情。取决于我如何改变配置,我得到405方法也不允许离开它。有什么想法吗?

servlet映射对我来说是可疑的。我不熟悉spring,但如果servlet映射是这样的:

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

许可证服务
/命令/*

url应该是:
localhost:8080/licsrv/orders/items
,具有相同的
ItemsResourceImpl
实现。

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

有三个不同的rest类,ItemsResourceImpl、CustomerResourceImpl、,和OrdersResourceImpl,它们应分别对/orders/customers和/items作出响应。此处的问题和答案在
/*
中有所不同。我认为opsweb.xml中缺少它们。