あるディレクトリで、その場で即席のWebサーバ立ちあげられたら便利だなと思いました。 PHPでも5.4になって組み込みサーバが使える様になりましたが、PEARなどの外部ライブラリの連携が最近はどうなってるか知らないので、ちょっとスルー。せっかくなのでGroovyエコシステムが使えたほうが楽しそうなので、やっぱりGroovy + Jettyだよね。 http://php.net/manual/ja/features.commandline.webserver.php Jettyの前に、winstoneという軽量なServletContainerもありました。が、2008年で開発が止まってるのが微妙。 - winstone -- http://winstone.sourceforge.net/ - http://d.hatena.ne.jp/taichitaichi/20070320/1174405888 - http://db2.jugem.cc/?eid=969 - http://labs.mapion.co.jp/blog/entries/2010/05/12/post-7/ 去年くらいにJetty8をGroovyで使ったことがあるが、GrapeでDLしたのがそのままロードされなくて、".ivy"以下にDLされたXMLファイルか何かを弄ってようやく"@Grab"出来た記憶が。 でも、またバージョンアップされてて、試したら今度はそんなバッドノウハウいらなかった。 - Jetty8 -- http://wiki.eclipse.org/Jetty -- http://download.eclipse.org/jetty/stable-8/apidocs/ -- http://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jetty groovyserv使うと、場合によってはgroovyserver側にJettyインスタンスが残ってしまう可能性を考慮して、ちゃんとシャットダウンシーケンス作りたいよね。Server.stop()とかServer.setGracefulShutdown()呼べば良さそう。 別ポート番号でHTTP受け付けて、そこからServer.stop()呼べばイインジャネ? - http://d.hatena.ne.jp/touchez_du_bois/20120501/1335895784 - http://glaforge.appspot.com/article/a-groovy-web-server - http://deltam.blogspot.jp/2005/01/groovyweb.html - http://mresetar.blogspot.jp/2010/04/http-server-with-logging-in-20-lines-of.html -- →これはgroovy -l 形式なので使えない・・・。 - http://d.hatena.ne.jp/Kazuhira/20121012/1350058511 - http://www.techscore.com/tech/Java/JavaSE/JavaSE6/8/#mustang8-5 - https://gist.github.com/kyonmm/1795988 -- com.sun.net.というのがう~ん・・・。 結局のところ、別ポート立ちあげなくとも、"__stop__"という特殊なURLにShutdown専用のServlet紐付けて、そこからServer.stop()呼ぶスレッド(wait中にしとく)をnotify()すればいいよね、ということでfix. →というわけで [[1183]] をUP。そろそろGroovyServletでのサクサク開発のバリエーションでっち上げるの、飽きてきた・・・。4バージョン目じゃなイカ。 あと今更だけれど、SessionってThreadSafeだっけ?という話: - java - Is HttpSession thread safe, are set/get Attribute thread safe operations? - Stack Overflow -- http://stackoverflow.com/questions/616601/is-httpsession-thread-safe-are-set-get-attribute-thread-safe-operations - How HttpSession is not thread safe (Servlets forum at JavaRanch) -- http://www.coderanch.com/t/361845/Servlets/java/HttpSession-thread-safe - Java: synchronizing on an ID -- http://illegalargumentexception.blogspot.jp/2008/04/java-synchronizing-on-transient-id.html - HttpSession関連のスレッドセーフなコードについて - Google グループ -- https://groups.google.com/forum/?hl=ja&fromgroups=#!msg/javaee-study/Mvvav84ljRI/ym2cctYPkNwJ →Servlet2.5位で微妙に仕様が変わってるらしいが、いずれにしても、うっかりするとスレッドセーフでなくなる可能性が高い状況。基本スタンスとしてスレッドセーフ「でない」ものとして扱い、必要に応じて何かしらラッパーを挟む必要がありそう。