Sağlayıcımı, jersey API tarafından sağlanan Exceptionmapper'ı uygulayan formata nasıl programlı olarak kaydederim? @Provider ek açıklamasını kullanmak istemiyorum ve ResourceConfig kullanarak sağlayıcıyı kaydetmek istiyorum, bunu nasıl yapabilirim? ÖrneğinBir hizmet sağlayıcısını programlı olarak istisnai uygulayan jersey içinde kaydetme
:
public class MyProvider implements ExceptionMapper<WebApplicationException> extends ResourceConfig {
public MyProvider() {
final Resource.Builder resourceBuilder = Resource.builder();
resourceBuilder.path("helloworld");
final ResourceMethod.Builder methodBuilder = resourceBuilder.addMethod("GET");
methodBuilder.produces(MediaType.TEXT_PLAIN_TYPE)
.handledBy(new Inflector<ContainerRequestContext, String>() {
@Override
public String apply(ContainerRequestContext containerRequestContext) {
return "Hello World!";
}
});
final Resource resource = resourceBuilder.build();
registerResources(resource);
}
@Override
public Response toResponse(WebApplicationException ex) {
String trace = Exceptions.getStackTraceAsString(ex);
return Response.status(500).entity(trace).type("text/plain").build();
}
}
bu bunu yapmak için doğru yolu var mı?
Neden kayıt (yeni MyProvider()) 've değil (MyProvider.class)' kayıt? –
@ k-den her iki şekilde de iyidir. Eşleştiriciye bir şeyler enjekte etmedikçe, sınıfa kaydolmak daha iyidir. Bu sadece bir örnekti. Bu şekilde seçtiğim _why_ için gerçekten bir sebep yok. Tam olarak nasıl hissettiğimi :-) –