YosemiteでGlassFishが起動できない問題への対処

Macのlaunchctlコマンドで、Yosemite以降?で、bsexecオプションが無くなったとかで、4.1以前のGlassFishが以下のメッセージを吐いて、起動できなくなているっぽいです。

JVM failed to start: com.sun.enterprise.admin.launcher.GFLauncherException: The server exited prematurely with exit code 1.
Before it died, it produced the following output:


Command start-domain failed.

この問題は、JIRAのチケットでも上がっていて、4.2で修正されるようです。(2015/07/15現在はまだリリースされてない)
因みに、4.2では launchctl ではなく、 nohup を使用するように修正されるようです。詳細は以下のチケットを見てください。
[GLASSFISH-21343] Glassfish fails to start on OSX 10.10.3 - Java.net JIRA

4.2が出るまではしかたがないので、launchctlコマンドのプロキシとなるスクリプトを用意して、bsexecオプションの場合には、nohupコマンドを叩くようにして回避します。

どっか適当なところ(GlassFishの起動ユーザのホームディレクトリとか)に、binディレクトリ掘って、以下のスクリプトを置いときます。パーミッションを755にするのも忘れずに。

#!/bin/bash
if [[ ${1} == "bsexec" ]]; then
    nohup ${@:3}
else
    /bin/launchctl ${@}
fi

あとは、このスクリプトを置いたディレクトリへのパスを.bash_profileとか.profileとかで通しておけば、GlassFishが起動できるようになってます。

参考文献:medium.com