ぺーぺーSEのブログ

備忘録・メモ用サイト。

Java

Flight Recorder、Mission Control、Native Memory Tracking

Oracle (HotSpot) JDK7 update40以降で「Flight Recorder」、「Mission Control」、「Native Memory Tracking」がHotSpotに同梱されている。 これらは元々JRockitの機能だったが、HotSpotとJRockitの統合(HotRockit)に伴いHotSpotへ移植された。 Flight Re…

JUnitで試験するときに使うMockライブラリ

JUnitを使用した単体試験のときに使えるMockについて。(なんか疲れたからまとめっぷりは中途) 以下みたいなのがある。 EasyMock インスタンスのMockがほしいときに使うとよい ネストしたクラスをMock化したいときはセッターとかDIとか使う Mockito EasyMoc…

JBossEAP6とJerseyの組合せでjar内のJAX-RSリソースが見えない件

そもそもなんでJBossにJerseyなんだ?なんて聞かないで。大人の事情なんです。 問題 warファイルをJBossEAPにデプロイしたんだが、WEB-INF/lib配下のjarファイルに入ってるエンティティプロバイダクラス(@Providerついてるクラス)が有効になんねぇ。。。 T…

JSF(JavaServer Faces)の基本

JSF2.2の基本をまとめる。(2.2感は無いかも) JSF2.2はJavaEE7のコンポーネントベースのMVCフレームワーク。 コンポーネントベースは、「リクエストの際URIを意識せずサーバサイドのロジックを直接呼ぶ」って感じかな。 対してStrutsのようなリクエスト駆動…

Spring 3でHello World REST (Jersey)+HTTPメソッドの独自定義

Spring3+Jerseyにて独自のHTTPメソッドを追加してみる。 下記のコマンドを実行。(Maven 3を使用) mvn archetype:generate -DgroupId=study -DartifactId=Spring3HelloWorldJersey -DarchetypeArtifactId=maven-archetype-webapp -Dversion=1.0.0 pom.xml…

JSON、Map変換

JSON Map 間の相互変換の例。 JSON項目の順序を保持したいのでLinkedHashMapでサンプルを作った。 package org.sample; import java.util.LinkedHashMap; import java.util.Map; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson…

SpringMVCのアノテーションと非同期実行と試験

SpringMVCのアノテーション @Controller MVCのコントローラとなるクラスに付与する @RestController Restfulサービスを構築する際のMVCコントローラクラスに付与する @Controllerと@ResponseBodyを付与したサイト同等 @RequestMapping 特定の「URI(value)…

Spring3.1からの新機能

Spring3.1からの新機能 Bean定義のプロファイル機能 組込みデータベースサポート Object/XMLマッピング連携 Cache Abstraction機能 非同期実行/スケジューリング実行 Bean定義のプロファイル機能Bean定義をプロファイルという形でグループ化、有効範囲を指…

SpringMVCでファイルダウンロード/zip圧縮ダウンロード

SpringMVCでファイルダウンロード、zip圧縮ファイルダウンロードのサンプル。 サンプルの内容 「http://[FQDN]:8080/spring3-mvc-down/download」 クライアントからのアクセスに対して、サーバローカルのファイル(C:\tmp\hoge1.csv)をInputStreamで読み込…

SpringMVCサンプルプロジェクト

Spring3でSpringMVCをやってみる。Eclipseで「spring3-mvc-smpl」というプロジェクトで作る。 Maven2を利用。(なんで3じゃないねんって突っ込みは無しで。)「Home」ページから名前を入力して、「Menu」ページで、こんにちはって言ってくれるサンプル。POM…

Java6ネットワークプロパティ(HotSpot)

Javaプロパティ java.net.preferIPv4Stack (default: false) IPv6を利用可能なオペレーティングシステムでは、基本となるネイティブソケットはIPv6ソケット。 このため、Javaアプリケーションは、IPv4ホストとIPv6ホストの両方に接続したり、その両方のホス…

Springによるトランザクション管理

Springによるトランザクション管理には以下の種類がある。 宣言的トランザクション管理 Bean定義ベース アノテーションベース プログラミングによるトランザクション管理 Bean定義ベース を使用して下記のようにBean定義する。 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${db.driver}" /> </property></bean>

Spring AOP

AOPの簡易理解は「元のソースコードに変更を加えずに新たな処理を追加する(挟み込む)こと」でよいか。 ここではSpring2.0以降のことを書いている(つもり)。 言葉の定義 Aspect 横断的な関心事が持つ振る舞い(処理のこと)と、いつ振る舞いを適用するか…

Javaで文字コードを扱ってみる

自分なりの簡単な解釈とまとめ。 文字コードは以下の2つにわけて理解するとよい気がする。 文字集合 文字には集合がある。例えば、英語はアルファベット、日本語はひらがな・カタカナ・漢字、ドイツ語はなんだろう。。。など。 バイト表現とか関係なく、文…

SimpleDateFormatではなくFastDateFormatを使う

java.text.SimpleDateFormatには下記の問題がある。 スレッドアンセーフ SimpleDateFormat#parse、SimpleDateFormat#formatにてフィールドの値を変更している処理がある 遅い らしい 代替のクラスとして「Commons Lang」に「FastDateFormat」があり、これは…

ImageMagickをLinux、Tomcat上のJavaアプリケーションから使用するためには

ImageMagickとはよくわからないが画像編集をしてくれるソフトウェア、ライブラリ。 環境構築にはまりまくったのでメモ。 Linuxに「libjpeg-devel」をインストール これを入れておかないとImageMagickからJPEG画像を扱うことができない 赤帽系なら「yum insta…

JavaアプリHotトレーサー「BTrace」

BTraceは起動中のJavaアプリケーションのトレース情報を取得できる便利なツール。公式: http://kenai.com/projects/btrace/Developer's Guide: http://kenai.com/projects/btrace/pages/DeveloperGuide 使い方 上記から入手したbin内にbtraceというシェル…

JMXによる動的なlog4j設定の変更

log4jの設定をアプリケーションを停止せずにJMXによって変更する。 ポイントはlog4jの「org.apache.log4j.jmx」パッケージ。 独自実装しなくてもlog4jで予め用意されている。例のごとくMavenベースでサンプルプロジェクトを作る。 mvn archetype:generate -D…

JMXの使い方

下記のオプションを追記してJavaアプリケーションを実行する。 -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=[ポート番号] -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmx.authenticate=false意味はだい…

Javaでシグナルを捕まえる方法

Linuxのkillコマンドなどで投げるシグナルをJavaで捕まえる方法について。 下記、シグナルを捕まえたらlog4jのログレベルを変更するコードを書いてみた。 package jp.sample.signal.log4j.main; import org.apache.commons.logging.Log; import org.apache.c…

文字列の結合(StringBuilder、StringBuffer)

String文字列の結合する際、下記のような書き方をするといちいちStringオブジェクトを作成してしまいリソースを食ってしまう。 String conbStr= ""; for (String str: strArray) { conbStr += str + " "; } Stringは不変のオブジェクトなので3行目で「" "」…

Hibernateを使ってみる(JPAを使って)

データベース製品の多様性を隠ぺいするためにJDBCが考えられたように、あるいはMOM製品の多様性を隠ぺいするためにJMSというAPIが考えらた。 JPAはO/Rマッパーの違いを隠ぺいするためのAPIである。プロジェクト作成に下記を実行。 mvn archetype:generate -D…

Hibernateを使ってみる(Annotationを使って)

プロジェクト作成に下記を実行。 mvn archetype:generate -DgroupId=study -DartifactId=HibernateAnnotationSample -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=1.0.0POMを修正

Hibernateを使ってみる

プロジェクト作成に下記を実行。 mvn archetype:generate -DgroupId=study -DartifactId=HibernateBasicSample -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=1.0.0POMを修正

Java、Springのアノテーションめも

SpringアノテーションをJavaと並べてまとめ クラス対象のアノテーション Springアノテーション @Component SpringDIコンテナにbeanとして登録したいクラスへ付与する bean定義ファイル(.xml)のタグと同じ働き bean名をつけたいときは下記のようにする @Com…

Javaのデフォルト起動オプション(_JAVA_OPTIONS)の設定

知らなかったのだが、システム環境変数に「_JAVA_OPTIONS」で登録しておくとJavaが勝手に起動オプションに追加してくれるようだ。 WindowsでもLinuxでも。 例えばLinuxだと下記のようにシェルか何かに書いておけばいい。 export _JAVA_OPTIONS="-Dsun.net.in…

log4jメモ

log4jcommons-loggingとlog4jを使用する場合は下記の設定ファイルをクラスパス配下に置いておく。 ■commons-logging.properties org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLoggerlog4jの設定は「log4j.properties」に行う。 ※も…

Javaの入出力ストリーム

入出力ストリームに関するjava.ioパッケージについて。 詳細は下記のAPI仕様書。 http://java.sun.com/javase/ja/6/docs/ja/api/java/io/package-summary.html バイトストリーム バイト入力ストリーム(抽象クラスjava.io.InputStreamのサブクラス) FileInp…

JavaやSpringのプロパティファイルの読み込み

Java標準のプロパティファイルの読み込み 参考 http://www.mlab.im.dendai.ac.jp/~yamada/java/properties/ Springのプロパティファイルの読み込み ■bean定義ファイル内の「${key}」個所をプロパティファイルから参照する方法 「key=value」形式で書かれたプ…

Javaのマルチスレッドプログラミング(java.util.concurrent)

java.util.concurrentを使用したマルチスレッドプログラミング ExecutorServiceインタフェース ExecutorServiceインタフェースはExecutorインタフェースを拡張し、状態追跡やタスク処理の中断などを可能にしたインタフェース。 ※ExecutorServiceインタフェー…