ダウンロード
              ソースコードについては、以下のページをご参照ください。
- Google App Engine for Java 書籍情報
 
- http://www.gluegent.com/books/
 
- 株式会社グルージェント
 
- http://www.gluegent.com/
 
            
            
              お詫びと訂正(正誤表)
              本書の掲載内容に下記の誤りがございました。読者の皆様、および関係者の方々にご迷惑をおかけしましたことをお詫び申し上げます。
「第4章 データストア」
P.148 リスト4.5.1内4行目
| 誤 | 
createEntityManagerFactory("transactions-optional"); | 
| 正 | 
.createEntityManagerFactory("transactions-optional"); | 
P.159 リスト4.6.3内47行目
| 誤 | 
(List<CounterShard>)query.execute(name) | 
| 正 | 
(List<CounterShard>)query.execute(name); | 
P.162 リスト4.6.6内3行目~4行目
| 誤 | 
Query query = pm.newQuery(Entry.class) .setFilter("categories == :category"); | 
| 正 | 
Query query = pm.newQuery(Entry.class);   query.setFilter("categories == :category"); | 
P.164 リスト4.6.9内3行目
| 誤 | 
"select key from " + EntryIndex.class.SimpleName() + | 
| 正 | 
"select key from " + EntryIndex.class.getSimpleName() + | 
P.164 リスト4.6.9内4行目
| 誤 | 
" where categories == target"); | 
| 正 | 
" where categories == :target"); | 
「第5章 サービスAPI」
P.170 リスト5.1.1内7行目
| 誤 | 
private final int ONE_HOUR_SEC = 60 * 60; | 
| 正 | 
private static final int ONE_HOUR_SEC = 60 * 60; | 
「第7章 Googleが提供するサービスとの連携」
P.245 リスト7.2.1内17行目
| 誤 | 
if (req.getUserPrincipal() != null) { →② | 
| 正 | 
if (req.getUserPrincipal() == null) { →② | 
P.254 下から3行目
P.262 図7.3.6
| 誤 | 
 
 | 
| 正 | 
  |