お題
前回は、Java8のWebアプリをGAEデプロイした。
WebアプリはApp Engine用のMavenアーキタイプを使って自動生成し、結果、下記の構成となった。
https://qiita.com/sky0621/items/8437da4e96bffef69250#自動生成プロジェクトの中身
今回は、上記を元にちょっと解説。
解説
Servlet
JavaでWebアプリを作る際はServletを使うのが王道。
自動生成されたServletは「src/main/java/com/example/sky0621/HelloAppEngine」
// 省略
@WebServlet(name = "HelloAppEngine", value = "/hello")
public class HelloAppEngine extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
// 省略
}
}
↑のソースにより、「http://【ドメイン:ポート】/hello」にアクセスすると「doGet
」の中身を実行してくれる。
自分の記憶の中ではServletのルーティング定義は「web.xml」に記載していたのだけど、今のServlet仕様ではアノテーションでルーティング定義するのだね。
(SpringやSeasarといったフレームワークではもともとアノテーション指定だったかな・・・)
これだけでロジックへの橋渡しは出来ているので、今後はこの中で、Datastoreにアクセスしたり、Memcache使ったり、
タスクキュー呼び出ししたりといったロジックを組んでいこうと思う。
appengine-web.xml
App Engineへのデプロイ時に使われる設定群。
オートスケールの指定やリソースの定義なども設定可能。
【参考】
https://cloud.google.com/appengine/docs/standard/java/config/appref?hl=ja
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<runtime>java8</runtime>
<threadsafe>true</threadsafe>
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
</system-properties>
</appengine-web-app>
まとめ
上記2ファイルを用途に合わせて拡張していくことで少しずつアプリの体裁を整えていくことができるはず。