Я работаю в Restful service. Проблема возникла после того, как мы перешли в Glassfish 4.1. Строка ошибки:Restful MessageBodyWriter не найден
СИЛЬНЫЙ: MessageBodyWriter не найдено для типа носителя = приложения/XML, тип = ...
Но мои классы потребляют приложения/JSON. Вот пример:
@Path("get_customer_info")
@Consumes("application/json;charset=utf8")
public class CustomerInfoResource {
@Context
private UriInfo context;
public CustomerInfoResource() {
}
@POST
public Player getPlayerInfo(){
....
}
}
Я сделал следующее и не мог решить: Добавлены все трикотажные фляг версии 2.13, джексон баночки 2.4.3. Также добавлен jersey-media-json-jackson-2.13.jar, который содержит класс org.glassfish.jersey.jackson.JacksonFeature. Кстати ApplicationConfig класс:
@javax.ws.rs.ApplicationPath("resources")
public class ApplicationConfig extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> resources = new java.util.HashSet<Class<?>>();
try {
Class jsonProvider = Class.forName("org.glassfish.jersey.jackson.JacksonFeature");
resources.add(jsonProvider);
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(getClass().getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
addRestResourceClasses(resources);
return resources;
}
ли вы попробовать добавить аннотацию @Produces на уровне класса. Кажется, что проблема возникает при написании ответа. – CuriousMind
Конечно, попробовал @Produces, но он также не решен. Фактически проект работал в Glassfish 4.0. Проблема возникает только в Glassfish 4.1. –
Я думаю, причина в том, что по умолчанию ваш метод post создает XML, а ваш класс 'Player' не является сериализуемым. Если вы хотите обойти это легко, и вы не возражаете против возвращения Json, вы можете использовать что-то вроде [Gson] (https://code.google.com/p/google-gson/), а затем сделать что-то вроде этого : 'BagOfPrimitives obj = new BagOfPrimitives(); Gson gson = new Gson(); Строка json = gson.toJson (obj); ' – frmi