ページの先頭行へ戻る
Enterprise Application Platform V2.0.0 リリース情報

2.1.14 Java VM終了時のメッセージ出力

変更内容

DASおよびGlassFish ServerインスタンスのJava VM終了時のメッセージ出力の出力内容が変更されます。

非互換

V1.2以前

アプリケーションまたはGlassFishで以下のメソッドが実行された場合、Java VMログにスタックトレース情報が出力されます。

  • java.lang.System.exit()

  • java.lang.Runtime.exit()

  • java.lang.Runtime.halt()

これらのメソッドを実行しない場合は、Java VM終了時、Java VMの終了を通知するメッセージが出力されます。

スタックトレース情報、Java VMの終了を通知するメッセージは、以下の例のように出力されます。

スタックトレース情報の出力例

Thread dump at JVM_Halt(status code=0): 
"Thread-31" #145 daemon prio=5 os_prio=0 cpu=7.95ms elapsed=0.21s tid=0x00007f1b183afbf0 nid=0x3f915 runnable  [0x00007f1af15d4000]
   java.lang.Thread.State: RUNNABLE
        at java.lang.Shutdown.halt0(java.base@17.0.8/Native Method)
        at java.lang.Shutdown.halt(java.base@17.0.8/Shutdown.java:151)
        - locked <0x00000000c0115c78> (a java.lang.Shutdown$Lock)
        at java.lang.Shutdown.exit(java.base@17.0.8/Shutdown.java:174)
        - locked <0x00000000ffe020b8> (a java.lang.Class for java.lang.Shutdown)
        at java.lang.Runtime.exit(java.base@17.0.8/Runtime.java:115)
        at java.lang.System.exit(java.base@17.0.8/System.java:1860)
        at com.sun.enterprise.v3.admin.StopServer.doExecute(StopServer.java:67)
        at com.sun.enterprise.v3.admin.cluster.StopInstanceInstanceCommand.execute(StopInstanceInstanceCommand.java:72)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:525)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:521)
        at java.security.AccessController.executePrivileged(java.base@17.0.8/AccessController.java:776)
        at java.security.AccessController.doPrivileged(java.base@17.0.8/AccessController.java:399)
        at javax.security.auth.Subject.doAs(java.base@17.0.8/Subject.java:376)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:520)
        at org.glassfish.api.AsyncImpl$1$1.run(AsyncImpl.java:52)
#### JavaVM terminated: OpenJDK 64-Bit Server VM (17.0.8+3-2023-05-19-Fujitsu-B02 mixed mode, sharing), [pid=260139] TimeMillis=1684754298512 Time=Mon May 22 17:18:18 2023

Java VMの終了を通知するメッセージの出力例

#### JavaVM terminated: OpenJDK 64-Bit Server VM (17.0.8+7-2023-07-19-Fujitsu-B02 mixed mode, sharing), [pid=16760] TimeMillis=1689817347514 Time=Thu Jul 20 10:42:27 2023
V2.0以降

アプリケーションまたはGlassFishで以下のメソッドが実行された場合、Java VMログにスタックトレース情報が出力されます。

  • java.lang.System.exit()

  • java.lang.Runtime.exit()

これらのメソッドを実行しない場合は、Java VM終了時、メッセージが出力されません。java.lang.Runtime.halt()メソッドの実行時にも、メッセージは出力されません。

スタックトレース情報は、以下の例のように出力されます。

スタックトレース情報の出力例

9月 02, 2024 1:32:39 午後 java.lang.Shutdown logRuntimeExit
普通: Runtime.exit() called with status: 0
java.lang.Throwable: Runtime.exit(0)
    at java.base/java.lang.Shutdown.logRuntimeExit(Shutdown.java:179)
    at java.base/java.lang.Shutdown.exit(Shutdown.java:160)
    at java.base/java.lang.Runtime.exit(Runtime.java:188)
    at java.base/java.lang.System.exit(System.java:1920)
    at com.sun.enterprise.v3.admin.StopServer.doExecute(StopServer.java:69)
    at com.sun.enterprise.v3.admin.cluster.StopInstanceInstanceCommand.execute(StopInstanceInstanceCommand.java:81)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:577)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:573)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
    at java.base/javax.security.auth.Subject.doAs(Subject.java:453)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:572)
    at org.glassfish.api.AsyncImpl$1$1.run(AsyncImpl.java:52)

対処方法

Java VMログの参照時、変更後の形式のスタックトレース情報を参照してください。

アプリケーションでjava.lang.Runtime.halt()を実行していて、java.lang.Runtime.halt()の実行時にスタックトレースを出力する必要がある場合、java.lang.Runtime.halt()の実行前にスタックトレースを出力する処理をアプリケーションで実装してください。