Payara(Glassfish)のライブラリフォルダとクラスローダの関係

要約 各クラスローダの役割 Bootstrap class loader Extension class loader Public API class loader Common class loader Connector class loader LifeCycleModule class loader Applib class loader Archive class loader add-library Logback 利用時の注…

JCenter は2022年2月で終了するので Gradle プロジェクトは早めの対応を!

JCenter の終了 JFrog の以下の発表によると、JCenter は 2022年2月1日 で利用できなくなるとのことです。 jfrog.com 当初は 2021年5月1日 で終了でしたが、2022年2月1日 まで延期されました。 Gradle プロジェクトでは、Init プラグインによりデフォルトで …

Rust の簡単な CLI用テンプレート

シンプルなケース StructOpt 利用 シンプルなケース 標準ライブラリのみのシンプルなケース。 use std::env; use std::process; use std::error::Error; use std::path::PathBuf; fn main() { let opt = Opt::from_args().unwrap_or_else(|err| { eprintln!(…

POI による大きなExcelファイルの扱い

Usermodel 低メモリフットプリントなAPI Event API Streaming Usermodel API SAX Event API Usermodel Usermodel はPOIが提供する一般的で高レベルなAPIです。 以下のようにスプレッドシートのメンタルモデルとマッチした操作が可能です。 Workbook workbook…

Windows 環境への Rust インストール

インストーラの入手 Visual Studio C++ Build tools の導入 Rustup のインストール 確認 インストーラの入手 Windows 環境に Rust をインストールするには WSL を使う方法もあるが、ここではネイティブなインストールを行います。 といっても、基本的にイン…

AWS Lake Formation で生成される Glue ジョブ

AWS

Lake Formation とは ブループリント Glue ワークフロー Glue クローラ事前ジョブ Glue クローラ事後ジョブ ETL ジョブ ETL 事後ジョブ まとめ Lake Formation とは AWS の提供するデータレイク構築のためのマネージドサービスです。 Glue のクローラを利用…

PuTTY で EC2 へ SSH 接続

AWS

はじめに PuTTYgen でプライベートキーの変換 接続 Tera Term の場合 はじめに PuTTY から EC2 接続は、いつも忘れてしまう。 PuTTYgen でプライベートキーの変換 PuTTY はプライベートキー形式をネイティブにサポートしていないため、EC2 接続用のプライベ…

h2database に見る Assertion スイッチによる初期化

h2database のソース見てたら以下のようなコードがあった Assertion (表明) Assertion スイッチによる初期化 h2database のソース見てたら以下のようなコードがあった private static final boolean ASSERT; static { boolean a = false; // Intentional sid…

Windows server 2016 の日本語化手順

簡易手順 画面キャプチャで見る Settings から Time & Language を選択 Region & Language から Add a language を選択 Add a language のメニューから 日本語 を選択 Set as default で最上部に移動させ、Options を選択 Download language pack でインスト…

JSF Bean Validation のエラー表示を Bootstrap で

はじめに 入力フォーム BeanValidation はじめに JSF における Bean Validation でのエラー表示についての小ネタです。。 入力フォーム 以下のようなテキスト入力を考えます。 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:jsf="http://xmlns.jcp.org/jsf"> ... <form jsf:id="form"> <div class="mb-3"> </div></form></html>

JSF HTML5-Friendly Markup における selectManyCheckbox の扱い方

はじめに selectManyCheckbox タグ selectBooleanCheckbox タグで代替する HTML5-Friendly Markup はじめに JSF の <h:selectManyCheckbox> タグは使わずに、<h:selectBooleanCheckbox> タグで代替しましょう という話です。 selectManyCheckbox タグ JSF の HTML BASIC タグである selectManyCheckbox のレ</h:selectbooleancheckbox></h:selectmanycheckbox>…

JSF Facelet タグライブラリのXMLネームスペースについて

はじめに XMLネームスペース 定義ファイルの所在 Facelet タグライブラリの定義 DOCTYPE の設定 はじめに JSF2.2 (JSR-344 2013年) から Facelet タグライブラリのXMLネームスペースが変更になりました。となりました。Sun 時代のネームスペースは下位互換の…

Logback でログが出力されなくなる時の対処法

結論 Logback の LogbackServletContainerInitializer 自動登録の無効化 ロガーの終了 結論 Logback は自動的に ServletContextListener を登録しており、サーブレットのシャットダウンやアンデプロイにより contextDestroyed() イベントでロガーを stop す…

JPA2.2 における persistence.xml の定義方法まとめ

はじめに persistence.xml persistence-unit provider jta-data-source non-jta-data-source mapping-file jar-file class exclude-unlisted-classes shared-cache-mode validation-mode properties タイムアウト系 property validation property schema-gen…

Gradle で始める Payara 5 〜 CDI・JPA 〜

はじめに データソースの登録 CDI の有効化 JPA の導入 Entity の作成 リポジトリの作成 サービスの作成 リソースの作成 アプリケーションの実行 まとめ はじめに 前回作成した、 blog1.mammb.com に続き、データベース処理を追加してみましょう。 データソ…

Gradle で始める Payara 5

はじめに プロジェクトの作成 Payara を組み込みモードで動かす JUL(Java Util Logger) から SLF4J への変更 buildSrc の追加 war モジュールの作成 Hello サーブレット アプリケーションのデプロイ Hello JAX-RS まとめ はじめに いまさら何故? という気は…

InaccessibleObjectException の発生原因とその対処方

リフレクションで発生する InaccessibleObjectException リフレクションを許可する リフレクションで発生する InaccessibleObjectException Java9 で導入された JavaPlatform Module System によりリフレクションを利用するフレームワークで以下のような Ina…

Kotlin製Webアプリケーションフレームワーク Ktor の使い方4 〜ExposedでDBアクセス〜

入力フォームを外部ファイルに抜き出す Exposed でデータベースアクセス データベース操作 データベース操作 実行 blog1.mammb.com の続きです。 入力フォームを外部ファイルに抜き出す 前回の続きから作業しますが、すこしゴチャゴチャしてきたので、入力フ…

Kotlin製Webアプリケーションフレームワーク Ktor の使い方3 〜リクエストパラメータとJSONレスポンス〜

リクエストパスとパラメータ 入力フォームを作成する POST リクエストを処理する JSON を返却する blog1.mammb.com の続きです。 リクエストパスとパラメータ 前回までの例では、Routing にて単純な GET リクエストを処理しました。 POST など他のメソッドを…

Kotlin製Webアプリケーションフレームワーク Ktor の使い方2 〜テンプレートエンジンとHTML DSL〜

FreeMarker で HTML を生成する 静的コンテンツを扱う HTML DSL blog1.mammb.com の続きです。 FreeMarker で HTML を生成する Ktor には、テンプレートエンジン Apache FreeMarker のサポートがあり、簡単に HTML ページを生成できます。 最初に、ktor-fr…

Kotlin製Webアプリケーションフレームワーク Ktor の使い方1 〜プロジェクト作成から Hello World 〜

Ktor とは プロジェクト作成 Hello World Application オブジェクト アプリケーション設定値の抽出 Ktor とは Ktor は、Kotlin の Web アプリケーションフレームワークです。 Kotlin の本山である JetBrains 社により開発が続けられており、2018年末の v1.0 …

macOS で発生する「開発元を検証できないため開けません。」

Gradle のツールチェーンサポートで古いJDKを指定したら実行できなかった。 Kotlin DSL だと以下のような指定。 java { toolchain { languageVersion.set(JavaLanguageVersion.of(9)) } } 「開発元を検証できないため開けません。」となり「キャンセル」しか…

Gradle Groovy DSL から Kotlin DSL への乗り換え方

はじめに スクリプトファイルの命名 Kotlin と Groovy の言語上の考慮事項 Gradle init によるプロジェクト生成 プラグインの適用 プラグインの設定 タスクの構成 タスクの作成 依存の指定 よくある設定 はじめに Gradle 5.0 よりGradle Kotlin DSL が提供さ…

Gradle 6.7 で追加された Toolchain サポート

JVM プロジェクトのツールチェーンサポート ツールチェーン の利用 ツールチェーンのカスタマイズ まとめ JVM プロジェクトのツールチェーンサポート Gradle 6.7 にて New JVM ecosystem features として JVM プロジェクトのツールチェーンサポートが追加さ…

Gradle 6.7 で変更になった gradle init タスクのプロジェクトレイアウトとその使い方

はじめに 旧来のプロジェクト構成 新しいプロジェクト構成 application and library projects buildSrc はじめに 組み込みのタスク gradle init を使うことで新しい Gradle プロジェクトを簡単に作成できます。 Gradle 6.7 では、新しい推奨構成でプロジェク…

Technology Radar Volume 23 要約

はじめに Techniques 1. dependency drift fitness function 2. Run cost as architecture fitness function 3. security policy as code 4. Tailored service templates Platforms Tools 42. Airflow 43. Bitrise 44. Dependabot 45. Helm 46. Trivy Langua…

Java で touch する

ファイルのタイムスタンプを変えるには Files.setLastModifiedTime() が使える。 public static void touch(final Path path) throws IOException { if (Files.exists(path)) { Files.setLastModifiedTime(path, FileTime.from(Instant.now())); } else { Fi…

Docker でRDB環境構築盛り合わせ

 はじめに PostgreSQL PostgreSQL への接続 ロールの作成 データベースの作成 テーブルの作成と操作 オブジェクトの削除 psql の代表的なメタコマンド MariaDB MariaDB への接続 ユーザの作成 データベースの作成 テーブルの作成と操作 オブジェクトの削除 …

Java によるネットワークプログラミングの基礎知識

 はじめに ソケット ソケットによるサーバ実装 スレッドプールを利用したサーバ実装 ブロッキングI/Oの課題 ノンブロッキングI/O I/O多重化(multiplexing) バッファ操作 I/O多重化を使ったサーバ実装 非同期チャネル NIO2 によるエコーサーバ まとめ はじめ…

実行時の Java バージョン取得方法

Java8 以前 システムプロパティから java.version のキーで取得できます。 String version = System.getProperty("java.version"); Java9からは表記が変わるので注意が必要です。 Java8 まで:1.6.0_23、1.7.0、1.7.0_80、1.8.0_211 Java9 から:9.0.1、11.0…