思いつくままプログラミングネタを書き殴ります。Javaでgrizzlyを使って簡単WebServerWebアプリでExcelを作るのはJavaのpoiが一番安定していて使いやすいと思っています。そこでバックエンドでExcelを作るためのサーバを作ることにしました。tomcatとか準備するのは面倒ですし、ゼロからサーバを書くのも大変なのでgrizzlyでサーバを書きました。{System.err.println(e);}}}起動させてブラウザでhttp://localhost:8080/aliveにアクセスすると「alive」を返します。後はやりたい処理のHttpHandlerを書いて、パスと結びつければOKです。Excel出すなりPDF出すなりなんでもOK。grizzlyのサンプルではSystem.in.readlnで終了処理を行っているのですが、これだとバックグラウンドで動かすと標準入力がEOFになってしまい機能しません。そこで、停止ファイルを見て処理を終了させるようにしました。サーバ機能自体は別スレッドで動いているので、sleepしても止まりません。CXFを動かしてみました。CXFをダウンロードして、samplesのjax_rs/basicをサンプルにある独自のサーバでは無く、warの構造にしてjettyで実行してみます。</build></project>次はweb.xmlです。</servlet-mapping></web-app>ここで注意点はweb-appにmetadata-complete="true"を追加することです。分かってないんですが、これを付けずに実行するとExceptionが出て、ぐぐってみるとこれがないとJettyでversion=2.5で発生するそうです。次に作成したクラスを定義するXML、deploy-context.xmlです。これはweb.xmlと同じところにおきます。/></beans>あとは、jax_rs/basicの中にあるサーバ側のソースを指定のpackageにおいてコンパイルすればOKです。standalone="yes"?><Customer><id>123</id><name>John</name></Customer>が返って来ます。JavaのソースはほとんどPOJOなんですが、アノテーションでアクセスするパスを記述すると簡単にURLにマッピングできます。戻り値のXMLはJavaのBeanクラスをマッピングしたものを自動で生成してくれます。RESTプログラミングするには、CXFがかなり便利です。PersistenceをGuiceで使うORマッピングはコンピューターサイエンスのベトナム戦争なんて言われてたりして、私個人も自分でSQLを書かないと気持ち悪いので、JDBCでやるのが好きです。JDBCもパラメーターの設定とか、select結果の取得がめんどくさいです。Persistenceというライブラリがそういう機能を実装しているので、これを利用することにしました。普通に使う方法はサイトを見てもらえばよいと思いますので、ここではGuiceを使って呼び出してみます。GuiceとはGoogleの提供しているDIコンテナです。XMLで依存関係を定義するDIコンテナが多い中、これはXMLを使わずにJavaで定義します。Javaなので単純なスペルミスとか検出してくれるので便利です。Guiceの定義クラスです。{binder.bind(PersistenceManager.class).toProvider(PersistenceManagerProvider.class);}}このソースはPersistenceManagerを要求しているところには、PersistenceManagerProviderから提供すると定義しています。次にPersistenceManagerProviderです。persistenceManager;}}PersistenceManagerが要求された時にgetメソッドが呼ばれて渡されます。次に実際にPersistenceManagerを利用しているクラスです。{mgr.getScopingDataSource().abortTransactionScope(e);}}}@Injectのアノテーションのある変数にGuiceによってPersistenceManagerが注入されます。上のコードではselectを実行してMapのListを取得することや、insert時のパラメーターの与え方が簡単にできることがわかると思います。}}実行結果は以下の通り。ClickとJettyをmavenで構築する方法のメモです。-DarchetypeArtifactId=maven-archetype-webappできたフォルダへ移動して、生成されているpom.xmlを書き換えます。Guideを見て、ページとソースを作成。▲wicketをjetty7で動かすwicketをjetty7で動かすためのメモ。eclipseで修正しながら、動作を確認できる方法です。本当はeclipseのpluginでできればうれしいんだけど、まだjetty7には対応していないみたいです。pluginのartifactIdをmaven-compiler-pluginからjetty-maven-pluginに変更。<jetty.version>7.0.0.v20091005</jetty.version></properties>変換後のpom.xmlは以下のようになります。eclipseにmaven用のjarのパスを追加ワークスペースのパスは各自の環境に合わせて修正してください。(12/28)PostgreSQLとRubyを組み合わせてブラックリストチェックの速度を測ってみた。