我有一个工作的Jersey / Atmosphere / Guice应用程序,其中有两个Atmosphere资源。第一个几乎是示例聊天应用程序的克隆:
@Path("/chat")
@AtmosphereService(broadcaster = JerseyBroadcaster.class, path = "/chat")
public class ChatResource {
@Suspend(contentType = "application/json")
@GET
public String suspend() {
return "";
}
@Broadcast(writeEntity = false)
@POST
@Produces("application/json")
public Response broadcast(Message message) {
return new Response(message.author, message.message);
}
}
第二个是测试通知资源,将向其发送服务器端事件:
@Path("/notifications")
@AtmosphereService(broadcaster = JerseyBroadcaster.class, path = "/notifications")
public class NotificationsResource {
@Suspend(contentType = "application/json")
@GET
public String suspend() {
return "";
}
}
一切都正确连接,并且工作正常。但是,为了让我发送服务器端事件,我发出:
MetaBroadcaster.getDefault().broadcastTo("/*", new Response(...));
显然,这会将广播消息发送到两个资源。我想做的是仅将服务器端事件发送到通知资源:
MetaBroadcaster.getDefault().broadcastTo("/notifications", new NotificationResponse(...));
但是,这不起作用。我总是收到以下错误:
org.atmosphere.cpr.MetaBroadcaster - No Broadcaster matches /notifications.
那是因为只有一个广播公司注册;/ *上的Jersey JerseyBroadcaster。
问题是:如何使这两个资源具有不同的具有不同ID /名称的广播者?
在资源中,使用所需的通道挂起(如果不存在,则使用lookup()的’true’参数强制创建该通道):
@Suspend( contentType = MediaType.APPLICATION_JSON, period = MAX_SUSPEND_MSEC )
@GET
public Broadcastable suspend( @Context final BroadcasterFactory factory )
{
return new Broadcastable( factory.lookup( MY_CHANNEL, true ) );
}
在几乎可以在任何地方的其他代码中,广播到该频道:
Broadcaster broadcaster = BroadcasterFactory.getDefault().lookup( MY_CHANNEL );
if( broadcaster != null ) {
broadcaster.broadcast( message );
}
如果要通过资源方法进行广播,则可以对其进行注释(如ChatResource的broadcast()方法所示)。
有一个应用程序需要像搜寻列表这样的东西。这个应用程序可以用不同的配置多次启动。有没有办法跨JVM共享数据结构。在JVM中是有效的。有一个数据库可以解决这个问题。但是,有没有更简单、更快速的方法?
房间类别 长话短说,这一点是为了添加房间,并能够导航它们,捡起物品,然后放下它们。在我尝试运行程序时,我注意到我不能有多个北/南/东/西键。我怎样才能避开这件事,这样我才能把它做好?
我有一个Google Cloud函数,它包含多个模块,可以在不同的路径上调用。 我正在使用无服务器框架来部署我的函数,但它有每个函数只有一个路径的限制。 我想在一个函数中使用多个路径,就像我们可以在AWS无服务器框架中一样。 假设云函数有两个路径和;两个路径都应该调用相同的函数。 类似这样的事情:
问题内容: 我想使用Jersey来实现一些Java REST服务。默认的POJO转换器JAXB处理JSON对象有点奇怪,因此我想使用Jackson转换POJO的开销很少或更少。我如何告诉J2ME框架使用另一个转换器? 我的web.xml看起来像这样: 问题答案: 只需添加jackson JAR并修改web.xml即可,如下所示: 所需的Jackson Jackson JAR(http://jack
我使用的是Jersey 1.12,并且有一个endpoint可能接收也可能不接收来自我无法控制的客户端的格式错误的标头(例如)。显然,bla格式错误,因为规范要求参数也要有值,即 我可以按照这里、这里和这里的建议编写一个过滤器来解决这个问题,但我想知道是否有一种方法可以让Jersey在我对其值不感兴趣的情况下忽略所有格式错误的报头?
我需要在java上开发简单的web服务。我是java技术新手,根据几篇文章,我决定将JAX-RS(Jersey)与嵌入式http服务器(Grizzly2)结合使用,因为它看起来适合构建REST服务,部署似乎很简单。 在我的开发环境中,所有工作都很完美(使用IntllijIdea)。 但当我尝试在测试服务器上部署时,每个请求都返回“500内部错误”(偶数/application.wadl) 简单资源