タグ

ブックマーク / jabaraster.hatenadiary.org (6)

  • eclipse+Jetty開発環境の作成 - じゃばらの手記

    Herokuに手を出してからというものの、eclipse+Jettyで開発することが多くなりました。 JettyのおもしろいところはAPIを使って起動用クラスを作ることで、普通のJavaアプリとして起動できることです。 これが便利なところは 起動が速い! 特別なプラグインを入れなくても、ふつーにeclipseでデバッグできる 組み込み用途に使える などですかね。 同じことはGlassfishでも出来るんですが、Jettyは依存JARが少なくサイズが小さいのでお手軽ですし、GlassfishAPIが安定していなくって起動用クラスの作成に苦労するんですよね。 そんなわけで今回はeclipse+Jettyのお手軽開発環境を構築する手順をまとめてみました。 例として「sample-web」というプロジェクトを作ってみましょう。 前提 Mavenが導入済みであること http://maven.ap

    eclipse+Jetty開発環境の作成 - じゃばらの手記
  • JerseyでJSONを扱うときは注意 - じゃばらの手記

    JAX-RSは素晴らしい仕様です。 しかし、その参照実装であるJerseyでJSONを扱うときには注意が必要です。 けっこうイヤな動きをします。 Listオブジェクトをエンコードしてくれない トップレベルのオブジェクトがListの場合、JSONにしてくれません。 他のオブジェクトのプロパティとしてListを持たせる分にはOKです。 Listの要素数でJSONでの型が変わる 要素数が0のとき⇒null 要素数が1のとき⇒要素そのもの 要素数が2以上のとき⇒配列 となります。 ・・・この仕様が嬉しい人いたら教えて下さい。 サンプル 文字列のListをJSONで返すコードを書いてみます。 直感的な動作は return Arrays.<String>asList(); のときは [ ] return Arrays.<String>asList("a"); のときは ["a"] return Arr

    JerseyでJSONを扱うときは注意 - じゃばらの手記
  • java.util.List#subListの誤った用法 - じゃばらの手記

    java.util.List#subListメソッドの使い方がまちがっていたためにメモリリークを犯してしまっていた、という話です。 画像の各ピクセルの色を抽出してある法則に並べ替えた後に、先頭の10個の要素を返す、というメソッドを作るとしましょう。 このとき List<Color> cs = ... Collections.sort(cs, COMPARATOR); return cs.subList(0, 10); と書いてしまうと問題が生じます。csがメモリリークを起こすのです。 java.util.List#subListのJavadocによると、このメソッドはあるリストの特定の範囲を操作したいときの面倒なインデックス計算を省略するためにあるようです。 例えばJavadocの例ですが list.subList(from, to).clear(); と書くとのfromからtoの範囲の要

    java.util.List#subListの誤った用法 - じゃばらの手記
    atm_09_td
    atm_09_td 2012/08/14
    覚えとこ。
  • StrutsのメッセージファイルをXMLにする - じゃばらの手記

    久々のJavaネタ。Strutsの話です。 Strutsではメッセージをpropertiesファイルに記述しますが、これを変更してXMLで書けるようにする方法を紹介します。 仕様 今回のサンプルでは、メッセージファイルはクラスパス直下に置くことにします。 多言語化を考慮して、メッセージファイルの末尾にはロケールを付与するようにします。 (ファイル名の例) message_ja.xml XMLの形式はこんな感じで。 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <messages> <message key="k0"> <text>メッセージ0</text> </message> <message key="k1"> <text>メッセージ1</text> </message> <message key="k2"> <text

    StrutsのメッセージファイルをXMLにする - じゃばらの手記
  • JSFで会話スコープを終わらせつつ自画面に遷移 - じゃばらの手記

    若干はまったのでメモ。 あるBeanの会話スコープを終わらせるにはConversation#end()を呼ぶわけですが、このメソッドを呼んだからと言ってプロパティが初期化されたりはしません。当たり前と言えば当たり前ですが。 このことが若干問題になることがあります。 会話スコープを終わらせたリクエストの遷移先画面で、そのBeanを参照する時です。 スコープは抜けたもののプロパティはそのままなので、初期化をもらすと遷移先画面でゴミが見えてしまうのです。 サンプルで確かめてみます。 XHTML側。conversation.xhtmlというファイル名にします。 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.s

    JSFで会話スコープを終わらせつつ自画面に遷移 - じゃばらの手記
  • Servlet3.0で追加されたファイルアップロードを使う - じゃばらの手記

    Servlet3.0から、HttpServletRequest#getParts()というメソッドが追加され、ついにJavaEE標準でファイルアップロードが使えるようになりました。 JSFと連携する方法を調査したので、過程と結論をメモしておきます。 @MultipartConfigアノテーションの付いたServletが必要 前提として、getParts()を使うには@MultipartConfigアノテーションの付いたServletが必要です。 この制約のおかげで実はgetParts()はかなり使いにくくなっています。 JSFとは連携出来ない? 私が調査したのはJSFでアップロードファイルを取得する方法ですが、FacesServletには@MultipartConfigアノテーションは付いておらず、また、FacesServletはfinalで継承出来ません。 つまりFacesServlet

    Servlet3.0で追加されたファイルアップロードを使う - じゃばらの手記
  • 1