Atmosphere 框架,BroadcasterFactory.getDefault() 替代方案
Posted
技术标签:
【中文标题】Atmosphere 框架,BroadcasterFactory.getDefault() 替代方案【英文标题】:Atmosphere framework, BroadcasterFactory.getDefault() alternative 【发布时间】:2014-08-14 07:22:04 【问题描述】:我正在使用 Atmosphere 框架,它在库的最新版本中查找该方法:
BroadcasterFactory.getDefault()
已弃用。 (而且这种方法基本上到处都在使用,我找不到如何使用新“方式”的示例)
javadoc 声明:
@deprecated Use @link org.atmosphere.cpr.AtmosphereConfig#resourcesFactory()
但是我找不到单个文档如何让 AtmosphereConfig 能够获取 resourceFactory(这是一个实例方法)。
谁能告诉我如何获取配置 .. 或 AtmosphereFramework 对象本身,我可以从中获取配置或任何 up2date 示例?
【问题讨论】:
【参考方案1】:不确定是否有效,但尝试获取ServletContext
并使用getAttribute(AtmosphereFramework.class.getName())
获取AtmosphereFramework
。如果您使用的是 Spring,请尝试直接自动装配 AtmosphereFramework。
您也可以从AtmosphereResource
获取BroadcasterFactory
,然后查找Broadcaster
,例如:
private String path;
private BroadcasterFactory broadcasterFactory;
@Ready(value = Ready.DELIVER_TO.ALL)
public void onReady(final AtmosphereResource r)
System.out.println("onConnect");
r.addEventListener(new AtmosphereConnectionController());
if(broadcasterFactory == null)
path = r.getBroadcaster().getID();
broadcasterFactory = r.getAtmosphereConfig().getBroadcasterFactory();
//later in code
broadcasterFactory.lookup(path).broadcast("message");
【讨论】:
【参考方案2】:使用依赖注入。在我的项目中,它是这样的:
@MeteorService(path = "/recursos/fila-de-atendimento", interceptors = AtmosphereResourceLifecycleInterceptor.class)
public class FilaDeAtendimentoResource extends HttpServlet
@Inject
private BroadcasterFactory broadcasterFactory;
...
/** Used for registering for a message */
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException
...
Broadcaster broadcaster = broadcasterFactory.lookup(broadcasterId, true);
meteor.setBroadcaster(broadcaster);
...
【讨论】:
这不起作用,至少对我来说,不知道为什么,但是 BroadcasterFactory 没有被正确注入并且为空。以上是关于Atmosphere 框架,BroadcasterFactory.getDefault() 替代方案的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Atmosphere 框架调用传统的 REST-RPC 调用?
具有每个请求问题(Hibernate 和 Shiro)的 WebSocket(Atmosphere) - Vaadin
JULIA BOORSTIN — Interview a Broadcaster!
使用 java 和 Atmosphere 的基本聊天应用程序