(我不小心删除了我在这个问题中提到的要点;抱歉给您带来不便。)
我正在尝试使用Servlet 3.0 API在@Path
之后部署Jersey根资源(使用Jersey's user guide注释注释的资源)。
我创建了一个包含两个类的gist at GitHub:Foo.java
,它是Application
的子类,通过其{{3}公开Bar.java
(资源类) } 方法。 (也有一个getClasses()
,所以任何人都可以轻易地为自己尝试这个。)
但是,当我尝试将打包的war部署到Jetty 8.0.x实例时,我得到了pom.xml
。
Foo.java
,调用其getClasses()
方法,而永远不会调用Bar.java
。
我可以通过http://localhost:8080/
访问Jetty的欢迎页面,但我无法访问http://localhost:8080/foo
或http://localhost:8080/foo/bar
。后两者导致以下错误:
未找到错误
自定义404页面
可能是什么问题?我在这里做错了吗?
鉴于我使用的WAR(test-0.0.1-SNAPSHOT.war
),我的应用程序路径变为http://localhost:8080/test-0.0.1-SNAPSHOT/foo/bar
而不是http://localhost:8080/foo/bar
。看看我在那里做了什么?好。在你的脑海中刻上这个或者你的生命中会损失3到5小时!
答案 0 :(得分:1)
行。我已经解决了这个问题。
我的应用程序的路径不在http://localhost:8080/foo/bar
,而在http://localhost:8080/<the name of my war file>foo/bar
。因此,我发布的pom.xml
已成为http://localhost:8080/test-0.0.1-SNAPSHOT/foo/bar
。
我讨厌WAR文件。
答案 1 :(得分:0)
您使用 @Path 进行了一次通话,而另一次使用 @ApplicationPath 进行了调用,方法中没有@Path。
尽可能here,
JAX-RS API(来自版本1.1.4)引入了一个特定的注释(@ javax.ws.rs.ApplicationPath),它提供了web.xml配置的替代方法:
但是你需要在被调用的方法上至少有一个@Path。但是,最简单的事情可能是从经典的旧web.xml开始,然后在Resources上使用@Path。你会在网上得到很多例子,而@ApplicationPath并不常见。
答案 2 :(得分:0)
虽然这不是你的问题,如果你试图在Cargo的Jetty 8中部署,你可能会遇到这个错误:http://jira.codehaus.org/browse/CARGO-1133