Używamy dołączonego przez IBM Apache Wink do zaoferowania punktów końcowych JAXRS dla naszej aplikacji. Kodujemy do Websphere 8.5.5. Ponieważ jesteśmy zgodni z serwletem 3.0, używamy "programistycznego" sposobu konfigurowania aplikacji JaxRS, co oznacza brak wpisów w web.xml i polegamy na skanowaniu klas dla adnotowanych zasobów jax rs. Ogólnie rzecz biorąc działa dobrze.Zastępowanie właściwości obiektu Jackson Object Mapper na serwerze Websphere 8.5.5 za pomocą Apache Wink
@ApplicationPath("/api/v1/")
public class MyApplication extends Application{
Ta wersja Websphere wraz z Apache Wink, wykorzystuje Jackson 1.6.x dla JSON DE/serializacji i ogólnie działa dobrze. Chcielibyśmy jednak zmienić niektóre z domyślnych wartości Object Mappera:
Tak więc zdefiniowaliśmy klienta kontekstowego, który zmienia niektóre z właściwości se/deserialzation.
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class CustomJackssonConverter implements ContextResolver<ObjectMapper> {
final ObjectMapper defaultObjectMapper;
public AibasJackssonConverter() {
defaultObjectMapper = createDefaultMapper();
}
...
mapper.getSerializationConfig().set(SerializationConfig.Feature.INDENT_OUTPUT, true);
Podczas JAX-RS połączeń możemy zobaczyć, że pojemnik rejestruje nowego dostawcy, bez błędów
Problemem jest to, że konfiguracja nie jest „po”, z dzienników widzę, że Wink Engine szuka WinkJacksonProvider, który z kolei ... zwraca JacksonProvider, który śledzi domyślne wartości Jacksona?
Czy istnieje sposób na zmianę tej wartości domyślnej?
Próbowałem zmienić implementację obiektu aplikacji, jak wskazano tutaj, w celu programowego konfigurowania dostawców, ale nie zadziałało.
http://www.ibm.com/developerworks/java/library/wa-aj-jackson/index.html
Wszelkie wskazówki lub porady?
Dziękujemy
Czy próbowałeś już forum WebSphere? http://ibm.biz/websphere-forum – dbreaux
Nie mogę tego również uruchomić. Kiedy dołączam JacksonJsonProvider do aplikacji getClasses(). Websphere użyje Jacksona. Ale nie ma sposobu, aby dostosować Jackson. Jeśli zamiast tego dołączę niestandardowy skonfigurowany JacksonJsonProvider w aplikacji getSingletons(). Websphere go nie użyje. Obiekty bez odpowiedzi (lub ich ładunki) są serializowane. Metoda REST, która powinna zwrócić treść odpowiedzi, nie zwraca nic. (Życie z TomcatEE jest o wiele łatwiejsze.) – devdanke