2016-01-19 3 views
2

Как я могу получить доступ и настроить objectmapper в resteasy?Resteasy настроить JacksonJaxbJsonProvider провайдер без web.xml

Имейте в виду, что подобный вопрос был задан и ответил несколько раз. например: Accessing Jackson Object Mapper in RestEasy, http://wiki.fasterxml.com/JacksonFAQJaxRs

Однако мое приложение - это просто приложение jse, оно не содержит файла web.xml. Как я могу использовать собственный поставщик/изменить objectmapper.

ответ

1

Вы можете сделать это с помощью JAXRS Application и первостепенных getSingletons. Вы можете сделать это за пределами контейнера. Не требуется web.xml.

import javax.ws.rs.core.Application; 

@ApplicationPath("/rest") 
public class ResourceConfiguration extends Application { 

    @Override 
    public Set<Class<?>> getClasses() { 
     Set<Class<?>> resources = new java.util.HashSet<>(); 
     resources.add(//Your Class decorated with @Path 
     return resources; 
    } 

    @Override 
    public Set<Object> getSingletons() { 
     Set<Object> s = new HashSet<Object>(); 

     JacksonJaxbJsonProvider jaxbProvider = new JacksonJaxbJsonProvider(); 
     jaxbProvider.setMapper(mapper); 

     s.add(jaxbProvider); 
     return s; 
    } 
} 
+0

Благодарим за ответ. Я нашел аналогичный здесь https://docs.jboss.org/resteasy/docs/1.0.1.GA/userguide/html/Installation_Configuration.html, но этот подход предлагает мне зарегистрировать этот класс в секции context-param, который является частью web.xml. Также я забыл написать им, используя только клиент resteasy. – hnnn

+0

@hnnn, правильно. Я предположил, что вы распространяете приложение для работы в Java SE? Просто переопределив getSingletons(), он будет работать – rjdkolb

+0

Нет, это не работает. У меня нет каких-либо компонентов автосканирования. Мне нужно вручную зарегистрировать поставщика/аппликатора jackson. Я попытался зарегистрировать поставщика в ResteasyProviderFactory и ResteasyClientBuilder, но netiher работал. – hnnn

Смежные вопросы