GlassFishを使ってみる–>Java12で動作しない

TomcatかJettyで十分のように思うのだが、GlassFishを使うと何が嬉しいのだろうか?もちろんEJBを使うつもりなど全然無いのだが。。。巷の解説ではさっぱりわからないので、これも使ってみることにする。

GlassFish5.0を使ってみる

ダウンロードとインストール

オールJava製なので、特にWindows用というものは無い。以下から5.0を選択し、ダウンロードしたzipを解凍し、適当なところに置くだけだ。

起動してみる

README.txtに記述があるのだが、起動するにはbinフォルダのasadmin.batを使い「asadmin start-domain」とする。

しかし、Java9でいきなりエラーが発生(動作条件はJava8)。

Exception in thread "main" java.lang.NullPointerException
        at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.initializeServiceLocator(AbstractModulesRegistryImpl.java:152)
        at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.new ServiceLocator(AbstractModulesRegistryImpl.java:144)
        at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.createServiceLocator(AbstractModulesRegistryImpl.java:218)
        at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.createServiceLocator(AbstractModulesRegistryImpl.java:224)
        at com.sun.enterprise.module.single.StaticModulesRegistry.createServiceLocator(StaticModulesRegistry.java:88)
        at com.sun.enterprise.admin.cli.CLIContainer.getServiceLocator(CLIContainer.java:217)
        at com.sun.enterprise.admin.cli.CLIContainer.getLocalCommand(CLIContainer.java:255)
        at com.sun.enterprise.admin.cli.CLICommand.getCommand(CLICommand.java:231)
        at com.sun.enterprise.admin.cli.AdminMain.executeCommand(AdminMain.java:371)
        at com.sun.enterprise.admin.cli.AdminMain.doMain(AdminMain.java:306)        at org.glassfish.admin.cli.AsadminMain.main(AsadminMain.java:57)

ここに修正方法がある。

Glassfish server does not start. NullPointeException

glassfish5インストールの下のglassfish\config\asenv.batの一番下に以下を追加する。もちろんインストールされてるJDK8に応じて異なる。

set AS_JAVA=C:\Program Files\Java\jre1.8.0_211

すると起動するようになった。起動しているのはJava9なのだが大丈夫のようだ。

C:\devel\glassfish5\bin>asadmin start-domain
Waiting for domain1 to start .......
Successfully started the domain : domain1
domain  Location: C:\devel\glassfish5\glassfish\domains\domain1
Log File: C:\devel\glassfish5\glassfish\domains\domain1\logs\server.log
Admin Port: 4848
Command start-domain executed successfully.

C:\devel\glassfish5\bin>

ブラウザで「http://localhost:4848」にアクセスすると、以下の画面が表示される。

GlassFishを停止するには、「asadmin stop-domain」とすればいい。

Java9以上でも大丈夫なのか?

今度は、デフォルトのjavaコマンドも、先のAS_JAVAの指定もAdoptOpenJDK12にしてみた。

set AS_JAVA=C:\Program Files\AdoptOpenJDK\jdk-12.0.1.12-hotspot

すると以下のエラーになる。

c:\devel\glassfish5\bin>java -version
openjdk version "12.0.1" 2019-04-16
OpenJDK Runtime Environment AdoptOpenJDK (build 12.0.1+12)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 12.0.1+12, mixed mode, sharing)

c:\devel\glassfish5\bin>asadmin start-domain
Exception in thread "main" java.lang.NullPointerException
        at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.ini
tializeServiceLocator(AbstractModulesRegistryImpl.java:152)
        at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.new
ServiceLocator(AbstractModulesRegistryImpl.java:144)
        at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.cre
ateServiceLocator(AbstractModulesRegistryImpl.java:218)
        at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.cre
ateServiceLocator(AbstractModulesRegistryImpl.java:224)
        at com.sun.enterprise.module.single.StaticModulesRegistry.createServiceL
ocator(StaticModulesRegistry.java:88)
        at com.sun.enterprise.admin.cli.CLIContainer.getServiceLocator(CLIContai
ner.java:217)
        at com.sun.enterprise.admin.cli.CLIContainer.getLocalCommand(CLIContaine
r.java:255)
        at com.sun.enterprise.admin.cli.CLICommand.getCommand(CLICommand.java:23
1)
        at com.sun.enterprise.admin.cli.AdminMain.executeCommand(AdminMain.java:
371)
        at com.sun.enterprise.admin.cli.AdminMain.doMain(AdminMain.java:306)
        at org.glassfish.admin.cli.AsadminMain.main(AsadminMain.java:57)

Can Glassfish 5 run with java 10 or is it only compatible with java 8?に答えがある。

Java9以上では動作しないそうだ。しかも、GlassFish5.0がリリースされたのは2017/9のことだ。一体何をやっているのだろう?

Java8しか使えないのではお話にならないのだが。。。

GlassFish 5.0.1を試してみる

しかし、GlassFish 5.0.1というのが出ているではないか。これを試してみることにする。

これを見ると、2017/10からずっと5.0.1をやってることがわかる。とりあえず、latest-glassfish.zipをダウンロードして同じように実行にしてみる。。。が、だめだ、同じようなエラーが発生する。glassfish\config\asenv.batへのAS_JAVAの追加でもだめ。Java12では動作しない。

GlassFish 4.1.2を試してみる

5は諦めて4に行く。Java12で動かそうとすると。。。

c:\devel\glassfish4\bin>asadmin start-domain
GlassFish requires Java SE version 6.  Your JDK is version 0

これはお話になんないだろ。。。何はともあれJava12上で動かないのでは。ところでTomcatは動作するのだろうか?次の投稿で調べてみる。