アットウィキロゴ

Google App Engine

Google App Engine

Strutsの利用

  1. Struts 1.3.10のダウンロード
    Examples struts-1.3.10-apps.zipをダウロンドーする。
    http://struts.apache.org/download.cgi#struts1310
    
  2. struts-examples-1.3.10.warを取り出す。
  3. struts-examples-1.3.10.warを解凍し、struts-examples-1.3.10\WEB-INF\srcを別の場所に一時移動しておく。
  4. EclipseでGAEJのプロジェクトを作成する。
    GoogleWebツールキットを使用のチェックを外して完了ボタン
    
  5. war\WEB-INF\lib配下のjarファイルを確認する。
    このjarファイルは、ビルド・パスを通すときに対象外となるjarのライブラリになる。
    
  6. 解凍したstruts-examples-1.3.10のwarの中身を、eclipseのwarフォルダの中に上書きする。
  7. strutsのライブラリにビルド・パスを通す。
  8. strutsのsrcフォルダの中身をプロジェクトのsrcフォルダへコピーする。
    strutsのソースはjavaというフォルダの中にあるので、その中身をsrcフォルダ直下にコピーすればおk
    ※デフォルトでsrcフォルダ直下に作成されていたパッケージ(?)だかフォルダは削除してもおk
    
  9. コンパイルエラーをちょちょいと直す。
    GAEで利用不可の処理を行っているためエラーが発生している。
    プロジェクトルート\src\org\apache\struts\webapp\upload\UploadAction.javaの120行~127行をコメントアウトすればおkだった。
                       //write the file to the file specified
    //
    //                    int bytesRead = 0;
    //                    byte[] buffer = new byte[8192];
    //                    while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
    //                        bos.write(buffer, 0, bytesRead);
    //                    }
    //                    bos.close();
    //                    data = "The file has been written to \"" + theForm.getFilePath() + "\"";
    
  10. 動作確認する。
  11. エラー発生(;・∀・)
    HTTP ERROR 500
    Problem accessing /welcome.do. Reason: 
    
        Session support is not enabled in appengine-web.xml.  To enable sessions, put <sessions-enabled>true</sessions-enabled> in that file.  Without it, getSession() is allowed, but manipulation of sessionattributes is not.
    
    Caused by:
    java.lang.RuntimeException: Session support is not enabled in appengine-web.xml.  To enable sessions, put <sessions-enabled>true</sessions-enabled> in that file.  Without it, getSession() is allowed, but manipulation of sessionattributes is not.
    	at com.google.apphosting.utils.jetty.StubSessionManager$StubSession.throwException(StubSessionManager.java:67)
    	at com.google.apphosting.utils.jetty.StubSessionManager$StubSession.setAttribute(StubSessionManager.java:63)
    	at org.apache.struts.chain.commands.servlet.SelectLocale.getLocale(SelectLocale.java:68)
    	at org.apache.struts.chain.commands.AbstractSelectLocale.execute(AbstractSelectLocale.java:71)
    	at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    	at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    	at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
    	at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    	at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    	at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:693)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
    	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
    	at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    	at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    	at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    	at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:349)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at org.mortbay.jetty.Server.handle(Server.java:326)
    	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
    	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
    	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
    	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
    	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
    
  12. war\WEB-INF\appengine-web.xmlへセッションを有効にする記述を追加する。
    <?xml version="1.0" encoding="utf-8"?>
    <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    	<application></application>
    	<version>1</version>
    
    	<!-- Configure java.util.logging -->
    	<system-properties>
    		<property name="java.util.logging.config.file" value="WEB-INF/logging.properties" />
    	</system-properties>
    
    	<!--	追加-->
    	<sessions-enabled>true</sessions-enabled>
    
    </appengine-web-app>
    
  13. 再度、ブラウジング確認
    http://localhost:8888/welcome.do
    
    Struts Examplesのページが表示されればおk
    
最終更新:2010年12月01日 02:06
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。