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を使用していると仮定していますが、私はそうではありません!あらゆる入力に感謝します。
mvn依存性:ジャーソン・ジャーソンによってjackson-coreとjackson-mapper-aslモジュールの両方が引き込まれていることを示すツリー。他のアイデア? –