Skip to content

Customizing the jdk

shunter1112 edited this page Aug 17, 2013 · 1 revision

JVMのランタイムで機能を利用するために、ファイルをJDKを使ってまとめておく必要があるケースがいくつかあります。例えば、より強い暗号ライブラリを利用するために、無制限強化を含んだJavaの暗号化拡張(JCE)をJDKに追加することはよくあります。こういう場合には、Herokuは.jdk-overlayフォルダの中の指定されたファイルを、JDKのディレクトリ構造内にコピーします。

JVMの中に追加のファイルを含めたい場合は、以下のインストラクションに従ってください :

前提条件

JDKのバージョンの指定

もし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 フォルダの作成

あなたのアプリケーションのルートディレクトリに、.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"

Herokuへのデプロイ

:::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のような依存ファイルの管理ツールのほうが、依存ファイルを導入する仕組みとしては良いでしょう。

Clone this wiki locally