Java 泽西url映射错误

Java 泽西url映射错误,java,web-applications,jersey,web.xml,jersey-1.0,Java,Web Applications,Jersey,Web.xml,Jersey 1.0,我有一个具有以下文件夹结构的web应用程序 ProjectName |.. src/main/java |.. folder1 |.. restEndpoint1.java , restendpoint2.java etc restendpoint1.java与 @Path("/static1/static2") public class DoStuff { @POST @Path("/static3") @Consumes(MediaType.

我有一个具有以下文件夹结构的web应用程序

ProjectName 
     |.. src/main/java
       |.. folder1
         |.. restEndpoint1.java , restendpoint2.java etc 
restendpoint1.java与

@Path("/static1/static2")
public class DoStuff {

@POST
@Path("/static3")
@Consumes(MediaType.APPLICATION_XML)
@Produces("application/xml")
public Response validation(String inputXML){
我的web.xml是:

<servlet>
        <servlet-name>jersey-servlet</servlet-name>
        <servlet-class>
            com.sun.jersey.spi.container.servlet.ServletContainer
        </servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>folder1</param-value>
        </init-param>
        <init-param>
            <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>jersey-servlet</servlet-name>
        <url-pattern>/folder1/*</url-pattern>
    </servlet-mapping>
是否有一种方法可以从映射中删除foldername,以便生成映射

localhost:port/projectName/{restendpoint1.path}
如何操作web.xml来实现这一点


我需要这样做的原因是,我需要文件夹结构来确保代码的可维护性(而不是将所有内容分组到一个类中并将web.xml映射到该类),但我还必须避免在映射中获取
foldername

不要将
folder1
放在
url模式中。您已经将
folder1
放入正在扫描的服务包中。通过将
folder1
放入
url模式
,表示您希望它位于url中。把你想要的URL放在那里。所以

<servlet-mapping>
     <servlet-name>jersey-servlet</servlet-name>
     <url-pattern>/*</url-pattern>
</servlet-mapping>

泽西servlet
/*
这将使所有呼叫转到您的rest服务。但是,您可能应该在其中放置一些路径,因为您不想将所有URL映射到REST服务(因为还有其他URL不是REST服务)。也许像

<servlet-mapping>
     <servlet-name>jersey-servlet</servlet-name>
     <url-pattern>/services/*</url-pattern>
</servlet-mapping>

泽西servlet
/服务/*

好的,您可以继续在原始URL上承载它,然后添加一个控制器方法将请求转发到缩短的URL。但是,如果您希望在缩短的URL上实际承载端点,则必须以某种方式(而不是使用server.xml)将端点告知服务器,因为您无法在此处更改上下文。
<servlet-mapping>
     <servlet-name>jersey-servlet</servlet-name>
     <url-pattern>/services/*</url-pattern>
</servlet-mapping>