NAKAMURA Minoru の日記 (2025年8月)

先月の日記(2025年08月) 今月の日記(2025年09月) 来月の日記(2025年10月)
2002 | 10 | 11 | 12
2003 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2004 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2005 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2006 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2007 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2008 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2009 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2010 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2011 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2012 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2013 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2014 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2015 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2016 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2017 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2018 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2019 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2020 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2021 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2022 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2023 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2024 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2025 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
ホームページ | 最新のコメント50
インデックス: 食べ歩き | Java | プログラム | UNIX | 画像
最新の日記へのリンク | この日記ページをはてなアンテナに追加 この日記ページをはてなブックマークに追加
はてな ダイアリー アンテナ ブックマーク ブログ
Twitter | mixi | Facebook | slideshare | github | Qiita



9/27 (土)

[Java] Java 8 から Java 21 へマイグレーション

Java 8 で書かれたプログラムを Java 21 へ変更する。 Java EE から Jakarta EE への変更に伴い、javax パッケージを jakarta パッケージへの変更も必要だが、それ以外の部分について記述する。

文法の変更に対応

最新の Java で非推奨になった記法を修正する必要がある。

// 非推奨(Java 9以降)
Integer i = new Integer(1);

// 推奨(Java 9以降)
Integer i = Integer.valueOf(1);

その他、finalizer も非推奨となっており、どこかで廃止される。

Java モジュールシステム(JPMS)でのアクセス制限を回避

Java 9 以降で java.base モジュールが java.net.HttpURLConnection.method のような内部フィールドをリフレクションで直接アクセスすることを禁止した。 結果として InaccessibleObjectException が発生するようになる。

これを回避するために Java VM のオプションに --add-opens java.base/java.net=ALL-UNNAMED を指定する必要がある。

export JDK_JAVA_OPTIONS="--add-opens java.base/java.net=ALL-UNNAMED"

GC ロギングの変更

Java 8 から GC ロギングの指定方法が Unified GC Logging としてまとめられ、Java 21 で廃止された Unified GC Logging 以外のオプションは廃止された。

// 修正前
java -XX:+PrintGCDateStamps -Xloggc:/path/to/app-gc-%t.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M ...

// 修正後
java -Xlog:gc*:file=/path/to/app-gc-%t.log:time,uptime,level,tags:filecount=10,filesize=10m ...

9/13 (土)

Apache Solr のバージョンアップトラブル

Apache Solr を 7 から 9 にバージョンアップをしながら solr イメージを作る方法を試行錯誤している。 やりたいのは最初からスキーマを設定したコアを作った solr イメージを作ることだ。

まず独自のスキーマを my-managed-schema.xml として用意する。 これを _default に格納して precreate-core コマンドを使うと solr が起動する前のコアを準備することができる。

FROM solr:9.9.0

ENV SOLR_OPTS="-Dsolr.disable.shardsWhitelist=true -Dsolr.disable.allowUrls=true"

COPY --chown=solr:solr my-managed-schema.xml /opt/solr/server/solr/configsets/_default/conf/managed-schema.xml

precreate-core mycore1
precreate-core mycore2
precreate-core mycore3

問題は独自スキーマをどう作るかだ。 仕様を知っていれば my-managed-schema.xml を直接書くか、素の Solr を作って curl -X POST -H 'Content-type:application/json' --data-binary @schema.json http://localhost:8983/solr/{core}/schema を実行してスキーマを登録して managed-schema.xml の取得するになる。


先月の日記(2025年08月) 今月の日記(2025年09月) 来月の日記(2025年10月)
2002 | 10 | 11 | 12
2003 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2004 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2005 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2006 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2007 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2008 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2009 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2010 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2011 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2012 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2013 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2014 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2015 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2016 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2017 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2018 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2019 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2020 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2021 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2022 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2023 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2024 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2025 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
ホームページ | 最新のコメント50
インデックス: 食べ歩き | Java | プログラム | UNIX | 画像
最新の日記へのリンク | この日記ページをはてなアンテナに追加 この日記ページをはてなブックマークに追加
はてな ダイアリー アンテナ ブックマーク ブログ
Twitter | mixi | Facebook | slideshare | github | Qiita


Written by NAKAMURA Minoru, Email: nminoru atmark nminoru dot jp, Twitter:@nminoru_jp