この質問はこれに似ていますが、それで問題は解決しませんでした。
私は非常に単純な Google AppEngine / Java アプリケーションを持っています。これは 2011 年から実行されており、maven やその他必要のない凝ったものは使用していません。最近、このアプリケーションに Cloud Endpoints を追加しました。私は generated を使用しませんでしendpoint-libs
た。これは必要ないように思われたためです。
アプリケーションには、しばらく前からフロントエンドとバックエンドがありました。これらをモジュールに変換しようとしています。フロントエンドはデフォルトのモジュールになり、バックエンドは別のモジュールになります。
私の古いプロジェクトの構造は次のようになります。
project
|- src
| |- ... Java source files ...
|
|- war
| |- WEB-INF
| | |- appengine.xml
| | |- backends.xml
| | |- cron.xml
| | |- web.xml
Java クラスに適切な注釈を付けることで、クラウド エンドポイントを実装しました。派手な魔法を生成する魔法はありません。
次のように、モジュールごとにディレクトリを作成する必要があることを理解しています。
project
|- default
| |- WEB-INF
| | |- appengine.xml
| | |- cron.xml
| | |- web.xml
|
|- module
| |- WEB-INF
| | |- appengine.xml
| | |- web.xml
|
|- META-INF
| |- appengine-application.xml
| |- application.xml
私の質問は次のとおりです。
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 プロジェクトを作成しました。かなりエンタープライズ向けですが、以前にデプロイした単純なバージョンと同じ例外をスローすることができます。少しでも進歩したのだろうか。