CATEGORY

実装技術

mavenマルチモジュールプロジェクトの構成例

システム開発でよく使用するmavenマルチモジュールプロジェクトの構成サンプルを説明します。 構成方針 複数のサブシステムをもつシステム開発を想定しています。システム名はzzz、サブシステムはf10, f20等のサブシステムIDが割り当てられているものとして、各種のネーミングを決定しています。 このシステムでは、DB操作にはmybatisを使用する想定です。各テーブルに対する基本操作を行うためのm […]

Java正規表現によるパラメータ置換

mybatis-generatorが生成するクエリカスタマイズのために、生成されたクエリ上のパラメータを置換する方法を調べたので記載しておきます。 サンプルプログラム Java言語の場合、標準ライブラリのPatternクラスで正規表現パターンを作成し、Matcherで検索や置換が行えます。該当箇所を纏めて置換する場合はMatcher#replaceAll()が手っ取り早いが、個々に条件判断して置換 […]

Apache FTPClientでのコマンドのトレース

Apache FTPClientを使って、JavaアプリケーションからFTP操作が可能となります。 この際、FTPクライアントとFTPサーバ間との通信内容をログに出力する方法を説明します。 概要 Apache FTPClientは、Apache Commons Netライブラリの一部です。 commons-net(3.6版)のjavadocはこちらをご覧ください。 動作確認や単体試験時では、開発環 […]

slf4jとlog4j2を使たデバッグログの出力方法

はじめに Webアプリやスタンドアロンアプリの開発でデバッグログやトレースログを出したい場合があります。 とりあえず、ロガーのログレベルをdebugやtraceに下げればいいや、と設定してもログが出力されない場合があります。 ここでは、log4j2を例として、ログライブラリを概説し、デバッグやトレースログを出力するための方法について説明します。log4j2以外のログライブラリでも、同様の仕組みにな […]

Javaによるzipファイルの安全な解凍方法

以前、業務アプリ(Java)でzipファイルの操作が必要となったため、Javaにおけるzip圧縮解凍について調査しました。また、zip4jを使った圧縮・解凍についても説明しました。 ここでは、もう少し業務使用を考慮した、安全なzipファイル解凍について説明します。 安全なzipファイル解凍方法 ここで説明するサンプルは、Webアプリ上やバックエンドサーバ上で動作するアプリで使用すること前提とします […]

Javaでのパスワード付きzipファイルの圧縮/解凍方法(ZipCrypto/AES)

先日、JavaでのZIP暗号化の考察という記事を書きましたが、zip4jのメンテナンスが再開されており、バージョン2系が公開されていましたので、これを使って通常のzip圧縮/解凍、パスワード付きzip圧縮/解凍(ZipCrypto, AES256)のサンプルを作成してみました。 概要 zip4jはSrikanth Reddy Lingalaさんが開発しましたが2013年にメンテナンスが止まっていま […]

JavaにおけるFileとPathを使ったパス操作

サーバ側でのzipファイルの解凍等の際に、意図しないディレクトリやファイル(ディレクトリトラバーサル攻撃)へのアクセスを防ぐための検証として、絶対パスを正規化したい場合がある。 Fileクラスを使ったサンプルはあるが、Pathを使ったサンプルがなかったため、検証してみた。 検証結果 結果として次の通りでした。 検証で使ったコードは次節を参照のこと。 Fileクラスを使う場合、File#getCan […]

JavaでのZIP暗号化の考察

法務系業務を行うシステムを設計するにあたり、次のような要件がありました。 CSVファイルの暗号化方式として、当初からパスワード付きZIPファイルの使用を検討していたため、ZIP圧縮を使用する前提で調査しました。Excelの暗号化については、別の記事で説明します。 当該システムはJavaEEで構築する前提であったため、Java前提の調査となります。 機密情報を記載したCSVファイルまたはExcelフ […]

Apache HttpClientの通信内容をダンプ

アプリやミドルウェの動作の正常性確認や問題発生時の問題切り分けのために、HTTPリクエストやレスポンスのヘッダやボディを確認したい場合がある。Java系のアプリではApacheのHttpClientが使用されることが多いため、ここではApacheのHttpClientによる通信をダンプ(ロギング)する方法を説明します。 (ここではApache HttpClient 4.5を前提として説明します。H […]

JSFラジオボタン・チェックボックスとbootstrap

boostrapでラジオボタンやチェックボックスを使用する場合、div, input, label要素にbootstrapのCSSクラスを指定する必要がある。 JSFでラジオボタンを使用する場合、selectOneRadio, selectBooleanCheckbox, selectManyCheckbox等を使用するが、これらのJSF要素が出力するHTML要素のコントロールができず、上記のよう […]