問題タブ [app-engine-modules]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - デフォルト以外のモジュール用にローカル開発サーバーで特定のポートを選択する
私の build.gradle ファイルでは、デフォルト以外の (module2) AppEngine gradle モジュールに次の構成を使用します。
ただし、「Google AppEngine 構成」を実行すると、モジュールは8081 ではなくsome_random_portで開始されます。これらが実行されるポートを修正したいので、ローカル開発でテスト リクエストを実行するときにそれらのポートに依存できます。サーバ。
私は何を間違っていますか?それとも、これはサポートされていないだけですか?
================================================== ==================== Appengine モジュールの構造:
アプリエンジンのバージョン: 1.9.22
Gradle Appengine プラグインのバージョン: 1.9.21
編集:
また、各モジュールを独自の「Appengine実行構成」で実行しようとしましたが、モジュールはそれぞれのポートで実行されますが、モジュール間で通信できなくなりました。デフォルト モジュールのサーブレットから module2 でタスクをスケジュールしようとすると、次のエラーが発生します。
java - Google App Engine モジュール + iOS プッシュ通知用タスク キュー
このサンプルの指示に従いましたが、うまくいきませんでした。frontend
タスクをプル キューに追加しましたnotification-delivery
が、iOS クライアントはプッシュ通知を受け取りませんでした。役割をworker
果たさなかったようです。worker
プル キューを自動的にスキャンし、(Javapns を使用して) プッシュを送信するかどうかはわかりません。また、プル キュー内のタスクが処理されているかどうかを確認する方法がわかりません。
私がしたこと:
- GAE プロジェクトの課金を有効にします。
- サンプルの指示に従います (定数を編集し、p12 証明書を追加します)。
mvn clean install
ルートディレクトリから。mvn clean package
ルートディレクトリから。mvn appengine:update
cloudpush-ear
ディレクトリから。- Javapns が提供された p12 ファイルで動作することを確認するには、スタンドアロンの Java クラスにコードを記述します。iOS クライアントにプッシュ通知を送信します。
PushNotificationWorkerServlet
ブラウザから にリクエストして呼び出すと、「だから私は代わりに使ってみ/_ah/start
た」というエラーがスローされます。エラーはなくなりましたが、何も起こりませんでした。This feature is only available to backend instances.
ThreadManager.createThreadForCurrentRequest
ThreadManager.createBackgroundThread
Task Queue を使用した GAE は、スケーラブルなモバイル アプリケーションに最適なソリューションだと思うので、これを使い続けます。
何か助けてください。ありがとうございました。
参考: https ://cloud.google.com/solutions/mobile/ios-push-notifications/
google-app-engine - App Engine フロントエンド バージョンをモジュールに変換する
モジュールが導入される前にモジュールを実装するために、App Engine (Java) のフロントエンドの「バージョン」の概念を少し「悪用」しました。バージョンの概念 (より一般的には番号: 1-dot-myapp など)。
具体的には、すべてのバージョンのコードは同一ですが、実際にはそれぞれ異なる目的で使用されます。この分離により、さまざまなクライアントがさまざまな API バージョン、個別のデプロイ スケジュール、ステージング バージョン、ログの分離などを使用できるようになります。
私の質問は、これらの条件下で、アプリケーションを「実際の」モジュールに変換する最良の方法は何ですか? 「module1」が実際のモジュールであるように (同じ URL - module1-dot-appspot.com にまだマップされています)?
java - シンプルな AppEngine Java プロジェクトを変換してモジュールを使用する
この質問はこれに似ていますが、それで問題は解決しませんでした。
私は非常に単純な Google AppEngine / Java アプリケーションを持っています。これは 2011 年から実行されており、maven やその他必要のない凝ったものは使用していません。最近、このアプリケーションに Cloud Endpoints を追加しました。私は generated を使用しませんでしendpoint-libs
た。これは必要ないように思われたためです。
アプリケーションには、しばらく前からフロントエンドとバックエンドがありました。これらをモジュールに変換しようとしています。フロントエンドはデフォルトのモジュールになり、バックエンドは別のモジュールになります。
私の古いプロジェクトの構造は次のようになります。
Java クラスに適切な注釈を付けることで、クラウド エンドポイントを実装しました。派手な魔法を生成する魔法はありません。
次のように、モジュールごとにディレクトリを作成する必要があることを理解しています。
私の質問は次のとおりです。
src
ディレクトリはどこに置くべきですか?- でクラウド エンドポイント クラスを宣言する必要があり
default/WEB-INF/web.xml
ますか? - 各モジュールは独自のものを持つことができます
WEB-INF/cron.xml
か?
自分が何をしているのかわからないように思われる場合は、おそらく正しいですが、すべてを maven pom ファイルに入れたり、gradle スクリプトなどを作成したり、代わりに実際のアプリケーションに集中したりする必要はありません。それはおそらく、自分たちでコードを書いていた時代に、私が vi と emacs とともに育ったからでしょう。;)
アップデート:
src ディレクトリをand とproject
同じレベルに配置しました。コンパイルされた Java クラスが の下に表示されます。これは、正しいことを行ったことを示しています。GAE は でファイルを生成します。これは、モジュールを使用していないときは見られませんでした。default
module
default/WEB-INF/classes
*.api
default/WEB-INF
ローカルでは、クラウド エンドポイント API を確認でき、それらを使用できます。AppEngine にデプロイし、API エクスプローラーを使用しようとすると、例外が発生します。
/_ah/spi/BackendService.getApiConfigs java.lang.NullPointerException at com.google.api.server.spi.SystemServiceServlet.execute(SystemServiceServlet.java:100) at com.google.api.server.spi.SystemServiceServlet.doPost(SystemServiceServlet) .java:71) javax.servlet.http.HttpServlet.service(HttpServlet.java:637) で javax.servlet.http.HttpServlet.service(HttpServlet.java:717) で
など...
OAuth2 資格情報を追加して、クラウド エンドポイント構成に設定しました。のコードが見つかりませんSystemServiceServlet
でしたが、私の API クラス ( で構成されているdefault/WEB-INF/web.xml
) が見つからないのではないかと推測されます。
別の更新:
AppEngine モジュールにはエンタープライズ アーカイブ (ear) 構造が必要であり、単純な GAE アプリケーションのようにデプロイするのはうまくいかないことを知りました。「ボタンを 1 回押す」展開はありません。Java を使用した Google App Engine のプログラミングの指示に従い、最終的に多数の Eclipse プロジェクトを作成しました。かなりエンタープライズ向けですが、以前にデプロイした単純なバージョンと同じ例外をスローすることができます。少しでも進歩したのだろうか。
java - Google App Engine でモジュールを使用し、タスク キュー (Java) を使用してモジュールにターゲットを追加する方法は?
タスク キューの期限を 10 分以上超過しているタスクがあります。さまざまなドキュメントを調べたところ、モジュールを使用すると、長時間実行されるタスクを処理するインスタンスを実行できることがわかりましたが、できればタスク キューを使用して実行する必要があります。バックエンドを使用していましたが、非推奨です。
私の質問は、既存の App Engine プロジェクトにモジュールを導入する方法と、それらを使用して長時間実行タスクを実行する方法です。
以下はコードの一部です:
モジュールを使用して長時間実行されるタスクを追加するには、上記のコードにどのような変更を加える必要がありますか? [「submitworker」は実際の長時間実行タスクであるサーブレットです]
このリンクを参照しましたが、3 番目の手順を回避できません
。 3. サービス宣言要素を appengine-application.xml ファイルに追加します。
また、プロジェクトにモジュールを正常に追加した場合でも、タスク キューを使用してこのモジュールをターゲットにするにはどうすればよいですか?
私はこの質問に答えましたが、これは Python の実装であり、私の実装は Java です。
モジュールで「ターゲット」を使用する方法と、タスク キューに追加するときにそれを使用する方法について、段階的なプロセスを探しています。
実行時間の長いモジュール ターゲットをタスク キューに追加しても、10 分後に実行が終了しますか、それともタスク キュー内のタスクの有効期限が切れてもタスクは完了しますか?
提案してください。