Java

Maven で JUnit4 の機能を使った単体テストと結合テスト

結合テストは、以下の方法が一番簡単だが、integration-test フェーズで結合テストが実行されないのが何となく気持ち悪かった。http://d.hatena.ne.jp/okinaka/20120413/1334292605以下の記事を参考に、integration-test フェーズにて結合テストが実行できる…

sql-maven-plugin で dbdeploy 用管理テーブルを作成

dbdeploy 用の管理テーブル (changelog) を作成する方法として、sql-maven-plugin を利用してみた。http://mojo.codehaus.org/sql-maven-plugin/PostgreSQL 用のテーブル定義 (src/main/sql/0000_dbdeploy_changelog.sql) は、 CREATE TABLE IF NOT EXISTS c…

継続的デリバリーの一歩: dbdeploy を使ってみた

dbdeploy とは、java 製のデータベース変更管理ツール。コマンドラインツールとしても使えるが、主な用途は ant タスクや maven プラグインとして利用すること。わりと歴史があるツールみたい。http://dbdeploy.com/PostgreSQL の createSchemaVersionTable …

継続的デリバリーへの一歩:自動受け入れテスト(準備編)

自動受け入れテストは、コミットテストが成功して初めて実施されるものであるため、実行タイミングを分けてやる必要がある。ここでは、Java での開発を前提とし、自動受け入れテストは JUnit を使用するものとする。ググってみたところ、 maven で単体テスト…

JUnit で JNDI DataSource を使う

サーバーサイドの場合、データベースのコネクションを取得するために DataSource を利用するのが一般的。JUnit を実行するときには、サーブレットコンテナなどは動作していないため、事前にJNDIの準備が必要。JUnit JNDI DataSource helper package というも…

Java SE API 日本語ドキュメント

java.sun.com ドメインのサイトが運用終了になってしまったらしい。http://d.hatena.ne.jp/chiheisen/20120326/1332715371日本語で JavaDoc を読みたい人はこちら: http://download.java.net/jdk/jdk-api-localizations/jdk-api-ja/builds/latest/html/ja/a…

ivy で外部のリポジトリを参照する

ライセンスの関係で、ivyのデフォルトのリポジトリに取り込まれていないライブラリが存在する。 たとえば JavaMail が欲しい場合、ivysettings.xml を新たに作成する。 <ivysettings> <settings defaultResolver="chain-example" /> <resolvers> <chain name="chain-example"> <ibiblio name="ibiblio" m2compatible="true" /> </ibiblio></chain></resolvers></settings></ivysettings>

Ubuntu 10.10 で ivy を使う

ivy とは、複雑な java ライブラリの依存関係を解決してくれる ant のプラグイン。遅ればせながら導入を検討中。 インストールする まずはパッケージをインストール。 aptitude install ivyインストール後、 /usr/share/doc/ivy/README.Debian を読むと、 Th…

Java で Webのサムネイル生成

Web のキャプチャ画像のサムネイルを作成しようと思った。 サーバ上で自動生成するのが理想。Windows 上では割と便利なソフトがそのまま使えるらしいが、 Linux 上でできる方法を探してみた。一番簡単そうなのがこれ: http://blog.flup.jp/2007/07/04/web_t…

Tomcat 6.0.20 の仕様

久々にハマった・・・。context.xml の内容は、滅多なことでは変更しないので気づかなかった・・・。Tomcat 6.0.20 では、META-INF/context.xml を更新しても、実際に Tomcat が参照している $CATALINA_HOME/conf/Catalina/localhost/ROOT.xml を更新してく…

Tomcat 6.0.18 で JSTL を使うには

ここを参考にした。 Maven のリポジトリからとってくるといいみたい。 https://maven-repository.dev.java.net/repository/jstl/jars/

Java のサンプル

Java で XML のファイルを処理するテスト。 単なるテストなため、コメントと内容が大きく食い違っているのは無視してください。 import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.u…

war ファイルを展開する

jar -xvf hoge.war

画像の一部を別ファイルに保存する。

Java Image I/O API ガイド を読みながら、プログラムを作ってみた。gif 形式の画像の左上4分の1の部分を png 形式で保存している。 import java.awt.image.BufferedImage; import java.awt.Rectangle; import java.io.File; import java.util.Iterator; imp…

Tomcat 6.0.18 のロギングの設定

標準のロギングAPIと同様に設定ファイルを指定する。 CATALINA_OPTS="-Djava.util.logging.config.file=${CATALINA_HOME}/conf/logging.properties"logging.properties の雛形が conf ディレクトリに用意されているので、これをカスタマイズして使う。

Tomcat Native library とは?

catalina.out に以下のログが出力されている。何だろう?と思った。 The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: う〜む。どうやらそういうライブラ…

ログギングの設定ファイルの指定

Java のロギングAPIは、デフォルトでは、$(JAVA_HOME)/jre/lib/logging.properties を参照する。以下の様に、コマンドラインオプションで設定ファイルを指定できる。 java -Djava.util.logging.config.file=logging.properties クラス名

Tomcat 6.0.18 の仕様変更

Tomcat 6.0.18 にバージョンアップしたところ、以下のような技が使えなくなった。 <jsp:include page="<%= "sub.jsp" %>"> <jsp:param name="attr" value="<%= "a" + "b" %>"/> </jsp:include>どうもJSP 2.0の仕様に準拠したためエラーになる様だ。 https://issues.apache.org/bugzilla/show_bug.cgi?id=45015以下のようなエスケープが必要らしい。 <jsp:include page="<%= \"sub.jsp\" %>"> </jsp:include>

ant の jar タスク

スタンドアロンの Java アプリケーションの build.xml を作成するとき、マニフェストに Main-Class を指定しておくとよい。 <jar jarfile="${build.dir}/${name}.jar" basedir="${build.dest}"> <manifest> <attribute name="Main-Class" value="${main.class}"/> </manifest> </jar> 参考: http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/jar/jar.html

JSON-lib を使う

http://json-lib.sourceforge.net/テストしてみた。 import net.sf.json.JSONObject; public class App { public static void main( String[] args ) { String src = "{\"name\":\"hoge\"}"; JSONObject json = JSONObject.fromObject(src); System.out.prin…

Generics と配列

Generics と配列は、同時に使おうとすると、どうも相性の悪い組み合わせ。Generics を使う場合は、配列を List に置き換えた方が良さそう。http://www.ibm.com/developerworks/jp/java/library/j-jtp01255/

Tomcat 6.0.16 の アクション

6.0.16 にバージョンアップした後、本当はバグなんだけど偶然動いていた JSPがエラーで動かなくなってしまった・・・。これか・・・。 <jsp:include page="not-exist.jsp" /> 今までは page の値が不正でも無視されてたみたい。バージョンアップでこれがエラーになるようになった。ChangeLog をみ</jsp:include>…

Tomcat 6.0.16 で Cookie#setVersion(1) にすると・・・

IE6 では対応していないようだ・・・。残念。

Apache Archiva

Apache Archiva というものがあるらしい。Maven2 のリポジトリを管理してくれるアプリケーション。なんかよさげ。スタンドアロンで起動できる。 $ export JAVA_HOME=/usr/lib/jvm/java-6-sun $ cd apache-archiva-1.0.1 $ ./bin/linux-x86-32/run.sh console…

Tomcat 6.0.16 の Cookie が壊れる?

Tomcat を 6.0.16 にバージョンアップしたら Cookie が取得できなくなった。 Cookie にもバージョンがあって、デフォルトが "0" で、(javadoc より) With Version 0 cookies, values should not contain white space, brackets, parentheses, equals signs, …

Ant でリモートのリソースを取得

Get タスクを使う。 http://ant.apache.org/manual/CoreTasks/get.html依存関係などの解消は出来ないけど、 ただ単にURLを指定してダウンロードするだけでいいのではないか。 <get src="http://ant.apache.org/" dest="help/index.html"/></get>

Ivy のサンプルを実行してみる

Ivy (アイビー)は、Javaライブラリの依存関係を解決してくれるツール。すでに ant を利用していて今更 maven には切り替えられないプロダクトに適用するといいだろう。インストールのページに以下のような説明があった。 If you use ant 1.6.0 or superior, …

AppFuse

Webアプリケーション開発用スターターキット。こんなのがあったのね。でもフレームワークは一切使わない(Tomcat と Ant があれば十分)のでいますぐ活用できるわけでは無いのだが。http://appfuse.org/

javadoc のパッケージ情報

javadoc で処理される package.html ファイルを使用していたが、Java 5 から package-info.java ファイルがパッケージの情報を記述するためのファイルとなった。 /** * ここにパッケージの概要を記述する。 * @since 1.5 */ package com.example;

CSV データをパースする

Excel の CSV データは以下のルール(エスケープ)がある。 ダブルクォートで囲った場合 カンマは文字として扱う。 ダブルクォートが2つ連続すると、1文字として扱う。 CSV の各項目を取り出したいとき、正規表現を使うと簡単。 参考: http://oraclesqlpuzzle…