0

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

ただし、大きな違いが 1 つあります。InputStream 行が次のように変更されました。

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

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

大きな違いは、戦争から dataMessagingToken.txt リソースを取得するために任意のクラスだけでなく、ServletContext が必要になったことです。私が尋ねる唯一の理由は、古いスタイルの行を元に戻そうとしているため、そのリソースを取得するために ServletContext を必要としないためですが、何らかの理由でその行が機能しなくなり、ファイルが見つからないためです。(明確にするために、そのファイルを、デフォルトのプロジェクトにあるように戦争のベースディレクトリに配置しようとしました。また、他の人が提案したように、 /WEB-INF/classes ディレクトリにも配置しました)

最後に、ServletContext を渡すだけでなく、なぜこれをやりたいのか疑問に思っている人のために。これは、ユーザーの操作からではなく、タスク キューから送信したいからです。だから私はおそらくこれについてすべて間違った方向に進んでいますが、私は近いと感じています.

ありがとう!

4

1 に答える 1

1

あなたはこれと戦うことができます。そうしないと、タスク キュー内のタスクがサーブレットとして実行され、ServletContext を持つことになると思います。

また、呼び出しを介して渡されない場合は、次の方法でどこでも取得できるはずです。

getThreadLocalRequest().getSession().getServletContext()

于 2012-06-09T18:24:31.043 に答える