Chcę dostosować odpowiedź 404, którą serwer (nie ja) wyrzuca, gdy nie może znaleźć żądanego zasobu, (lub rzuca niestandardowy wyjątek WebApplicationException siebie, jeśli można przetestować, czy żądany zasób jest obecny w jednej aplikacji, czy gdzieś gdzieś jest przechowywana Lista zasobów?). proszę nie odsyłaj mnie do rozwiązań, które sugerują rozszerzenie WebApplicationException, ponieważ nawet tak robię, moim problemem jest kiedy je wyrzucić ?, kiedy nie znaleziono zasobu! ale jak wyrazić tę potrzebę w jerseyowej strukturzeGdzie rzucić spersonalizowany błąd 404 w jersey, gdy HttpServer nie może znaleźć zasobu
Odpowiedz
Jersey throwsjavax.ws.rs.NotFoundException
, gdy nie można znaleźć punktu końcowego. Po prostu użyj programu odwzorowującego wyjątki, aby przekształcić go w odpowiedź wybraną:
import javax.ws.rs.NotFoundException;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
@Provider
public class NotFoundExceptionMapper implements ExceptionMapper<NotFoundException> {
public Response toResponse(NotFoundException exception) {
return Response.status(Response.Status.NOT_FOUND)
.entity("No such resource")
.build();
}
}
dziękuję ale niestety po dodaniu twojego kodu, do tego samego pakietu, w którym znajduje się moja główna klasa, i uruchamiania 'curl -g -i http: // localhost: 8080/base/@@@ 11' otrzymuję 404 bez zawartości, o ile wiem "@ Provider" jest tutaj, aby powiedzieć serwerowi, to jest klasa do rzucenia, gdy zasób nie został znaleziony, czy to prawda? to jak to działa ?! –
Nie sądzę, że muszę to gdzieś zarejestrować, prawda? –
Jeśli skonfigurowałeś skanowanie pakietów i umieściłeś dostawcę w określonym pakiecie, to powinno działać. Istnieje kilka rodzajów dostawców w JAX-RS (więcej: http://stackoverflow.com/questions/13557442/what-does-provider-in-jax-rs-mean). ExceptionMappers umożliwiają przechwycenie dowolnego wyjątku, który chcesz obsłużyć i wygenerowanie niestandardowej odpowiedzi. W tym przypadku obsługujemy wyjątek NotFoundException, ponieważ jest on zgłaszany przez serwer, gdy nie znaleziono zgodnego zasobu. –
- 1. Błąd obsługi, gdy getimagesize nie może znaleźć pliku
- 2. Zend 2: Jak rzucić błąd 404 ze sterownika
- 3. Jak rzucić 404 wyjątków w Zend Framework
- 4. Mapowanie serwletu Jersey/* powoduje błąd 404 dla zasobów statycznych
- 5. Spring Boot Rest - jak skonfigurować 404 - nie znaleziono zasobu
- 6. Foreach może rzucić wyjątek InvalidCastException?
- 7. Wystąpić błąd 404 w CakePHP 2.0?
- 8. Wiosna w środku wojny nie może znaleźć zasobu w ścieżce klasy wewnętrznej pliku jar
- 9. Jersey nie może złapać żadnego wyjątku Jacksona
- 10. mechanize._response.httperror_seek_wrapper: Błąd HTTP 404: Nie znaleziono
- 11. MSXML "System nie może zlokalizować określonego zasobu"
- 12. Wywołany wyjątek NullPointerException tam, gdzie nie można go rzucić.
- 13. keytool nie może znaleźć aliasu
- 14. Błąd w Process.Start() - system nie może znaleźć określonego pliku
- 15. Web API 2.2 zwraca niestandardowe 404, gdy nie znaleziono zasobu (URL)
- 16. Paperclip nie może znaleźć imagemagick
- 17. mysql_install_db nie może znaleźć pliku
- 18. CMake nie może znaleźć przekleństw
- 19. Błąd polecenia alembic util nie może znaleźć identyfikatora
- 20. Nie można znaleźć zasobu o nazwie "X", dlaczego nie?
- 21. ProcessBuilder nie może znaleźć pliku ?!
- 22. Producent nie może znaleźć tools.jar
- 23. Pobieranie zasobu REST jako listy <T> z Jersey
- 24. Błąd "Nie można załadować definicji z zasobu net/sf/antcontrib/antcontrib.properties. Nie można znaleźć."
- 25. Heroku nie może znaleźć SecureRandom
- 26. nie może znaleźć info.plist w Xcode 4
- 27. javaw.exe nie może znaleźć ścieżkę
- 28. Impala nie może znaleźć com.mysql.jdbc.Driver
- 29. Nos nie może znaleźć testów w ubuntu
- 30. - Nie można znaleźć statycznego zasobu w aplikacji WPF
Co próbowałeś do tej pory? 'ExceptionMapper' może pomóc ... – zyexal
Którą wersję Jersey używasz? –
to powinno być Jersey 2.x, z grizzly-http-server 2.3.0, próbuję tutaj przykładów [link] (https://github.com/jersey/jersey/tree/master/examples) –