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 对象的主要内容,如果未能解决你的问题,请参考以下文章

Atmosphere Jersey - 服务器消息

带有 Jersey 2 的气氛 PubSub

使用 java 和 Atmosphere 的基本聊天应用程序

我们如何从可编辑的 Java 代码中生成 IntelliJ IDEA 中的序列图?

将使用 jersey 1.x 的 java 代码转换为 jersey 2.x

具有每个请求问题(Hibernate 和 Shiro)的 WebSocket(Atmosphere) - Vaadin