OpenJDK 9 の導入と probe3.2.0 の動作確認

JDK が Ver11 が最新になったようで、サーバーで OpenJDK 8 を使っているので、いずれ近いか遠いかわかりませんが、将来的にオラクルのサポート対象外になると思い、

OpenJDK9 のインストールと Tomcat9 + probe での動作をテストしてみました。

OpenJDK は、9.0.4
Tomcat は最新の 9.0.14
probe は最新の Version 3.2.0 (built at 2018-12-20T22:06:41Z)

を、VirtualBox の CentOS7 に導入したところ、
無事、ちゃんと動きました。


[root@localhost local]# java -version
openjdk version "9.0.4"
OpenJDK Runtime Environment (build 9.0.4+11)
OpenJDK 64-Bit Server VM (build 9.0.4+11, mixed mode)
[root@localhost local]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core) 

OpenJDK8 で ImageIO が原因未解決なエラーが多く、ImageMagick で代替したところ、脆弱性問題でよろしくないようで、PHP GD でのシェル利用による代替してましたが、

やはり、他に依存せず、JAVA で完結させるのがパフォーマンス上、管理上、ベストと思いますので、WEBアプリケーションでの動作チェックをしていくことにします。

OpenJDK9 は、まだ yum のパッケージがないので、下で教えて頂きました

https://weblabo.oscasierra.net/installing-openjdk9-on-centos7/

Tomcat9 JNDIデータソースの設定

プーリングコネクションするJNDIの設定を、server.xml に記述します。

[ 設定例 MySQL ]


      <Resource 
      driverClassName="com.mysql.jdbc.Driver" 
      maxActive="300" 
      maxIdle="100" 
      maxWait="5000" 
      name="jdbc/DATABASE_NAME" 
      password="??????" 
      type="javax.sql.DataSource" 
      url="jdbc:mysql://localhost:3306/DATABASE_NAME?characterEncoding=utf8&amp;autoReconnect=true&amp;useSSL=false" 
      username="??????" 
      
      validationQuery="select 1"
      testOnBorrow="true"
      testWhileIdle="true"
      timeBetweenEvictionRunsMillis="60000"
      />

5.7系にバージョンアップした時、はまったのですが、非リモートサーバーのデータベースの場合、urlに useSSL=false を入れる必要あります。(ないと劇遅)
Oracleの中の人に教えてもらったのですが、同一ホスト内の場合、127.0.0.1 より localhost が速いそうです。

[ 設定例 Firebird ]


    <Resource
      name="jdbc/DATABASE_NAME"
      type="javax.sql.DataSource"
      driverClassName="org.firebirdsql.jdbc.FBDriver"
      password="????????"
      maxIdle="40"
      maxWait="5000"
      username="????????"
      url="jdbc:firebirdsql:localhost/3050:DATABASE_NAME?lc_ctype=SJIS_0208"
      maxActive="100"
      
    />

[ 設定例 Oracle ]


    <Resource
      name="jdbc/SID_NAME"
      type="javax.sql.DataSource"
      driverClassName="oracle.jdbc.driver.OracleDriver"
      password="SID_NAME"
      maxIdle="40"
      maxWait="5000"
      username="????????"
      url="jdbc:oracle:thin:@???.???.???.???:1521:SID_NAME"
      maxActive="100"/>

[ 設定例 PostgreSQL ]


    <Resource
      name="jdbc/DBNAME"
      type="javax.sql.DataSource"
      driverClassName="org.postgresql.Driver"
      password="???????"
      maxIdle="40"
      maxWait="5000"
      username="??????"
      url="jdbc:postgresql://127.0.0.1/DBNAME"
      maxActive="100"/>

[ 設定例 SQLServer ]


     <Resource
      name="jdbc/DBNAME"
      type="javax.sql.DataSource"
      driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
      password="??????"
      maxIdle="40"
      maxWait="5000"
      username="??????"
      url="jdbc:sqlserver://???.????.???.???:1433;DatabaseName=DBNAME"
      maxActive="100" />

Apache2.4 <=> Tomcat 連携

/etc/httpd/conf.d/ の中にインクルードする設定ファイルを作り、以下のような記述を入れます。
8009 はデフォルトのTomcatの server.xml に設定されたポート番号なので、変えた場合、変える必要あります。

<Location /tomcat_sitename>
  ProxyPass ajp://127.0.0.1:8009/tomcat_sitename
</Location>

Tomcat ヒープメモリの設定

setenv.sh に記述

[root@???? ????]# lv setenv.sh

#JAVA_OPTS="-Xms4096m -Xmx8192m -XX:MaxPermSize=4096m -verbose:gc -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true"
CATALINA_OPTS="-Xms6144m -Xmx6144m -XX:PermSize=2048m -XX:MaxPermSize=4096m -XX:-UseGCOverheadLimit -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true"

Tomcat 管理ツールは probe 一択

Tomcat9系 でも使えてます。

よく使う機能

1) アプリケーション単位での停止、起動 (Tomcat再起動しなくても一瞬でできる)

2) データソースの確認と接続チェック

3) 接続セッションの確認、切断

4) 配備後のJSPの全コンパイル

5) ヒープメモリ使用量のチェックとガベージコレクションの実行