ぺーぺーSEのブログ

備忘録・メモ用サイト。

Java

Spring Security / Spring Session入門

Spring Securityは認証・認可の機能を持つSpringのライブラリ。 Spring Sessionを用いて Redis にセッションを格納する設定も試してみる。 ここでは、簡単なログイン画面でログインする機能を作成する。 以下の構成で記載する。 Java Configで設定する方法 S…

Spring BootでJUnitテスト

Spring Bootのテストについて書く。 spring-boot-starter-testを使用するとコントローラのJUnitテストも可能になる。 テストやコードインスペクションレポートのMaven設定は以下を参照。 blog.pepese.com テスト対象アプリ 以下の記事で紹介した入門アプリを…

Spring MVC入門

Spring MVCで最小アプリケーションが動くまでの設定についてまとめる。 以下の2種類で同じアプリを実装する。 Java Based Configuration XML Based Configuration 上記は両方HTTP GETするとHelloが返ってくる簡単たRESTアプリ。 Spring BOM 2.0.8.RELEASEで…

Spring Boot入門

Spring Bootで最小アプリケーションが動くまでの設定についてまとめる。 以下の2種類について記載する。 Spring Bootで実行可能jarの作成 Spring BootでAPサーバにデプロイ可能なwarの作成 上記は両方HTTP GETするとHelloが返ってくる簡単たRESTアプリ。 Sp…

Spring MVCでJUnitテスト

Spring MVCのテストについて書く。 spring-testを使用するとコントローラのJUnitテストも可能になる。 テストやコードインスペクションレポートのMaven設定は以下を参照。 blog.pepese.com テスト対象アプリ 以下の記事で紹介した入門アプリをテスト対象とす…

Macで開発環境を作る

本記事は移転しました。 約3秒後にリダイレクトします。 リダイレクトしない場合はここをクリックしてください。 var link = document.getElementsByTagName("link")[0]; link.href = url; // リダイレクト setTimeout("redirect()", 3000); // 3 sec functi…

SpringでHello World(Java-based Configuration版)

SpringでHelloWorldを出力するプロジェクトの作成してみる。 なお、Spring Bootの機能およびXMLは使用せず、Java-based configurationを使用する。 XMLベースで作成する場合は以下。blog.pepese.com SPRING INITIALIZRで下記を指定して作成。 Maven Project …

SpringでHello World(XML版)

SpringでHelloWorldを出力するプロジェクトの作成してみる。 なお、Spring Bootの機能およびJava-based configurationは使用せず、XMLを使用する。 Java-based Configurationベースで作成する場合は以下。blog.pepese.com SPRING INITIALIZRで下記を指定して…

JavaVMのメモリ管理に関するまとめ(Javaヒープ、GC、ダンプ等)

本ブログはJava8(特にMetaspace)に対応していない。 下記にJava8以降に対応した記事を記載する(予定)。blog.pepese.com JavaVMのメモリ領域について JavaVMが管理するメモリ領域について 階層1 階層2 階層3 説明 Javaヒープ JavaVM上で起動するJavaプロ…

JavaVMのメモリ管理に関するまとめ(Java8版)

大変長らく放置していた下記サイトをJava8以降、つまりMetaspaceが導入されてからのJVM、HotRockitの情報へ書き直す。 blog.pepese.com 一気に書き直すのは大変なので、随時更新。するかもしれない。 HotRockitのメモリ領域について 領域 説明 Javaヒープ Ho…

SPRING INITIALIZRを使ってみる

「SPRING INITIALIZR」というSpringBootのひな形プロジェクトを作成するWebサービスを紹介する。 時は2016年、なんとSPRING INITIALIZRは2014年からあるらしい。 今まで知らず恥ずかしい。。。 使い方 SPRING INITIALIZRのページにアクセス 画面下部の「Don'…

Swagger入門

Swaggerとは SwaggerとはREST APIを記述する標準仕様。 MS、Google、IBMなどがRESTful APIの記述標準化を目指す「Open API Initiative」を立ち上げ、Swaggerベースで活動している。 SwaggerはSwagger / OpenAPI Spec 2.0に準拠したJSON・YAMLで記述する。 以…

英語サイトだけを検索する方法

とある理由で英語のサイトだけをググりたい場合の方法。 暫定対処 「http://www.google.com/intl/en/」へアクセスしてから検索する。 恒久対処 なにかを適当にググると検索結果が表示される。 その画面の左上の「歯車」のアイコンをクリックすると「言語 (La…

SpringBoot+Thymeleaf入門

SpringBootとThymeleafをさわってみた。 「SpringBootSample」というプロジェクトをGradleベースで作る。 ■環境 > gradle -v ------------------------------------------------------------ Gradle 2.3 --------------------------------------------------…

RESTful Web Service using SpringMVC事始め 〜bean定義ファイル編〜

RESTful Web Service using SpringMVC事始めでは「Java-Based Configuration」にしたが「XML-Based Configuration」バージョンにしてみる。Gradleベースでやる。環境は下記。 >gradle -v ------------------------------------------------------------ Grad…

WebLogic入門

WebLogic12cをさわってみた。 インストール ■インストール(GUI) 「> java -jar -wls_121200.jar」 あとはよしなに。 ■インストール(CUI) 環境変数の指定 Linux 「$ export JAVA_HOME=/home/myhome/myjavahome」 「$ export MW_HOME=/home/myhome/mywls/w…

Apacheで長いURLに対応する設定

Apache2.4 - Tomcat Connector - Tomcat8 構成。 Apache2.4の導入については下記参照。blog.pepese.com Tomcat Connectorの導入(mod_jk) mod_jkのビルドおよび設定。 cd /tmp wget http://ftp.jaist.ac.jp/pub/apache/tomcat/tomcat-connectors/jk/tomcat-…

JMXコマンドラインツール(jmxterm)

JMXでjavaプロセスにアクセスしたいけど、GUI環境無くてjconsole使えないってときに便利なOSSツール。■公式 http://wiki.cyclopsgroup.org/jmxterm/jarファイル形式のツールで対話式でMBeanにアクセスできる。 ■起動 C:\>java -jar jmxterm-1.0-alpha-4-uber…

JMeter覚書

JMeterの覚書。 JMeter2.12でやった。 入門内容については下記を参照。blog.pepese.com コマンドライン実行 JVMオプション等の設定 Master/Slave構成 正規表現による値の抽出 外部ファイル(CSV)の参照 結果のファイル(CSV)出力 コマンドライン実行 jmete…

JMeter入門

入手、起動は省略。 GUIモードで起動してからのお話。 ここではJMeter2.12を使用した。テスト計画とワークベンチ最初に起動すると左の方に「テスト計画」と「ワークベンチ」っていうのがある。 テスト計画 テストの実行指示を設定する。 開始ボタン(緑の右…

JMeterで電文をキャプチャする

JMeterにはプロキシサーバという機能があり、クライアントからのリクエスト送信をこのプロキシサーバを経由させることで電文をキャプチャできる。 ここではJMeter2.12を使用。 HTTPプロキシサーバの設定JMeterをGUIで起動して、「ワークベンチ」を右クリック…

Metaspace

■Metaspace 格納する情報 クラスやメソッドのメタ情報 ネイティブメモリ クラスローダー毎にもつ なので基本バラバラの非連続領域 ■Compressed Class Space 格納する情報 クラス情報に特化 Compressed Oops(圧縮OOP:Ordinary Object Pointer)を利用 64bit …

Spring Data JPA入門

下記記事の延長。blog.pepese.comPersonリソースをCRUDできるRestサービスを構築する。 ■build.gradle apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'tomcat' [compileJava, compileTestJava]*.options*.encoding = 'UTF-8' buildscript { r…

JPA2.1入門

JavaEE 7のJPA2.1をさわってみる。 事始めなので2.1新機能とかには全然ふれない。 用語とか Persistence Unit EntityManagerのインスタンスを生成するファクトリクラスを定義 EntityクラスのRDBにマッピングを設定する データベースへの接続用データソース設…

SQLとJavaのデータ型について

対応についてまとめとく。 O/Rマッパーを使用する際は、そちらの推奨型を優先で。 SQL型 Javaの型 備考 CHAR java.lang.String - VARCHAR2 java.lang.String - LONG java.lang.String データが大容量の場合にはCLOBに挿入すること。 NUMBER long 整数を格納…

Javaで簡易DBのDerbyを使う

RailsでSQLiteが勝手に出来てて動くのが羨ましくてJavaでも探してみた。 RDBMSインストールすんのめんどいし。結論としてDerbyとFlywayというのを使うことにした。 DerbyはRDBMSのインストール無しでJDBCドライバさえあればさくっと使えるRDB。 FlywayはJDBC…

RESTful Web Service using SpringMVC入門

SpringMVC使ってRestサーバ作ってみる。 覚えたてのGradleベースでやる。tanakakns.hatenablog.com 環境は下記。 >gradle -v ------------------------------------------------------------ Gradle 2.1 --------------------------------------------------…

Jersey-Spring3でHello World

Jersey2.8とSpring3でサンプルアプリを作成してみる。 Jersey2.8はJavaEE7のJAX-RS2.0準拠。下記コマンドでプロジェクト作成。 mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo.archetypes -DarchetypeArtifactId=webapp-javaee7 -DarchetypeV…

Jacksonが/(スラッシュ)をエスケープしてくれない件

RFC的にはJSON中の文字列で「/」(スラッシュ)を返却する際にはエスケープ「\/」しないといけないけど、Jacksonはやってくれなかった。 実際にはjersey-json-1.17.1を使用しているときにはまった。 jersey-json-1.17.1を使用するとJSON-オブジェクト変換し…

Java屋のためのC入門

現在Java屋(って理由だけで上記のタイトル)。 大昔にCやってたけど、なんか復習してみることにした。 環境構築 Windowで。Macとかもってない。Linuxは、、、環境作んのめんどい。Cコンパイラは毎度お馴染みGCC。 Windows環境だとGDBっていうデバッガが含ま…

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…