有谁知道为什么C2DMConfigLoader(c2dm-server.jar)巧妙地改变了?

时间:2012-05-24 21:16:03

标签: google-app-engine android-c2dm

在eclipse c2dm连接项目中,为您生成c2dm-server.jar并添加到您的项目中。如果你挖掘它的源代码,你会发现它与原始chrometophone项目的源代码几乎相同:

http://code.google.com/p/chrometophone/source/browse/trunk/appengine/c2dm/com/google/android/c2dm/server/C2DMConfigLoader.java?r=2

但是有一个很大的区别:InputStream行改为:

InputStream is = this.getClass().getClassLoader()
                                .getResourceAsStream("/dataMessagingToken.txt");

InputStream is = servletContext.getResourceAsStream("/dataMessagingToken.txt");

最大的区别在于你现在需要一个ServletContext,而不仅仅是任何类从战争中获取dataMessagingToken.txt资源。我问的唯一原因是因为我正在尝试恢复旧的样式行,因此不需要ServletContext来获取该资源,但无论出于何种原因,该行不再有效且它永远无法找到该文件。 (很明显,我已经尝试将该文件放在war的基目录中,因为默认项目有它,并且也像其他人建议的那样放在/ WEB-INF / classes目录中)

最后一件事,对于那些想知道我为什么要这样做而不只是传递ServletContext的人。这是因为我想从任务队列发送而不是从任何用户交互发送。所以我可能会以错误的方式解决这个问题,但我觉得我很接近。

谢谢!

1 个答案:

答案 0 :(得分:1)

你可以解决这个问题,或者我认为你会发现任务队列中的任务是作为servlet执行的,并且还有一个ServletContext。

此外,如果没有通过您的通话传递,您应该可以通过以下方式获取它:

getThreadLocalRequest()。的getSession()。getServletContext()方法