Когда я создаю сценарий запуска в /etc/init.d
и выполняю export
переменной, сохраняется ли эта переменная и является ли "видимой" для запущенного процесса?
Чтобы быть точным, у меня есть следующий скрипт для запуска tomcat в init.d, который я запускаю вручную при start
:
#!/bin/bash
RETVAL=$?
export JRE_HOME=/home/jre
export PATH=/home/jre/bin/:${PATH}
export CATALINA_HOME=/home/apache-tomcat-7.0.25
case "$1" in
start)
if [ -f $CATALINA_HOME/bin/startup.sh ];
then
echo $"Starting Tomcat"
/bin/su root $CATALINA_HOME/bin/startup.sh
fi
;;
stop)
if [ -f $CATALINA_HOME/bin/shutdown.sh ];
then
echo $"Stopping Tomcat"
/bin/su root $CATALINA_HOME/bin/shutdown.sh
fi
;;
restart)
if [ -f $CATALINA_HOME/bin/shutdown.sh ];
then
echo $"Stopping Tomcat"
/bin/su root $CATALINA_HOME/bin/shutdown.sh
fi
if [ -f $CATALINA_HOME/bin/startup.sh ];
then
echo $"Starting Tomcat"
/bin/su root $CATALINA_HOME/bin/startup.sh
fi
;;
*)
echo $"Usage: $0 {start|stop}"
exit 1
;;
esac
exit $RETVAL
Теперь в Tomcat я использую пул соединений, и когда я использую абсолютный URL, тогда все работает нормально. Т.е.: url="jdbc:h2:file:/home/apache-tomcat-7.0.25/webapps/myDB;SCHEMA=mySchema"
Но если я использую относительный URL, то есть $CATALINA_HOME
в URL, то есть url="jdbc:h2:file:$CATALINA_HOME\webapps\myDB;SCHEMA=mySchema"
это НЕ работает, и я получаю исключение JNDI.
Обратите внимание, что в моем скрипте я экспортировал $CATALINA_HOME
в /home/apache-tomcat-7.0.25
Похоже, что $CATALINA_HOME
не установлен для запущенного экземпляра Tomcat.
Может ли это быть так? У кого-нибудь есть идея, почему URL с переменной окружения не работает?