Java Atmosphere Jersey 从可广播返回 JSON 对象
Posted
技术标签:
【中文标题】Java Atmosphere Jersey 从可广播返回 JSON 对象【英文标题】:Java Atmosphere Jersey return JSON Object from Broadcastable 【发布时间】:2014-01-28 15:32:28 【问题描述】:我正在尝试使用 Atmosphere 返回带有 JAXB 注释的 POJO 的 JSON 表示。
@Path("/entity/topic")
public class JerseyPubSub
@PathParam("topic")
private Broadcaster topic;
@GET
@Produces("application/json")
public SuspendResponse<String> subscribe()
return new SuspendResponse.SuspendResponseBuilder<String>()
.broadcaster(topic)
.outputComments(true)
.build();
@POST
@Broadcast
@Produces("application/json")
public Broadcastable publish(Notification notification)
return new Broadcastable(notification, topic);
我知道我的数据绑定工作正常,因为 POST JSON 'Notification' 对象有效。
我是否可以使用 JAXB json 序列化将传递给“new Broadcastable()”的对象转换为 JSON 对象。
提前致谢。
【问题讨论】:
【参考方案1】:试试这个代码
@AtmosphereService(broadcaster=JerseyBroadcaster.class)
@Path("entity/topic")
public class WebService
@PathParam(value="topic")
String topic;
@Context
private BroadcasterFactory factory;
@Suspend(contentType = "application/json", listeners = OnDisconnect.class)
@GET
public Broadcastable suspend()
return new Broadcastable( factory.lookup(topic, true ) );
@Broadcast(writeEntity = false)
@POST
@Produces("application/json")
public Response publish(Notification notification)
return new Response(notification);
public static final class OnDisconnect extends AtmosphereResourceEventListenerAdapter
private final Logger logger = LoggerFactory.getLogger(WebService.class);
@Override
public void onDisconnect(AtmosphereResourceEvent event)
if (event.isCancelled())
logger.info("Browser unexpectedly disconnected", event.getResource().uuid());
else if (event.isClosedByClient())
logger.info("Browser closed the connection", event.getResource().uuid());
希望这会有所帮助... :)
【讨论】:
以上是关于Java Atmosphere Jersey 从可广播返回 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章
使用 java 和 Atmosphere 的基本聊天应用程序
我们如何从可编辑的 Java 代码中生成 IntelliJ IDEA 中的序列图?