我像这样设置了一个根资源Foo:
@ApplicationPath ("/foo")
@Path ("/")
public class Foo extends Application {
private static Map<String, Bar> map = new HashMap<> ();
@GET
public Collection<String> keys () {
return map.keySet ();
}
@Path ("{key}")
@PUT
public void put (@PathParam ("key") String k, Bar v) {
map.put (k, v);
}
@Path ("{key}")
public Bar get (@PathParam ("key") String k) {
return map.get (k);
}
}
我的子资源吧就像这样:
public class Bar {
private @JsonProperty String bar;
@GET
public String bar () {
return bar;
}
@Path ("bar")
@PUT
public void bar (String bar) {
this.bar = bar;
}
}
在GET
上调用/foo
可以正常工作并生成[]
。之后,使用正文PUT
(杰克逊进行序列化)调用/foo/a
到{"bar":"hello"}
就可以了,并按预期生成204
(无内容)。之后,GET
上的/foo
调用按预期生成["a"]
。然而,在GET
上调用/foo/a
会导致405
和服务器上的异常&#34; RESTEASY003650:找不到GET&#34;的资源方法。如果重要的话,我可以提供完整的堆栈跟踪。我使用Wildfly作为我的应用程序服务器,我的例子几乎是http://docs.jboss.org/resteasy/docs/1.0.1.GA/userguide/html/JAX-RS_Resource_Locators_and_Sub_Resources.html之上的数字的副本,我做错了什么?