Tip #-1 How Does GlassFish Pick the JVM to Run In?
By Byronnevins-Oracle on Jul 19, 2011
If you start a GlassFish Server by using asadmin, then you may be interested in precisely how the JVM that will run GlassFish Server is chosen. Note that if you restart via the Admin Console (GUI) you are indirectly using asadmin to restart the server and the following rules apply as well. If you start the Server some other way, like
java -jar glassfish.jar
then you are in charge of choosing the JVM yourself.
In order of precedence from high to low:
- The jdk location specified in domain.xml in the java-config ("java-home")
- The contents of AS_JAVA in the asenv property file (in glassfish/config)
- Whatever the env. variable, JAVA_HOME, is pointing at.
- The java.home system property is used like so:
- Parent directory of java.home -- this is because sometimes the JRE's java is asadmin's JVM and the JDK may be in the directory above.
- Contents of java.home
In every case I guarantee a valid java. E.g. you can set 1,2,3 to
garbage and we'll still find a java to use.
Note that we never explicitly use java from the path -- if there is one. It may be implicitly used though by using #4 above since asadmin itself is definitely running inside of a valid JVM.
p.s. If you are wondering where the code is -- 90% of it is inside AsenvPropertyReader.java
10% is in GFLauncher.java
-- AsenvPropertyReader can't access domain.xml. GFLauncher can. GFLauncher's job is to see if (1) above applies. If not he defers to AsenvPropertyReader.