SSLでのアクセスに関連するALPNは、Javaのバージョン毎に適切なバージョンを使用する必要があります。適切なバージョンを使用しないでSSLでiDempiereにアクセスしようとすると次のようなエラーが表示されます。
Unexpected thread death: org.eclipse.jetty.util.thread.QueuedThreadPool$2@70dc426f in qtp156794394{STARTED,10<=13<=200,i=6,q=0}
このエラーを回避するためには、iDempiereで用意しているALPNを、自分の環境で使用しているJavaのバージョンに対応するALPNに変更する必要があります。
ALPNは、iDempiereのインストールサーバーの直下に"alpn-boot.jar"です。JavaのバージョンとALPNのバージョンの対応表は下記に表示されています。
直近(2017/5/13)現在の、javaのバージョンとALPNのバージョンの対応表を一部抜粋して表示しています。
例えば、現在の私の環境ではJavaのバージョンは1.8.0_131ですので、ALPNの8.1.11.v20170118が適切なバージョンとうことになります。
対応するALPNのバージョンを確認した下記のサイトよりダウンロードします。
例えば、現在の私の環境ではJavaのバージョンは1.8.0_131ですので、ALPNの8.1.11.v20170118をダウンロードします。
alpn-boot-8.1.11.v20170118.jarをダウンロードします。
ダウンロードしたalpn-boot-8.1.11.v20170118.jarを"alpn-boot.jar"にリネームして、サーバーフォルダ(ディレクトリ)に配置すれば完了です。
サーバー起動ファイルの設定変更
つぎに、ALPNを正しく動作させるために、サーバー起動ファイルの設定を少し変更します。
Windowsのサーバー起動ファイル
Window版のサーバー起動ファイルは"idempiere-server.bat"です。2017年5月現在では下記のように記述されています。
@Echo off
@if not "%JAVA_HOME%" == "" goto JAVA_HOME_OK
@Set JAVA=java
@Echo JAVA_HOME is not set.
@Echo You may not be able to start the server
@Echo Set JAVA_HOME to the directory of your local 1.6 JDK.
goto START
:JAVA_HOME_OK
@Set JAVA=%JAVA_HOME%\bin\java
:START
@Echo =======================================
@Echo Starting iDempiere Server ...
@Echo =======================================
FOR %%c in (plugins\org.eclipse.equinox.launcher_1.*.jar) DO set JARFILE=%%c
@"%JAVA%" -Dosgi.console=localhost:12612 -Djetty.home=jettyhome -Djetty.etc.config.urls=etc/jetty.xml,etc/jetty-selector.xml,etc/jetty-ssl.xml,etc/jetty-https.xml,etc/jetty-deployer.xml -XX:MaxPermSize=192m -Dmail.mime.encodefilename=true -Dmail.mime.decodefilename=true -Dmail.mime.encodeparameters=true -Dmail.mime.decodeparameters=true -jar %JARFILE% -application org.adempiere.server.application
上記の記述を下記のように修正します。赤字が修正箇所です。
@Echo off
@if not "%JAVA_HOME%" == "" goto JAVA_HOME_OK
@Set JAVA=java
@Echo JAVA_HOME is not set.
@Echo You may not be able to start the server
@Echo Set JAVA_HOME to the directory of your local 1.6 JDK.
goto START
:JAVA_HOME_OK
@Set JAVA=%JAVA_HOME%\bin\java
:START
@Echo =======================================
@Echo Starting iDempiere Server ...
@Echo =======================================
FOR %%c in (plugins\org.eclipse.equinox.launcher_1.*.jar) DO set JARFILE=%%c
@"%JAVA%" -Dosgi.console=localhost:12612 -Xbootclasspath/p:alpn-boot.jar -Dorg.osgi.framework.bootdelegation=sun.security.ssl,org.eclipse.jetty.alpn -Djetty.home=jettyhome -Djetty.etc.config.urls=etc/jetty.xml,etc/jetty-deployer.xml,etc/jetty-ssl.xml,etc/jetty-ssl-context.xml,etc/jetty-http.xml,etc/jetty-alpn.xml,etc/jetty-http2.xml,etc/jetty-https.xml -XX:MaxPermSize=192m -Dmail.mime.encodefilename=true -Dmail.mime.decodefilename=true -Dmail.mime.encodeparameters=true -Dmail.mime.decodeparameters=true -jar %JARFILE% -application org.adempiere.server.application
上記の記述を改行せすると下記のような引数を起動時に渡している事がわかります。
-Dosgi.console=localhost:12612
-Xbootclasspath/p:alpn-boot.jar
-Dorg.osgi.framework.bootdelegation=sun.security.ssl,org.eclipse.jetty.alpn
-Djetty.home=jettyhome
-Djetty.etc.config.urls=etc/jetty.xml,etc/jetty-deployer.xml,etc/jetty-ssl.xml,etc/jetty-ssl-context.xml,etc/jetty-http.xml,etc/jetty-alpn.xml,etc/jetty-http2.xml,etc/jetty-https.xml
-XX:MaxPermSize=192m
-Dmail.mime.encodefilename=true
-Dmail.mime.decodefilename=true -Dmail.mime.encodeparameters=true -Dmail.mime.decodeparameters=true -jar %JARFILE% -application org.adempiere.server.application
Linuxのサーバー起動ファイル
あとで記述します・・・。