あの日見た仮想記憶の夢 このページをアンテナに追加

2009-04-16

今明らかにされる Google App Engine for Java の実行環境

※ ひひひ、初めて釣りっぽいタイトルを入れてみたよ。

テスト用のServletを入れて、少しGoogle App Engine for Javaの実行環境を探ってみた。


読み込み可能なシステムプロパティは以下の通り。ちなみに環境変数はきれいさっぱり消されている。

プロパティ
java.version1.6.0_13
java.class.version50.0
java.vendorSun Microsystems Inc.
java.vendor.urlhttp://java.sun.com/
java.vm.nameJava HotSpot(TM) Client VM
java.vm.version1.6.0_13
java.vm.vendorSun Microsystems Inc.
java.vm.specification.nameJava Virtual Machine Specification
java.vm.specification.version1.0
java.vm.specification.vendorSun Microsystems Inc.
java.specification.nameJava Platform API Specification
java.specification.version1.6
java.specification.vendorSun Microsystems Inc.
line.separatorなんだっけ
file.separator/
path.separator:
os.nameLinux
file.encodingANSI_X3.4-1968
user.dir/base/data/home/apps/アプリ名/バージョン名+ごにょごにょ

Servlet呼び出しのスタックトレースは↓こんな感じ。SDKに入っている開発用サーバもそうだけど、ServletコンテナJettyを使っているらしい。ああ、なんとかしてNetBeansからデプロイできないかな。

 at ほげパッケージ.Servlet.doGet(Servlet.java:75)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
 at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
 at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
 at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:35)
 at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
 at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
 at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
 at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
 at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
 at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
 at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
 at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
 at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:237)
 at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
 at org.mortbay.jetty.Server.handle(Server.java:313)
 at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
 at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:830)
 at com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:63)
 at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
 at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:125)
 at com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:235)
 at com.google.apphosting.base.RuntimePb$EvaluationRuntime$6.handleBlockingRequest(RuntimePb.java:4547)
 at com.google.apphosting.base.RuntimePb$EvaluationRuntime$6.handleBlockingRequest(RuntimePb.java:4545)
 at com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest(BlockingApplicationHandler.java:24)
 at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:359)
 at com.google.net.rpc.impl.Server$2.run(Server.java:792)
 at com.google.tracing.LocalTraceSpanRunnable.run(LocalTraceSpanRunnable.java:56)
 at com.google.tracing.LocalTraceSpanBuilder.internalContinueSpan(LocalTraceSpanBuilder.java:489)
 at com.google.net.rpc.impl.Server.startRpc(Server.java:748)
 at com.google.net.rpc.impl.Server.processRequest(Server.java:340)
 at com.google.net.rpc.impl.ServerConnection.messageReceived(ServerConnection.java:422)
 at com.google.net.rpc.impl.RpcConnection.parseMessages(RpcConnection.java:319)
 at com.google.net.rpc.impl.RpcConnection.dataReceived(RpcConnection.java:290)
 at com.google.net.async.Connection.handleReadEvent(Connection.java:419)
 at com.google.net.async.EventDispatcher.processNetworkEvents(EventDispatcher.java:733)
 at com.google.net.async.EventDispatcher.internalLoop(EventDispatcher.java:207)
 at com.google.net.async.EventDispatcher.loop(EventDispatcher.java:101)
 at com.google.net.rpc.RpcService.runUntilServerShutdown(RpcService.java:249)
 at com.google.apphosting.runtime.JavaRuntime$RpcRunnable.run(JavaRuntime.java:373)
 at java.lang.Thread.run(Unknown Source) 

InetAddressクラスとかはそもそも存在すらしないらしい。

NetworkInterfaceクラスの試用にいたってはサーバ障害っぽい事態まで引き起こしてしまった。ごめんなさいごめんなさい。

tsukasa57tsukasa57 2009/04/18 02:00 ユーザIDとパスワードを入力するために一度だけコマンドラインからデプロイする必要がありますが、NetBeans からのデプロイは build.xml を修正すればできなくはないです。GAE for Java の ant の説明を読めば分かると思います。
一度コマンドラインからデプロイすると、以降はどこかに cookie が保存されるらしく、NetBeans からデプロイできます。

まだ、GAE for Java は私にとっては使いにくいので私は mor.ph に逃げました...

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/xtanza/20090416/p1