3
能否在JAX-RS(澤西)資源與子資源類可以分成兩個班?JAX-RS重構子資源到單獨的資源類?
目前,我有兩個組合成一個單一的資源類:
@Path("/session")
public class SessionResource {
@POST
@Produces("application/xml")
public Response createSession() {
...
ResponseBuilder builder = Response.created(URI.create("/session/" + new Date().toString()));
return builder.build();
}
@DELETE
public Response destroySession() {
...
ResponseBuilder builder = Response.noContent();
return builder.build();
}
// TrustedSession sub-resource
@POST
@Path("/trusted")
@Produces("application/xml")
public Response createTrustedSession() {
...
ResponseBuilder builder = Response.created(URI.create("/session/" + new Date().toString()));
return builder.build();
}
@DELETE
@Path("/trusted")
public Response destroyTrustedSession() {
...
ResponseBuilder builder = Response.noContent();
return builder.build();
}
}
我想給TrustedSession代碼移到一個單獨的種源:
@Path("/session/trusted")
public class createSession {
@POST
@Produces("application/xml")
public Response createTrustedSession() {
...
ResponseBuilder builder = Response.created(URI.create("/session/trusted/" + new Date().toString()));
return builder.build();
}
@DELETE
public Response destroySession() {
...
ResponseBuilder builder = Response.noContent();
return builder.build();
}
}
當代碼編譯時,資源路由不起作用。
「UriBuilder#fromResource(Class)」的問題是它僅適用於**根資源**。在上面的例子中,如果你在'TrustedSession#createTrustedSession()'中使用了'UriBuilder.fromResource(this.getClass())',它會拋出'IllegalStateException'。我還沒有找到一個優雅的解決方案。 – curioustechizen 2012-12-13 06:54:56
我找到一種方式來獲得這甚至從子資源工作。發表了答案[這裏](http://stackoverflow.com/a/13854924/570930)。 – curioustechizen 2012-12-13 07:22:01