Kullanıcı kaynakları içeren basit bir web hizmeti (Jersey ve GlassFish) için iki REST sınıfı var - biri tüm kullanıcılar üzerinde (örneğin, @POSTing için bir fabrika) ve diğeri bireysel kullanıcılarda (ör. @GET, @PUT) , @DELETE). Bunlar sırasıylaPOST sırasında JAX-RS @Path farklı bir kaynağa nasıl sahip olurum?
@Stateless @Path("users") public class AllUsersResource {...}
@Stateless @Path("user") public class OneUserResource {...}
adresindedir. AllUsersResource yayın gönderirken ben
http://localhost:8080/.../user/152
Sorum bunun nasıl olduğunu, mesela yeni Kullanıcı (Response.created(uri).build()
aracılığıyla) Location dönmek istiyorum. AllUsersResource @Context UriInfo uriInfo enjekte eder, ancak bu bana @UrmakResource, sadece geçerli çağrı ("kullanıcılar") için bilgi vermez. yolu Sonunda o yansıma kullanmak basitçe çalışan var, ama kırılgan ve kirli olduğunu endişeliyim:
OneUserResource.class.getAnnotation(Path.class).value();
Denemek bulunan tek başka şeyler şu idi StackOverflow başarılı olamadı, aranıyor:
- com.sun.jersey.api.core.ResourceContext
- javax.ws.rs.core.UriInfo.getMatchedResources()
- @ javax.inject.Inject OneUserResource oneUserRes;
Herhangi bir yardım müthiş olurdu!
Her iki yöntemde de sorun olması gereken ** kök ** kaynak sınıflarının çalışması. Alt kaynaklardan kullanırsanız çalışmazlar ('IllegalArgumentException' atılır). Bu nedenle, POST isteğini işleyen bir alt kaynak kullandıysanız; ve 'Konum' başlığını içeren bir '201' döndürmek istediniz, hala şanssızsınız :( – curioustechizen