JettyでFreeMarkerを使うとテンプレートが見つけられなくなる

Free​Marker テンプレートエンジンを使った Web アプリケーションを Jetty アプリケーションサーバーで数日稼働させていると以下の例外が発生することがありました。

freemarker​.template​.Template​Not​Found​Exception: Template not found for name "index​.ftl".

なぜかテンプレート ファイルが見つけられなくなってしまうのです。その原因は Jetty Windows にありました。

Java 12に対応したexewrap 1.4リリース

Java 12 に対応した exewrap 1.4 をリリースしました。

exewrap 1.3.1 以前のバージョンで作成した実行ファイルを Java 12 で実行するとコンソールに以下の警告メッセージが表示されます。メッセージが表示されるだけでアプリケーションの動作自体には問題ありません

Open​JDK 64-Bit Server VM warning: Archived non-system classes are disabled because the java​.system​.class​.loader property is specified (value = "Loader"). To use archived non-system classes, this property must not be set

この問題が exewrap 1.4 で改善しています。exewrap 1.4 で作成した実行ファイルであれば Java 12 実行環境でも上記のメッセージは表示されなくなります。

ApacheでのLet's Encrypt運用が簡単になりました
2019-07-10 Web Windows

Let’s Encrypt は無料でサーバー証明書を発行してくれる認証局です。2016 年のサービス開始以来 急速に普及しています。

Let’s Encrypt の証明書発行には ACME プロトコルに対応したクライアントソフトウェアを使います。主要な ACME クライアントソフトウェアは ACME Client Implementations で紹介されています。Let’s Encrypt のサイトでは certbot というツールが推奨されているのですが このツールは Windows には対応していません。Windows 環境では win-acme 旧名 letsencrypt-win-simple というツールが良く使われているようです。

私も これまで win-acme を使ってきたのですが 先日 ふとしたことで mod_md という Apache モジュールの存在を知りました。mod_md win-acme よりもずっと簡単に使えます。ただし mod_md Apache モジュールであるため Apache 環境でしか使えません。IIS など他のウェブサーバーに Let’s Encrypt を導入するのであれば 引き続き win-acme が有力な選択肢になります。

Apache 2.4.30 以降で利用可能になった mod_md モジュールを使って Let’s Encrypt 証明書を導入する手順を紹介していきます。

JavaでBrotli(ブロートリ)を使う

Java Brotli 圧縮する方法を紹介します。

Brotli ブロートリ 2015 年に Google が発表した圧縮アルゴリズムおよびその実装です。zlib よりも 15~25%くらい圧縮率が高くなります。LZMA と比べてもわずかに圧縮率が高いです。

Brotli の展開には専用のデコーダーが必要になりますが すでに Chrome Firefox Edge Safari Opera など主要なブラウザーが Brotli をサポートしています。

WindowsにSubversion 1.12サーバーを構築する

過去に Windows 用の Subversion 1.9 サーバー構築手順を紹介したとことがあります。その後 Apache Subversion のバイナリ配布形態に変化があり 以前の記事の手順通りでは Subversion 環境構築できなくなってしまいました。

本稿は Subversion サーバー構築手順のアップデート記事 2019 年版 です。Windows Subversion 1.12 サーバーを構築する手順を解説します。今回は手軽に環境構築できるオールインワン パッケージも用意しました。

UWPアプリ仮想化レジストリ(registry.dat)の作り方

最近 Java でデスクトップ ブリッジ UWP アプリの開発に取り組んでいます。その中で 既定では存在しないレジストリのいくつかを読み取る必要が出てきました。既定では存在していないレジストリなので なんらかの方法で事前に書き込みをしておかなければなりません。

デスクトップ ブリッジでは権限があればレジストリへの書き込みもできるようですが できることなら権限を要求せずに解決したいところです。そこで デスクトップ ブリッジ UWP の仮想化されたレジストリ機能を使ってみることにしました。

デスクトップ・ブリッジを使ってJavaアプリをUWPアプリにしよう

Java アプリをデスクトップ ブリッジ UWP アプリとして.appx パッケージにまとめると Microsoft Store を通して Java アプリを配布できるようになります。

本記事では Desktop App Converter ではなく Make​Appx コマンドを使って Java アプリを UWP アプリ パッケージ化する方法を解説します。

OpenJDKでJavaアプリ配布パッケージを作る

Java 7 以降の Oracle JDK には javapackager という Java アプリケーション配布パッケージを作成するツールが付属していたのですが 残念なことに Open​JDK には javapackager は含まれていません。

今回は javapackager を使わずに Open​JDK Java アプリケーション配布パッケージを作成する方法を紹介します。作成するパッケージには Java アプリの実行に必要な JRE Java Runtime Environment が含まれるようにして 配布パッケージを展開するだけで Java アプリを実行できるようにします。