Java
このサイトがとても良くまとまっていて便利。http://www.java-email.com/content/view/38/60/ (今日は手抜きです)
ちかごろ、僕が関与する案件では、アプリからJavaMailでメール送信することが多いです。 で、コードを書くのは簡単なのですが、単体テストが大変という。 JavaMailって何気にクセが強いので、実際にSMTPで送ってみないと コードがうまくできてるかどうか、分…
例えばフックメソッドなど、オーバーライドされることで初めて意味を成すメソッドが有ります。 例えば、こんな感じ。onMethodメソッドとonFieldメソッドがそうです。 public class ClassInspector { public void inspect(Class clazz) { for (Class cls = cl…
スレッドローカルは便利なクラスです。 いつでもどこでもスレッドセーフなグローバル変数を定義することができます。 ごく稀にですが、スレッドローカルを使わないと解決できない問題もあるでしょう。 しかし、思うのです。スレッドローカルを使うのは基本的…
Tomcat-6.0.20のlibディレクトリ配下に、annotation-api.jarがあります。 このjarを展開し、javax.annotaion.Generated.classを逆コンパイルすると… // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.co…
いま、XMLをApache Digesterでパースするコードを書いているのですが、 (それにしても、DigesterのAPIはホントにわかりづらいなぁ…メソッド名が直感的じゃないというか) not well-formedなXMLを読ませようとすると、 org.xml.sax.SAXParseException: The ele…
お前が犯人か〜〜〜!!!! 今日、POSTパラメータが文字化けするという問題と4時間くらい格闘していたのですが。バイナリエディタまで引っ張り出してきて、文字化けの原因を探ったり。 僕にとってバイナリエディタを使うというのは、針の穴に糸を通す行為と…
これまで、Genericsのパラメータ型("Set"における"String"のこと)は、ランタイム時にはイレイジャによってすべて消されるものと思い込んでいました。(クラス除く) しかし、どうやら"フィールド"および"メソッドの引数&戻り値"については、ランタイム時にパ…
さっきEclipseのバイトコードタブを見て知ったのですが。package-info.javaは、パッケージプライベートな空のインターフェースとしてコンパイルされます。ソースはこんな感じ。 // class version 50.0 (50) // access flags 5632 abstract interface jp/root…
先程、これの10章を読み終えました。Effective Java (Java Series)作者: Joshua Bloch出版社/メーカー: Prentice Hall発売日: 2008/05/08メディア: ペーパーバック購入: 6人 クリック: 65回この商品を含むブログ (42件) を見る 284ページの内容がちょっと面…
mavenやivyを使っていると「あのJarファイルはどのMavenリポジトリに入っているんだろう?」と思うことが良くあります。 その度に、一々リポジトリを見に行って探す必要がありました。 そんなあなたにMaven Repo Search。 これを使えば一発検索できます。あ…
EclipseのコンパイラとJDKのコンパイラは別物です。 ECJでコンパイルできても、javacでコンパイルできないことがあります。 では、どんなケースがjavacではダメなのか。 その一部を紹介します。 ケース1: アノテーションの属性値配列の、最後の要素のカンマ …
コーディングをしていて、こういうケースって非常によくありますよね。 void method(Object arg0, Object arg1) { if (!((arg0 == null) || (arg1 == null))) { ... } } (以下、この書き方を「最後に否定」パターンと呼ぶ) このコードは、こう書くこともでき…
Java界におけるXMLパーサーの標準実装といえばXerces。 最近はXMLを扱わないWebアプリケーションは滅多にない(設定ファイルとかは大抵XML)と思うので、非常に高い確率でxercesImpl.jarを(間接的に)使っていると思います。 ところがこのXerces、Webアプリケー…
Oracleには、IN句の引数が1000個までという制限(※)があります。(※) Oracleのアーキテクチャ上、IN句の最適化が難しいためにわざと設けた制限であると、どこかで読んだ気が。 JPQLにもIN句があるので、 『OracleでJPAを使用した場合は同様の制限があるのかも…
ちょっとしたtip。Eclipse上のSubversionクライアントでファイルを更新するとき、たまに"checksum mismatch"というエラーを吐いて先に進めなくなる時があります。そういう時は次のようにするとよいです。 エクスプローラーなどで、Eclipseの外から当該ファイ…
いつの間にかIvyDE 2.0.0がリリースされていた。 IvyDE-2.0.0-betaには、jarファイルに対応するソースコードを自動ダウンロード&アタッチしてくれないという、デバッグ時に大変困るバグ(※)があったのだが、解消された模様。よかったよかった。(※) ちなみにI…
弊社のプロダクトであるR42フレームワークでは、Spring2.5で追加された機能であるを使用することで、特定のクラスを自動的にコンポーネントとしてBeanリポジトリに取り込んでいます。これにより、開発者がApplicationContext.xmlを一切書く必要がない開発を…
某巨大掲示板のSeasarスレでSpringとの比較が議論されていた。 全部読んだわけではないけど、僕の理解をまとめると 日本語限定なら情報量はSeasarのほうが多い。英語も含めるならSpringのほうがもっと多い Springは、(中〜大規模開発を見据えた)オレオレフレ…
EclipseLink(1.1.2)が良く分からないエラーを吐く。何でConcurrentModificationExceptionになるんだろう。 java.util.ConcurrentModificationException java.util.IdentityHashMap$IdentityHashMapIterator.nextIndex(IdentityHashMap.java:715) java.util.I…
6/25の日記で、Eclipseのプロジェクト依存関係を設定する方法を紹介しました。 今日はそれに関連した小ネタを一つ。 例えば、r42fw_sampleというプロジェクトがr42fwというプロジェクトに依存しているとき、 r42fwを修正しても、修正済みクラスは/WEB-INF/cl…
先程まで、OGNL式の謎の例外に悩まされていたのですが、 Caused by: java.lang.NullPointerException at com.opensymphony.xwork2.ognl.OgnlValueStack.checkForInvalidProperties(OgnlValueStack.java:298) at com.opensymphony.xwork2.ognl.OgnlValueStack…
現行最新版のStruts2はstruts-2.1.6であり、それに対応するXWorkはxwork-2.1.2です。 でも、XWorkの最新版は2.1.4です。そこで、XWorkを入れ替えて最新にしてみました。すると… Caused by: java.lang.NoClassDefFoundError: com/opensymphony/xwork2/util/Te…
確認画面付きの更新系のユースケースにおいては、入力画面を表示するときに最初に一度だけ初期値を復元する必要があります。このとき、入力フィールドに初期値を表示するために(#initialValueOfHogeはどこかから持ってきた値とする) <s:textfield name="hoge" value="#initialValueOfHoge" /> と書いてしまうとダメで</s:textfield>…
Struts2のタグは、リストをforeachループでまわしてそれぞれの要素を操作する場合に使用するタグです。 ごく簡単なWebアプリケーションを作成する場合ですら、必須のタグであると言って良いです。たぶん。 しかしながら、にはある落とし穴が存在します。 落…
最近、Effective Java第二版を読んでいるのですが(英語の訓練も兼ねて洋書を)、 面白い構文があったのでご紹介します。Effective Java (Java Series)作者: Joshua Bloch出版社/メーカー: Prentice Hall発売日: 2008/05/08メディア: ペーパーバック購入: 6人 …
大規模なプロジェクト(ここでいう「プロジェクト」は「案件」ではなくEclipseのプロジェクトを指す)では、複数のサブプロジェクトに分割して開発することが多々あると思います。そして、共通モジュールプロジェクトのように、他のプロジェクトが依存するプロ…
初めまして。ルート42株式会社の高橋と申します。 弊社では自社プロダクトの一つとしてフルスタックフレームワークの構築をしています。 その過程で得られたノウハウを、備忘録も兼ねてブログで公開してみることにしました。 不定期の更新になると思いますが…