在 eclipse c2dm 连接项目中,会为您生成 c2dm-server.jar 并将其添加到您的项目中。如果您深入了解它的源代码,您会发现它与原始 chrometophone 项目的源代码几乎相同:
但是有一个很大的不同: InputStream 行从:
InputStream is = this.getClass().getClassLoader()
.getResourceAsStream("/dataMessagingToken.txt");
到
InputStream is = servletContext.getResourceAsStream("/dataMessagingToken.txt");
最大的不同是您现在需要一个 ServletContext 而不仅仅是任何类来从战争中获取该 dataMessagingToken.txt 资源。我问的唯一原因是因为我正在尝试恢复旧样式行,因此不需要 ServletContext 来获取该资源,但无论出于何种原因,该行不再有效,并且永远找不到文件。(要清楚,我已经尝试将该文件放在战争的基础目录中,因为默认项目有它,并且也像其他人建议的那样放在 /WEB-INF/classes 目录中)
最后一件事,对于那些想知道我为什么要这样做而不只是传递 ServletContext 的人。这是因为我想从任务队列发送,而不是从任何用户交互。所以我可能会以错误的方式处理这一切,但我觉得我很接近。
谢谢!