2015-09-14 2 views
0

Я реализовал службу Джерси с помощью встроенного Jetty + Джексон. Хотя, когда я пытаюсь использовать его с ресурсом GET (который не потребляет и не производит JSON), он работает, он НЕ с ресурсом POST. Сообщение на консоли написано:использованием Джексон JSON библиотека Джерси + Jetty

SEVERE: MessageBodyReader not found for media type=application/json, type=class com.delta.model.EnableDisableMessage, genericType=class com.delta.model.EnableDisableMessage 

ПОСТ ресурс:

@POST 
@Path("/enable") 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.TEXT_PLAIN) 
public String enablePost(EnableDisableMessage enable) throws InterruptedException {  
    logger.debug("within Proxy POST method..." + enable.toString());   
    return "it worked!"; 
} 

Модель:

package com.delta.model; 

public class EnableDisableMessage { 

    private String cell; 
    private String instruction; 


    public EnableDisableMessage(String cell, String instruction) { 
     super(); 
     this.cell = cell; 
     this.instruction = instruction; 
    } 

    public String getCell() { 
     return cell; 
    } 

    public void setCell(String cell) { 
     this.cell = cell; 
    } 

    public String getInstruction() { 
     return instruction; 
    } 

    public void setInstruction(String instruction) { 
     this.instruction = instruction; 
    } 

} 

Я также реализован этот класс конфигурации, как описано на Джерси спецификации:

@ApplicationPath("/") 
public class MyApplication extends ResourceConfig { 

    public MyApplication() {   
     packages("com.delta.model;com.delta.rest"); 
     register(JacksonFeature.class); 
//  property(CommonProperties.MOXY_JSON_FEATURE_DISABLE, true);  
    } 
} 

pom.x мл:

<dependencies> 

     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
     </dependency> 

     <dependency> 
      <groupId>org.eclipse.jetty</groupId> 
      <artifactId>jetty-server</artifactId> 
      <version>9.2.3.v20140905</version> 
     </dependency> 

     <dependency> 
      <groupId>org.eclipse.jetty</groupId> 
      <artifactId>jetty-servlet</artifactId> 
      <version>9.2.3.v20140905</version> 
     </dependency> 

     <dependency> 
      <groupId>org.glassfish.jersey.core</groupId> 
      <artifactId>jersey-server</artifactId> 
      <version>2.7</version> 
     </dependency> 

     <dependency> 
      <groupId>org.glassfish.jersey.containers</groupId> 
      <artifactId>jersey-container-servlet-core</artifactId> 
      <version>2.7</version> 
     </dependency> 

     <dependency> 
      <groupId>org.glassfish.jersey.containers</groupId> 
      <artifactId>jersey-container-jetty-http</artifactId> 
      <version>2.7</version> 
     </dependency> 

     <!-- 
     <dependency> 
      <groupId>org.glassfish.jersey.media</groupId> 
      <artifactId>jersey-media-moxy</artifactId> 
      <version>2.7</version> 
     </dependency> 
     --> 

     <dependency> 
      <groupId>org.glassfish.jersey.media</groupId> 
      <artifactId>jersey-media-json-jackson</artifactId> 
      <version>2.7</version> 
     </dependency> 

    </dependencies> 
+0

Вам нужен конструктор no-arg в 'EnableDisableMessage'. Но это не актуальная проблема. Это будет следующий вопрос, как только вы исправите текущую проблему :-). Я не уверен, почему вы получите это исключение, если зарегистрируете JacksonFeature. Мне любопытно посмотреть, как вы строите сервер. Вы уверены, что 'MyApplication' даже используется? Можете ли вы поделиться кодом, в котором вы создаете сервер/приложение. –

ответ

3

Возможно, в том числе Jackson JSON-провайдер в ваших зависимостях помогает?

<dependency> 
    <groupId>com.fasterxml.jackson.jaxrs</groupId> 
    <artifactId>jackson-jaxrs-json-provider</artifactId> 
    <version>2.6.1</version> 
</dependency> 
+0

'jersey-media-json-jackson' уже тянет вышеуказанную зависимость. Он использует его под капотом. –

+0

Ах, я плохой, я пропустил это, извините –

+0

** Привет Ларс **, зависимость, о которой вы упомянули выше, была на самом деле тем, что мне было нужно, а также ** nos-args ** peeskillet ** – ekremer

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