我希望能够通过泽西岛的SSE发送POJO。例如,这(使用较旧的Jersey API)有效:

final OutboundEvent.Builder eventBuilder = new OutboundEvent.Builder();
eventBuilder.name("message-to-client");
eventBuilder.data(String.class, "Hello world " + i + "!");
final OutboundEvent event = eventBuilder.build();
eventOutput.write(event);


虽然这不能:

final OutboundEvent.Builder eventBuilder = new OutboundEvent.Builder();
eventBuilder.name("message-to-client");
eventBuilder.data(Item.class, new Item());
final OutboundEvent event = eventBuilder.build();
eventOutput.write(event);


返回“ new Item()”的端点会获得我期望的JSON,但是如果我通过SSE尝试它,它会炸毁。我想做的事是不可能的,还是我缺少基本的东西?

最佳答案

您需要设置媒体类型,以便Jersey知道找到正确的提供程序以对其进行序列化。如果未设置,则默认为文本/纯文本。因此,目前,Jersey正在寻找一个提供程序来处理无法找到的text / plain-POJO。

eventBuilder.mediaType(MediaType.APPLICATION_JSON);

08-19 10:10