-
Notifications
You must be signed in to change notification settings - Fork 9
Customizing the jdk
JVMのランタイムで機能を利用するために、ファイルをJDKを使ってまとめておく必要があるケースがいくつかあります。例えば、より強い暗号ライブラリを利用するために、無制限強化を含んだJavaの暗号化拡張(JCE)をJDKに追加することはよくあります。こういう場合には、Herokuは.jdk-overlay
フォルダの中の指定されたファイルを、JDKのディレクトリ構造内にコピーします。
JVMの中に追加のファイルを含めたい場合は、以下のインストラクションに従ってください :
- Herokuで走っているJavaアプリケーションがあること。
もしsystem.properties
がファイルがなければ、これを作成し、バージョンを指定して、Gitにコミットしてください。バージョンの1.6, 1.7, そして1.8がサポートされています。
:::term
$ echo "java.runtime.version=1.7" > system.properties
$ git add system.properties
$ git commit -m "JDK 7"
あなたのアプリケーションのルートディレクトリに、.jdk-overlay
フォルダを作成します。
:::term
$ mkdir .jdk-overlay
$ ls -la
total 24
drwxr-xr-x 9 user staff 306 Oct 16 14:43 .
drwxr-xr-x 202 user staff 6868 Oct 16 14:40 ..
drwxr-xr-x 13 user staff 442 Oct 16 15:06 .git
drwxr-xr-x 3 user staff 102 Oct 16 14:43 .jdk-overlay
-rw-r--r-- 1 user staff 45 Oct 16 14:40 Procfile
-rw-r--r-- 1 user staff 1860 Oct 16 14:40 pom.xml
drwxr-xr-x 3 user staff 102 Oct 16 14:40 src
-rw-r--r-- 1 user staff 25 Oct 16 14:40 system.properties
カスタムファイルを.jdk-overlay
フォルダの中にコピーしてください。ファイルはJDKの中で等しく対応するディレクトリへコピーされます。
例えば、JCEが正しくコピーされるためには、Jarファイルは.jdk-overlay/jre/lib/security/
の中に配置されているべきです。
:::term
$ mkdir -p .jdk-overlay/jre/lib/security
$ cp ~/downloads/jce/local_policy.jar .jdk-overlay/jre/lib/security/
:::term
$ git add .jdk-overlay
$ git commit -m "Custom JDK Files"
:::term
$ git push heroku master
...
コピーはHerokuのBashセッションの開始しとJDKディレクトリを確かめることで検証できるでしょう。JDKのディレクトリは$HOME/.jdk/
にあります。
例えば、JCEが正しくコピーされたかを確かめるために、$HOME/.jdk/jre/lib/security/
ディレクトリを確認します。
:::term
$ heroku run bash
Running `bash` attached to terminal... up, run.1
~ $ ls -lah .jdk/jre/lib/security/
total 196K
drwxrwxr-x 2 u47919 47919 4.0K Jun 4 17:57 .
drwxrwxr-x 11 u47919 47919 4.0K Jun 4 17:57 ..
-rw-rw-r-- 1 u47919 47919 2.5K Oct 16 21:44 US_export_policy.jar
-rw-r--r-- 1 u47919 47919 159K Jun 4 17:48 cacerts
-rw-r--r-- 1 u47919 47919 2.2K Jun 4 17:48 java.policy
-rw-r--r-- 1 u47919 47919 9.8K Jun 4 17:48 java.security
-rw-rw-r-- 1 u47919 47919 2.5K Oct 16 21:44 local_policy.jar
この方法は必要なときに、Javaの拡張のために使われます。しかし、Mavenのような依存ファイルの管理ツールのほうが、依存ファイルを導入する仕組みとしては良いでしょう。