На сервере, где я работаю, есть экземпляр JBoss, который имеет следующую командную строку:
/usr/java/jdk1.6.0_31/bin/java -Dcom.sun.management.jmxremote -Dprogram.name=run.sh -server -Xms464m -Xmx464m -XX:MaxPermSize=128m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Dsun.net.inetaddr.ttl=0 -Dcom.sun.management.jmxremote -Djavax.management.builder.initial=org.jboss.system.server.jmx.MBeanServerBuilderImpl -Djboss.platform.mbeanserver -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=20071 -Djava.endorsed.dirs=/opt/jboss/lib/endorsed -classpath/opt/jboss/bin/run.jar: /usr/java/jdk1.6.0_31/lib/tools.jar org.jboss.Main -P/opt/jboss/server/default/site-Deploy/example.com/boot-1.properties -c default
У меня есть несколько вопросов:
1. Я понимаю, что опция -D
задает именованное свойство, например -Dsun.rmi.dgc.server.gcInterval=3600000
устанавливает свойство sun.rmi.dgc.server.gcInterval
в значение 3600000
. Что относительно -D
, которые не имеют знака равенства, например -Dcom.sun.management.jmxremote
? Какова ценность com.sun.management.jmxremote
?
2. Я не могу найти ЛЮБОЙ документации, объясняющей, что -P
или -c
. Ни java -version
ни man java
упоминают их. Я предполагаю, что -P
означает "загрузить свойства из указанного файла". Я понятия не имею, что делает -c
.
3. Токен org.jboss.Main
, похоже, не является частью предыдущей -classpath
. Это имя класса, которое Java говорит ему для вызова, например, как java Foo
вызывает класс Foo
?
/usr/java/jdk1.6.0_31/bin/java -Dcom.sun.management.jmxremote -Dprogram.name=run.sh -server -Xms464m -Xmx464m -XX:MaxPermSize=128m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Dsun.net.inetaddr.ttl=0 -Dcom.sun.management.jmxremote -Djavax.management.builder.initial=org.jboss.system.server.jmx.MBeanServerBuilderImpl -Djboss.platform.mbeanserver -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=20071 -Djava.endorsed.dirs=/opt/jboss/lib/endorsed -classpath /opt/jboss/bin/run.jar:/usr/java/jdk1.6.0_31/lib/tools.jar org.jboss.Main -P /opt/jboss/server/default/site-deploy/example.com/boot-1.properties -c default
1 Системное свойство без значения означает, что системное свойство присутствует, а значение - пустая строка ""
2 это аргумент командной строки для jboss Main class
3 этот класс исходит из одного из этих run.jar
, откройте run.jar
и подтвердите
-c default
означает, что аргумент default
передается в основной класс?
["-P", "/opt/jboss/server/default/site-deploy/example.com/boot-1.properties", "-c" ,"default"]
this это представление массива
Следующая ссылка содержит все параметры сценария jboss run.sh:
Глава 5. Запуск и остановка JBoss
usage: run.sh [options]
-h, --help Show this help message
-V, --version Show version information
-- Stop processing options
-D<name>[=<value>] Set a system property
-d, --bootdir=<dir> Set the boot patch directory; Must be absolute or url
-p, --patchdir=<dir> Set the patch directory; Must be absolute or url
-n, --netboot=<url> Boot from net with the given url as base
-c, --configuration=<name> Set the server configuration name
-B, --bootlib=<filename> Add an extra library to the front bootclasspath
-L, --library=<filename> Add an extra library to the loaders classpath
-C, --classpath=<url> Add an extra url to the loaders classpath
-P, --properties=<url> Load system properties from the given url
-b, --host=<host or ip> Bind address for all JBoss services
-g, --partition=<name> HA Partition name (default=DefaultDomain)
-u, --udp=<ip> UDP multicast address
-l, --log=<log4j|jdk> Specify the logger plugin type
-P
и-c
выглядят как аргументы программы, а не параметры. Да,org.jboss.Main
- это класс с методом main.-D
) я бы сказал, посмотрите документы, но документы, кажется, не говорят, что это значит без=
!