2012-03-28 7 views
1

Jersey RSを使用してPOJOのJSONを返そうとしています。これはではなく、サーブレットであり、サーブレットコンテナはありません。ジャージーはNetty(Jettyではなく)の中からセットアップされています。 JerseyにAPPLICATION_XMLを返すように設定できますが、同じリソースのAPPLICATION_JSONが、ドメインクラスのNo Message Body writerが見つかったという例外をスローします。私はjersey-jsonとjackson-jaxrsモジュールをpom.xmlに含めました。 JerseyHandlerは私ネッティーHandlerクラスですJerseyアプリケーションが単純なPOJOのJSON表現を返しません

Map<String, Object> props = new HashMap<String, Object>(); 
props.put(PackagesResourceConfig.PROPERTY_PACKAGES, RESOURCES_PACKAGE); 
props.put(PROPERTY_BASE_URI, "http://localhost:9000/"); 
props.put(JSONConfiguration.FEATURE_POJO_MAPPING, true);  
ContainerFactory.createContainer(JerseyHandler.class, new PackagesResourceConfig(props)); 

はここResourceConfigのがセットアップされている方法です。 資源は非常に簡単です:

@XmlRootElement 
public class TestData { 
    private String firstName; 
    private String lastName; 

    public TestData() {} 
    public String getFirstName() { 
     return firstName; 
    } 

    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 

    public String getLastName() { 
     return lastName; 
    } 

    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 
} 

はここで、 "/テスト" にアクセスしようとする例外です:私が試してみました

SEVERE: A message body writer for Java class com.xyz.models.TestData, and Java type class com.xyz.models.TestData, and MIME media type application/json was not found 

@Path("/test") 
public class TestResource { 
    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    public TestData get() { 
      return new TestData(); 
    } 

TESTDATAは、最も単純なモデルクラスですhereのコンテキストクラスを含みますが、まだ運がありません。

JerseyからJSONを返すのは難しいとは思いません。インターネット上のすべての例は、サーブレットコンテナからJerseyを使用していると仮定していますが、私はそうではありません!あらゆる入力に感謝します。

答えて

0

あなたはjackson-coreとjackson-mapper librairiesをお持ちですか?それがJSONのシリアル化を機能させるために必要なものです。

+0

mvn依存性:ジャーソン・ジャーソンによってjackson-coreとjackson-mapper-aslモジュールの両方が引き込まれていることを示すツリー。他のアイデア? –

関連する問題