« 2022年12月 | トップページ | 2023年2月 »

2023年1月

2023年1月31日 (火)

Java 17 への移行(3) - OpenSearch の準備 [mac 編]

WildFly 27 では、hibernate search がバージョン 6 になっており、検索インデックス作成で、従来の lucene の他に Elasticsearch というのが選べるようになっていた。Elasticsearch は独立したシステムで、別のサーバで動かしたりもできるらしい。おもしろそうなので、これを採用することにした。

しかし、なんか大人の事情で、Elasticsearch は無料で使っていいのかどうか微妙なライセンスに変更されたらしく、無料で使いたい場合は、ライセンス変更前の Elasticsearch からフォークされた OpenSearch を使うことになっているらしかった。実際、mac の brew では Elasticsearch がインストールできず、OpenSearch をインストールするように促される。

Error: elasticsearch has been disabled because it is switching to an incompatible license. Check out `opensearch` instead!

OpenSearch のインストール

MacOS

OpenSearch をいろいろ試すために、まずは mac にインストールしてみた。プラグインとして、analysis-kuromoji という日本語形態素解析プラグインと、analysis-icu という Unicode サポートのプラグインをインストールした。

brew で opensearch と analysis-kuromoji、analysis-icu プラグインをインストールする

$ brew install opensearch
$ vi /opt/homebrew/etc/opensearch/opensearch.yml
cluster.name: opensearch_dolphin
$ opensearch
warning: no-jdk distributions that do not bundle a JDK are deprecated and will be removed in a future release
WARNING: A terminally deprecated method in java.lang.System has been called
 :
[2023-01-01T15:47:57,232][INFO ][o.o.n.Node               ] [dolphin] started
[2023-01-01T15:47:57,250][INFO ][o.o.g.GatewayService     ] [dolphin] recovered [0] indices into cluster_state
$ opensearch-plugin install analysis-kuromoji
$ opensearch-plugin install analysis-icu
$ opensearch-plugin list
warning: no-jdk distributions that do not bundle a JDK are deprecated and will be removed in a future release
analysis-icu
analysis-kuromoji

ちなみに、OpenSearch は、今後専用の jdk とバンドルされて配布されるようになる予定らしく、no-jdk distribution の warning が毎回出る。

2023年1月30日 (月)

Java 17 への移行(2) - WildFly 27.0.2 の準備

Java 17 への移行にあたって、どうせなら wildfly も最新にしておこうと思って wildfly 27.0.2 を準備した。なんと、最新の wildfly では、もはや java 1.8 はサポートから外れていた。mac でのビルドとインストールはいつも通り問題なく終了した。

WildFly 27.0.2 の準備

WildFly の GitHub から branch 27.x を選択,"Download Zip" して解凍する。作業時点ではこれで 27.0.2.Final がダウンロードされた。

mac で WildFly 27.0.2 のビルド

brew をアップデートして mvn と ant を最新にしておいてからビルド

$ brew update ; brew upgrade
$ mvn install
[INFO] Scanning for projects...
Downloading from central: https://repo.maven.apache.org/maven2/org/jboss/jboss-parent/39/jboss-parent-39.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/jboss/jboss-parent/39/jboss-parent-39.pom (68 kB at 68 kB/s)
Downloading from jboss-public-repository-group: https://repository.jboss.org/nexus/content/groups/public/org/wildfly/core/wildfly-core-parent/19.0.1.Final/wildfly-core-parent-19.0.1.Final.pom
Downloaded from jboss-public-repository-group: https://repository.jboss.org/nexus/content/groups/public/org/wildfly/core/wildfly-core-parent/19.0.1.Final/wildfly-core-parent-19.0.1.Final.pom (127 kB at 81 kB/s)
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
 :
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  54:08 min
[INFO] Finished at: 2023-01-16T12:31:00+09:00

これで wildfly-27.0.2.Final-SNAPSHOT ができる。WildFly 25.0.2 と同じく,full distributable build が欲しい場合は,build/target ではなく,dist/target の方を使う必要がある。

WildFly 27.0.2 のセットアップ

  • ./standalone.sh -b 0.0.0.0 で立ち上げて,./add-user.sh で管理ユーザ登録
  • JDBC の登録(ドライバは postgresql-42.5.1.jar),data-source の作成,パスワード登録。
    $ ./jboss-cli.sh --connect
    [standalone@localhost:9990 /] module add --name=org.postgres --resources=~/Downloads/postgresql-42.5.1.jar --dependencies=javax.api,javax.transaction.api
    [standalone@localhost:9990 /] /subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgres",driver-class-name=org.postgresql.Driver)
    [standalone@localhost:9990 /] data-source add --jndi-name=java:jboss/datasouces/DolphinDS --name=DolphinDS --connection-url=jdbc:postgresql://localhost/dolphin --driver-name=postgres --user-name=dolphin
    [standalone@localhost:9990 /] /subsystem=datasources/data-source=DolphinDS:write-attribute(name=password, value=dolphin)
    [standalone@localhost:9990 /] quit
    

2023年1月28日 (土)

Java 17 への移行(1) - monsiaj

Java 1.8 (java 8) の Extended Support 終了期限は 2030年12月に設定されている。思い返せば、15年前に OpenDolphin を初めて動かしたのが java 1.5 で、それから 1.8 までバージョンアップしてきた。そして、1.8 サポート終了の 2030年といえば、自分はもう結構な年になっているし、まだ仕事をしているかどうかも怪しい。もしかしたら java 1.8 が人生最後の java かもしれないと思っていた。

しかし、apple silicon の登場により状況が変わった。当院の OpenDolphin は java 1.8 + javafx8 なのだが、このままでは apple silicon にネイティブ対応できない。Rosetta エミュレーションで動くことは動くが、rosetta もいつまでサポートされるか分からない。Apple silicon ネイティブ対応の java を検討したところ、javafx を含めてネイティブ対応しているのは java 17 からであることが判明した。というわけで、壮大な java 17 移行計画がスタートしたのであった。

まずは、自院向けにカスタマイズした monsiaj-pns を java 17 で動かすことから始めてみた。Java 17 では jre がなくなっており、jre に当たる環境を自分で jlink で作って、jpackage でそれを取り込んだ mac 用のアプリを作るというシステムになっている。つまり、java がインストールされていなくても、普通のアプリのように単体で動くアプリが作れる。さらに、作成される jre は jar が動く最小限の環境でいいため、jre を組み込んでも、アプリの容量はそれほど大きくならない。進化している、おそるべし java 17。

monsiaj のコードはそのままコンパイラが通ったので、pom.xml に jlink, jpackage の処理を書き加えて、無事 mac 用のアプリを作ることができた。ついでに、maven の profile で mac と windows を切り替えて、windows 用の msi インストーラも作れるようにしてみた。(wix toolset が必要)

1_orca_update_apple

ソース

2023年1月27日 (金)

orca 5.2 に移行

ふと気がついたら、orca 5.1 にアップグレードしてから3年以上たっており、サポート終了が迫っていた。orca 5.2 にアップグレードした。しかし、OS がまだ ubuntu 18.04 なので、これも3月までに 20.04 にアップグレードする必要がある。
  1. 自宅サーバで、ubuntu アップデート後にネットワークがつながらなくなるというトラブルあり、原因調査中のためカーネルをホールドする。
    $ sudo apt-mark hold linux-image-generic linux-headers-generic
    $ apt-mark showhold
    linux-headers-generic
    linux-image-generic
    
  2. sky.sh 様帳票のプログラムオプション設定をバックアップしてからアンインストール
    $ psql orca -c "DELETE FROM tbl_plugin WHERE name='skysh';"
    $ wget http://www.sky.sh/orca/plugin/uninstall_skysh.tar.gz
    $ tar zxvf uninstall_skysh.tar.gz
    $ cd uninstall_skysh/ 
    $ sudo perl uninstall_skysh.pl
    
  3. データベースのスキーマチェック
    $ wget https://ftp.orca.med.or.jp/pub/etc/jma-receipt-dbscmchk.tgz
    $ tar xvzf jma-receipt-dbscmchk.tgz
    $ cd jma-receipt-dbscmchk
    $ sudo bash jma-receipt-dbscmchk.sh
    ORCA Project Jma-Receipt Database Schema Check (4.2.1)
    == Operating System information ==
     :
     :
    == Schema Check information ==
      Jma-Receipt Schema Version (050100-1)
      チェックファイル(public):[ orcadbschema-sum-public.ver510 : 2022-09-19 21:39:22 ]
      チェックファイル(master):[ orcadbschema-sum-master.ver510 : 2018-10-30 23:56:23 ]
      チェックファイル(public):[ orcadbschema-public.ver510 : 2022-09-19 21:40:38 ]
      チェックファイル(master):[ orcadbschema-master.ver510 : 2022-03-16 23:59:03 ]
      チェックファイル(public):[ orcadbschema-view-public.ver510 : 2022-03-17 00:09:02 ]
    現在のスキーマバージョンは5.1.0です。
    スキーマの整合性をチェックします。
    --------------------------------------------------------
      データベースの整合性チェックは正常に終了しました。
    --------------------------------------------------------
    
  4. apt line の更新
    $ sudo rm /etc/apt/sources.list.d/jma-receipt-bionic51.list
    $ sudo wget -O /etc/apt/sources.list.d/jma-receipt-bionic52.list https://ftp.orca.med.or.jp/pub/ubuntu/jma-receipt-bionic52.list
    
  5. update and upgrade
    $ sudo aptitude update
    $ sudo aptitude upgrade
    依存関係を解決中...
    以下の新規パッケージがインストールされます:
      barcode{a} librsvg2-bin{a} uuid-dev{a}
    以下のパッケージは『削除』されます:
      gconf-service{u} gconf-service-backend{u} gconf2{u} gconf2-common{u} libbonobo2-0{u}
      libbonobo2-common{u} libgconf-2-4{u} libgnome-2-0{u} libgnome2-0{u} libgnome2-bin{u}
      libgnome2-common{u} libgnomevfs2-0{u} libgnomevfs2-common{u} liborbit-2-0{u} monpe-freetype{u}
    以下のパッケージが更新されます:
      jma-receipt jma-receview libcob1 libcob1-dev libgtkpanda2.0-0 libmondai1 monpe monpe-common monpe-libs
      open-cobol panda-dev panda-libs panda-server
    13 個のパッケージを更新,  3 個を新たにインストール,  15 個を削除予定, 0 個が更新されていない。
    アーカイブの 44.1 MB を取得する必要があります。 展開後に 7,274 kB のディスク領域が新たに消費されます。
    先に進みますか? [Y/n/?] y
     :
    設定ファイル '/etc/jma-receipt/jppinfo.list'
     ==> これはインストールしてから (あなたかスクリプトによって) 変更されています。
     ==> パッケージ配布元が更新版を提供しています。
       どうしますか? 以下の選択肢があります:
        Y か I  : パッケージメンテナのバージョンをインストールする
        N か O  : 現在インストールされている自分のバージョンを残す
          D     : 両バージョンの差異を表示する
          Z     : 状況を調査するためにシェルを開始する
     デフォルトでは現在使っている自分のバージョンを残します。
    *** jppinfo.list (Y/I/N/O/D/Z) [デフォルト=N] ? Y
     ;
    現在の状態: 0 個 (-13) 更新可能。
    
  6. /etc/jma-receipt/db.confの確認
    $ cat /etc/jma-receipt/db.conf
    DBENCODING="UTF-8"
    
  7. データベースセットアップ
    $ sudo jma-setup
    DBHOST:         OK (PostgreSQL:localhost)
    DBUSER:         OK (orca)
    DATABASE:       OK (orca)
    DBENCODING:     OK (UTF-8)
    DBKANRI         OK (tbl_dbkanri)
    UPDATE CHECK:   OK (online)
    DBLIST:         OK (050200-1)
    LIST DOWNLOAD:  FILE (31)
    DOWNLOAD:       ...............................OK
    EXTRACT:        ...............................OK
    UPDATE:         ...............................OK
    DBVERSION:      OK (0502001)
    データベース構造変更処理は終了しました
    
  8. sky.sh 様の帳票用パッケージリストを追加
    $ sudo vi /etc/jma-receipt/jppinfo.list
    ---
    :root: /var/lib/jma-receipt/plugin
    :list:
     - https://ftp.orca.med.or.jp/pub/receipt/plugin/5.2.0/jpplist1.yml
     - https://ftp.orca.med.or.jp/pub/receipt/plugin/5.2.0/jpplist2.yml
     - http://www.sky.sh/orca/plugin/5.2.0/skysh.yml
    :linkprefix: /usr/local/site-jma-receipt
    :verify: true
    
  9. sky.sh 様のキーリングの追加
    $ gpg --list-keys
    /home/orca/.gnupg/pubring.gpg
    -----------------------------
    pub   1024D/ED7FC485 2010-01-29
    uid                  support (plugin) 
    sub   2048g/A033594A 2010-01-29
    
    pub   2048R/268E931D 2013-09-21
    uid                  skysh (hasegawa) 
    sub   2048R/E4A273AB 2013-09-21
    
    sky.sh 様のキーリングがない場合は入れる
    $ wget http://www.sky.sh/orca/plugin/skysh.pub
    $ gpg --import skysh.pub
    
  10. ここで一旦リブート
  11. リブートすると、ログに以下のエラーが延々と表示される
    Jan 25 08:54:05 orca panda/wfc[1349]: api orca71 not found
    Jan 25 08:54:05 orca panda/glserver[1899]: json error: no result
    Jan 25 08:54:08 orca panda/wfc[1349]: [C821B79B-E9B7-4415-9597-5FD9FAF9B27F] session fail Window [onlineimg1] not found.
    
  12. クライアントから「プログラム更新」して、しばらく待つとエラー表示が消える
    Jan 25 08:58:36 orca panda/wfc[1349]: api orca71 not found
    Jan 25 08:58:36 orca panda/glserver[5617]: json error: no result
    Jan 25 08:58:38 orca panda/wfc[1349]: receive stop signal
    Jan 25 08:58:43 orca panda/monitor[1323]: restart system
    Jan 25 08:58:43 orca panda/monitor[1323]: wfc restart count:1
    Jan 25 08:58:48 orca panda/glserver[5629]: glserver start
    Jan 25 08:58:48 orca panda/glserver[5655]: could not connect wfc
    Jan 25 08:58:49 orca panda/wfc[5630]: wfc start 4.0.0 20221011
    Jan 25 08:58:52 orca panda/glserver[5794]: api 200 /orca71/onlineimg1/(null) ormaster@::1 Ruby
    
  13. 「プラグイン更新」(地方公費, 帳票, sky.sh様)、「マスタ更新」
  14. エラー確認とスキーマチェック。マスタの *.ERR ファイルがあったときは, 対応する PRF ファイルをチェックする。
    $ grep ERROR /var/log/jma-receipt/orca-db-install-5.2.0.log
    $ find /var/lib/jma-receipt/master/01/orca-mstlog/*.ERR -size +1
    $ cd jma-receipt-dbscmchk
    $ sudo bash jma-receipt-dbscmchk.sh
    

« 2022年12月 | トップページ | 2023年2月 »