Java Jersey servlet映射混乱

Java Jersey servlet映射混乱,java,web-services,servlets,jersey-2.0,Java,Web Services,Servlets,Jersey 2.0,有人能用通俗易懂的英语解释一下这是如何工作的(或者至少解释一下为什么我的结构不工作)?我希望在我的Jersey servlet资源中有一个名为ExportLicenseInfo的函数映射到http://example.com/myApp/export/software_licenses.{year}-{month}.{format},例如:http://example.com/myApp/export/software_licenses_2013-10.csv web.xml中的Servlet配

有人能用通俗易懂的英语解释一下这是如何工作的(或者至少解释一下为什么我的结构不工作)?我希望在我的Jersey servlet资源中有一个名为
ExportLicenseInfo
的函数映射到
http://example.com/myApp/export/software_licenses.{year}-{month}.{format}
,例如:
http://example.com/myApp/export/software_licenses_2013-10.csv

web.xml中的Servlet配置:

<servlet>
    <servlet-name>ExportServlet</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>

    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>com.mycompany.app.ExportApplication</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>ExportServlet</servlet-name>
    <url-pattern>/export</url-pattern>
</servlet-mapping>
当我试图访问资源时,我得到了404。泽西跟踪日志:

Feb 21, 2014 2:41:46 PM org.glassfish.jersey.filter.LoggingFilter log
INFO: 6 * LoggingFilter - Request received on thread http-bio-8080-exec-67
6 > GET http://localhost:8080/app/export/software_licenses_2013-10.csv
6 > host: localhost:8080
6 > connection: keep-alive
6 > cache-control: max-age=0
6 > accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
6 > user-agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36
6 > accept-encoding: gzip,deflate,sdch
6 > accept-language: en
6 > cookie: JSESSIONID=DB64E0B066BDEE8CABFC94686AD6ACDC.test; JSESSIONIDSSO=61B51CEED61F8F6CE8A8DB46B38BAC9F; i18next=en

Feb 21, 2014 2:41:46 PM org.glassfish.jersey.filter.LoggingFilter log
INFO: 6 * LoggingFilter - Response received on thread http-bio-8080-exec-67
6 < 404
2014年2月21日下午2:41:46 org.glassfish.jersey.filter.LoggingFilter log
信息:6*LoggingFilter-在线程http-bio-8080-exec-67上收到请求
6>获得http://localhost:8080/app/export/software_licenses_2013-10.csv
6>主机:本地主机:8080
6>连接:保持活动状态
6>缓存控制:最大年龄=0
6>接受:text/html、application/xhtml+xml、application/xml;q=0.9,图像/webp,*/*;q=0.8
6>用户代理:Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/32.0.1700.107 Safari/537.36
6>接受编码:gzip、deflate、sdch
6>接受语言:en
6>cookie:JSESSIONID=DB64E0B066BDEE8CABFC94686AD6ACDC.test;JSSessionIDSSO=61B51CEED61F8F6CE8A8DB46B38BAC9F;i18next=en
2014年2月21日下午2:41:46 org.glassfish.jersey.filter.LoggingFilter日志
信息:6*LoggingFilter-在线程http-bio-8080-exec-67上收到响应
6 < 404

尝试如下映射jersey servlet:

<servlet-mapping>
<servlet-name>ExportServlet</servlet-name>
<url-pattern>/export/*</url-pattern>
</servlet-mapping>

ExportServlet
/出口/*

您的
ExportResource
不是Servlet;我知道。我的servlet是一个调用包的jersey servlet。哦,我得到了一个404。我会更新我的问题,那不是jersey servlet。显然,您正在将
“/export”
路径映射到一个不存在的servlet。这就是你得到404的原因。相反,显示jersey servlet的web.xml配置。假设
ExportServlet
映射到jersey rest dispatcher servlet,则将
/export
映射到rest服务,该服务在该路径内响应
/export
,因此,我认为您服务的正确url是
http://example.com/myApp/export/export/software_licenses_2013-10.csv
。谢谢!我刚刚用那个模式完成了工作。在我的Servlet资源中,我还必须将类的
@Path
注释从
'/export'
更改为
'/'
<servlet-mapping>
<servlet-name>ExportServlet</servlet-name>
<url-pattern>/export/*</url-pattern>
</servlet-mapping>