Рабочий JBoss 6 с Runit / daemontools или другая платформа контроля процессом

установите пакет

apt-get install php5-curl

в этой точке php должен уже быть настроен для загрузки той библиотеки [/etc/php5/apache2/conf.d/curl.ini]; апач перезапуска

/etc/init.d/apache2 restart
1
задан 10 January 2012 в 13:03
2 ответа

Для всех, кто находится в подобной привязке, я выяснил, что проблема была. Я объясняю, как я получил ответ, поскольку считаю, что он может помочь в решении других проблем.

После запуска JBoss с runit, если вы выполните ps aux | grep jboss это результат:

# ps aux | grep jboss
root      1855  0.0  0.0    120    24 ?        Ss   11:23   0:00 runsv jboss
root      1856  0.0  0.0    144    44 ?        S    11:23   0:00 svlogd -tt /var/log/jboss
root      1857  0.0  0.0  10820  1168 ?        S    11:23   0:00 /bin/sh /opt/jboss-6.1.0.Final/bin/run.sh -c standard -b 0.0.0.0
root      1926  178  1.9 1501080 78560 ?       Sl   11:23   0:05 java -server -Xms128m -Xmx1024m -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n -Djava.net.preferIPv4Stack=true -Dprogram.name=run.sh -Dlogging.configuration=file:/opt/jboss-6.1.0.Final/bin/logging.properties -Djava.library.path=/opt/jboss-6.1.0.Final/bin/native/lib64 -Djava.endorsed.dirs=/opt/jboss-6.1.0.Final/lib/endorsed -classpath /opt/jboss-6.1.0.Final/bin/run.jar org.jboss.Main -c standard -b 0.0.0.0
root      1950  0.0  0.0  61224   764 pts/0    S+   11:23   0:00 grep jboss

Теперь выполните sv status jboss и обратите внимание на pid, который сообщает sv :

# sv status jboss
run: jboss: (pid 1857) 17s; run: log: (pid 1856) 17s

sv считает, что pid jboss это 1857, но проверка вывода ps , фактический pid jboss - 1926, оболочка, запустившая jboss, - pid 1857. Это проблема, запуск . Скрипт sh делает что-то забавное.

Если вы покопаетесь в скрипте run.sh , пройдя через ужасную конкатенацию путей к классам java, вы можете найти следующий отрывок:

# Execute the JVM in the foreground
eval \"$JAVA\" $JAVA_OPTS \
  -Djava.endorsed.dirs=\"$JBOSS_ENDORSED_DIRS\" \
  -classpath \"$JBOSS_CLASSPATH\" \
  org.jboss.Main "$@"
JBOSS_STATUS=$?

Он использует eval вместо exec для выполнения jvm! Вот почему он порождает отдельный процесс, и runit не может его правильно контролировать.

Просто измените эту часть сценария на:

# Execute the JVM in the foreground
exec ${JAVA} $JAVA_OPTS \
  -Djava.endorsed.dirs=${JBOSS_ENDORSED_DIRS} \
  -classpath ${JBOSS_CLASSPATH} \
  org.jboss.Main "$@"
JBOSS_STATUS=$?

И готово! Вызов exec заменит себя выполняемым процессом, и runit сможет правильно управлять процессом.

s с использованием eval вместо exec для выполнения jvm! Вот почему он порождает отдельный процесс, и runit не может его правильно контролировать.

Просто измените эту часть сценария на:

# Execute the JVM in the foreground
exec ${JAVA} $JAVA_OPTS \
  -Djava.endorsed.dirs=${JBOSS_ENDORSED_DIRS} \
  -classpath ${JBOSS_CLASSPATH} \
  org.jboss.Main "$@"
JBOSS_STATUS=$?

И готово! Вызов exec заменит себя выполняемым процессом, и runit сможет правильно управлять процессом.

s с использованием eval вместо exec для выполнения jvm! Вот почему он порождает отдельный процесс, и runit не может его правильно контролировать.

Просто измените эту часть сценария на:

# Execute the JVM in the foreground
exec ${JAVA} $JAVA_OPTS \
  -Djava.endorsed.dirs=${JBOSS_ENDORSED_DIRS} \
  -classpath ${JBOSS_CLASSPATH} \
  org.jboss.Main "$@"
JBOSS_STATUS=$?

И готово! Вызов exec заменит себя выполняемым процессом, и runit сможет правильно управлять процессом.

1
ответ дан 4 December 2019 в 01:16

Когда я заменил eval на команду exec, я получаю исключение ниже, хотя каталог java верен и eval работает нормально. Проблема в том, что когда я использую eval, 2 процессы запускаются при запуске jboss. пожалуйста посоветуй. ./standalone.sh: 289: exec: "/app/dms/java/jdk1.7.0_60/bin/java": не найдено

0
ответ дан 4 December 2019 в 01:16

Теги

Похожие вопросы