2017-11-11 27 views
0

GlassfishのRESTfulアプリケーションでJerseyを使用して、POJOからJSONへのシリアル化に問題があります。Glassfish JSONのエラー

私はエンドポイント「レスポンス」などの複雑なPOJOを渡すとき、私はGlassfishのコンソールでこのエラーを取得:

org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriterメディアが見つかりませんtype =

"複合"とは、ルートクラスに多数のクラスが含まれていて、多くのクラスが基本クラスを拡張していることを意味します。

ジャージーにPOJOを渡すとき、私は、次のルールを考え出した

1)すべてのクラスが空のコンストラクタ 2を持っている必要があります)すべての内部クラスが 3静的である必要があります)どれ内部クラスを一意に名前を付ける必要がありますベースクラスからのツリー全体を通して

ジャージーがもっと教えてくれるなら、素晴らしいと思います。 POJOが拒否していることは何ですか?ジャージーに特定の問題や問題をGlassfishコンソールに記録させる方法はありますか?POJOで見つかったことは、レスポンスに返されますか?他の提案は高く評価されます。それはすべての問題を記述したコンソールに行くリストがあるスローとき

JAXBContext context; 
try { 
    context=JAXBContext.newInstance(<myclass>); 
    Unmarshaller unmarshaller=context.createUnmarshaller(); 
    unmarshaller.setEventHandler(
     new javax.xml.bind.helpers.DefaultValidationEventHandler()); 
    } 
catch (JAXBException e) { 
    System.out.println(e); 
} 

:回避策(ソートの)を発見

+0

'getter'と' setter'メソッドで単純なPOJOを使ってみましたか? –

+0

POJOは '@XmlRootElement'で注釈されていますか? –

+0

Arpit:POJOを問題なくシリアル化するために使用されました。複雑さを増すにつれて、それは失敗する。ときどき私は戻って、ゆっくりとコードが失敗するまでコードを追加してから、うまく動作する問題を見ます。私が必要とするのは、Jerseyが拒絶していることについてより具体的な詳細を教えてくれることです。 –

答えて

0

。問題は、このJAXBContextはJerseyで使用されているものほど現代的ではないということです。そうでない問題がリストされています(インターフェースのメンバーに注釈を付けるなど)。私はエラーをスキャンした(私の場合は14人だった)、13人がインタフェースメンバに注釈を付けることに関わっていた。 14日は面白いものでした。

関連する問題