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は動作するのだろうか?次の投稿で調べてみる。