java

過去の資産は負債か

javac コマンドの-source, -target オプションのルール変更について | 寺田 佳央 - Yoshio Terada 2、3年前にやってたプロジェクトはコンパイルオプションの指定も何もjdk1.4を使ってたから影響はないのかな(笑)

ストップウォッチ

/** * 時間計測用クラス */ public class StopWatch { static { // JITコンパイルでも走るのか、最初の1回目は遅いので適当に動かしておく StopWatch s = new StopWatch(2, TimeUnit.NANOSECONDS); s.start(); s.phase(""); s.split(""); s.stop(); s.phases…

変更の可/不可を切り替えられるコレクション

public class ConditionalModifiableCollection<T> implements Collection<T> { private class ConditionalModifiableIterator implements Iterator<T> { private Iterator<T> it = baseCollection.iterator(); @Override public boolean hasNext() { return it.hasNext(</t></t></t></t>…

後始末のできるThreadLocal

/** * GCでインスタンスが解放される前に任意の処理を行うためのThreadLocal。<br/> * 必要な解放処理は{@link Closeable#close()}に実装する。<br/> * 注意点:<br/> * <ul> * <li>このThreadLocal以外でインスタンスの強い参照を持っていても、スレッドがなくなると{@link Closeabl</li></ul></br/></br/></br/>…

java8でgrep

どこかのページでこんな課題を見かけたので作ってみる。 単純な文字列検索で可、 行番号も出力する、 forやwhile、ifなどの制御構文は使用不可という前提で。 String[] args = new String[] {"stream", "pair"}; Stream<Integer> count = Stream.iterate(1, i -> i + </integer>…

java8での日時書式化

java8で日時を書式化してみた。 // 一般的? print("LocalDateTime"); print(LocalDateTime.now()); // 2014-03-28T01:09:49.059 print(LocalDateTime.now().format(DateTimeFormatter.ofPattern("Gyyyy/MM/dd HH:mm:ss"))); // 西暦2014/03/28 01:09:49 // …

poi。HSSFCell#setAsActiveCellの問題。その2。

先日の記事の修正。 先日の記事の修正ではウィンドウが分割されている場合にアクティブセルが反映されない。 SelectionRecordクラスのfield_1_paneメンバは、そのレコードがどのペイン(分割されたウィンドウ)に属するのか示すらしい。 よって常に3では意味が…

poi。HSSFCell#setAsActiveCellの問題。

poiを使用していて、HSSFCell#setAsActiveCell()が効かないのに気がついた。 ググってみると動かないという書き込みがいくつかあって、本家にもバグ報告がされてるんだかされてないんだか・・・ poiのバージョンは3.8。 excelファイルは古い形式(拡張子がxls…

InputStreamReaderEx

標準のInputStreamReaderは内部的にBufferedReaderを使っていて、readメソッドが実際に何バイト読んだのかわからないので、それがわかるものを作ってみた。 public class InputStreamReaderEx extends Reader { private InputStream stream; private Charset…

和暦

気になってちょっと試してみた。 Calendar c1 = Calendar.getInstance(new Locale("ja", "JP", "JP")); Calendar c2 = Calendar.getInstance(); SimpleDateFormat f1 = new SimpleDateFormat("GGGG yyyy/MM/dd", new Locale("ja", "JP", "JP")); SimpleDateF…

log4jとイベントログ その2

以前log4jのNTEventLogAppenderよりlog4jnaを使うのがいいと書いた。 ところがその後そうでもないことが判明。 dllを準備しなくていいのでNTEventLogAppendarより簡単だと思っていたのだが、dllなしでwindows依存の処理はどうしているのか気になっていた。 …

tomcat、log4j、エラー

tomcatのシャットダウン時に下記のようなエラーログが出る。 log4j:ERROR LogMananger.repositorySelector was null likely due to error in class reloading, using NOPLoggerRepository. ぐぐってみても解決策は良くわからない。 どうやらtomcatの6以降とl…

log4jとイベントログ

log4jでWindowsのイベントログに出力するNTEventLogAppenderは良く知られていることだと思う。 知ってるだけで使ったことは無かったので、さてWindowsネイティブな部分はどうなってるのかいなと思ったら、System32ディレクトリにdllを一つ置くだけで使える。…

BeanNameAutoProxyCreatorとシングルトン

今までspringを使ったことが無かったのでいろいろいじってみる。 BeanNameAutoProxyCreatorというクラスでログ出力やらパフォーマンス測定やらトランザクション管理やらAOP的なことができるので便利なのだが、springの中身を知りたくてステップ実行していて…

axis2のセキュリティポリシー

特に必要性はないのだがふと気になってセキュリティマネージャを有効にしてaxis2のサービスを動かしてみた。 まあSecurityException出まくりで動かないこと(笑) 一つ一つSecurityExceptionを解決しながらとりあえず動くところまでやってみたところ、axis2の…

axis2でのログ設定

axis2でコンテナとサービスのログ設定を完全に切り離そうとしてハマった。 ※log4jに起因するものなので他のログ実装ではあてはまらないかもしれない。 最初は単にEnableChildFirstClassLoadingパラメータを有効にして必要なjarをアーカイブに入れればできる…

axis2でのサービスdeploy

どこのサイトを見てもaarファイルにアーカイブしてservicesディレクトリに置くように書かれているが、アーカイブしなくてもdeployできることに気がついた。 servicesディレクトリの中にサブディレクトリを作ってその中にアーカイブに入れるファイルをすべて…

axis2でのサービスの設定ファイル

axis2でサービスをdeployする時は関連ファイルをすべてまとめたzipファイルをaarという拡張子にしてコンテナのWEB-INF/servicesディレクトリに置く。 まあ至極簡単でいいのだが、サービス独自の設定ファイルをどこに置くかが問題になる。 aarファイルに入れ…

finalizeパターン

というものがあるのかどうか知らないが、主にjavaのvm管轄外リソースの解放の仕方。 public class ResourceClass { private Object resource; public getResource() { if (resource == null) { resource = createResource(); } return resource; } public vo…

Mapもろもろ

ここ数日WeakHashMapやらLinkedHashMapやらを使ってツールを作っている。 rt.jar内のソースも見ながら四苦八苦。 その中でふと思ったのだが、なんでここらへんのクラスはjava.ioパッケージ内のクラスみたいにデコレーターパターン?になっていないんだろか?…

・・・

atmarkitのサイトでこんな記事が公開されている。 Android Tips(3):ダイアログを使用する - MONOist(モノイスト) こういう記事が初心者プログラマーをダメな道に導いてしまうのではなかろうか。 ダイアログはshowメソッドで表示するものではない。 show…

WSDL2Java

WSDL2Javaで自動生成されるコードの変更方法を調べてみた。 ちなみにadb用の場合。 jibxとかは使ってないので知らない。 生成されるコードの元になっているテンプレートはaxis2-adb-codegen-1.6.1.jarに入っているorg.apache.axis2.schema.template.ADBBean…

activation.jar

webサービスから画像データを戻そうとしてはまった。 wsdlで型をbase64binaryにすればいいらしいことはわかった。 こうするとbeanの型がjavax.activation.DataHandlerという型になる。 しかしjava6では問題ないのにjava5ではシリアライズできなくてエラーに…

要素の順番

wsdlで使われる2種類の要素、sequenceとall。 complexType要素の子要素となる。 今まで気にしたことがなかったが、今日初めて意味を知った。 sequenceは子要素がwsdlに記述されている順番に並ぶことを要求する。 allはそれが順不同でもかまわない。 axis2の…

・・・

仕事で客先の独自フレームワークを使うことになった。 ところがデータベースまわりの機能はほとんど無い。 close忘れ防止のためのラッパークラスがあるくらい。 このラッパークラスはjdbcを継承や実装したりしてるわけではないので巷にあるORマッパーやら何…

axis2のnull処理その2

先日の記事にはこう書いた。 「ちなみにセッターが呼ばれていて値がnullであればnil属性付きのタグが出力される。」 ところがその後会社でテストした時のコードでは違っていて、セッターが呼ばれていても値がnullであればタグが出力されないようになっていた…

axis2のnull処理

家でaxis2のサンプルを1から作っていて気になった。 beanのメンバがnullだった時のシリアライズとデシリアライズに齟齬があるような気がする。 シリアライズ メンバがnullであろうがなかろうがセッターが呼ばれていなければタグが出力されない。 まあセッタ…

クラスパスの設定

クライアントとしてのaxis2のモジュール展開処理について調べていた。 参考にしたサイトではシステムプロパティにリポジトリのパスを指定しろとあったのでその通りにしていたが、ステップ実行しているとどうやらクラスパスに指定したものも展開されるらしい…

axis2、ログ

再び仕事でaxis2をさわる。 書きたい点はいろいろあれど今回はログ出力について。 wsdl2javaコマンドでコードを自動生成するとサービスアーカイブを生成するためのbuild.xmlも生成されるが、これを実行してもなぜかソースフォルダにあるlog4j.propertiesがア…

MessageFormatの罠

MessageFormat.format("{0}", 1000)は1000になると思ってたら1,000になるのね・・・ よくよく見るとjavadocのサンプルにもそれらしい記述があるんだけど気付かなかった。 書式化したくなかったので{0,number,0.#}とかしてみた。