Использование appassembler в качестве скрипта-демона для запуска apache-camel route не удается во время перезагрузки
У меня есть Apache Camel Route, который использовал appassembler для запуска маршрута в качестве службы Linux(Redhat). Я создал символическую ссылку на оболочку службы в виде /etc/init.d/daemon-science. Когда я пытаюсь запустить символическую ссылку как службу, она работает нормально, но при перезагрузке она не указывает на нужную папку.
Wrapper.log показывает ошибку: FATAL | обертка | 2015/06/25 14:02:37 | Невозможно определить полный путь к файлу конфигурации, /etc/etc/wrapper.conf: нет такого файла или каталога
Мой pom.xml имеет запись
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.8.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>generate-daemons</goal>
</goals>
</execution>
</executions>
<configuration>
<daemons>
<daemon>
<id>daemon-science</id>
<mainClass>org.apache.camel.spring.Main</mainClass>
<generatorConfigurations>
<generatorConfiguration>
<generator>jsw</generator>
<includes>
<include>linux-x86-32</include>
<include>linux-x86-64</include>
<include>windows-x86-64</include>
</includes>
</generatorConfiguration>
</generatorConfigurations>
<platforms>
<platform>jsw</platform>
</platforms>
</daemon>
</daemons>
</configuration>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>echodir</id>
<goals>
<goal>run</goal>
</goals>
<phase>verify</phase>
<inherited>true</inherited>
<configuration>
<target>
<mkdir dir="${project.build.directory}/generated-resources/appassembler/jsw/daemon-science/logs"/>
<chmod file="${project.build.directory}/generated-resources/appassembler/jsw/daemon-science/bin/daemon-science" perm="755"/>
<chmod file="${project.build.directory}/generated-resources/appassembler/jsw/daemon-science/bin/wrapper-linux-x86-64" perm="755"/>
</target>
</configuration>
</execution>
</executions>
</plugin>
Каким-то образом часть BASEDIR оболочки службы получает другой путь при перезагрузке:
# discover BASEDIR
BASEDIR=`dirname "$0"`/..
BASEDIR=`(cd "$BASEDIR"; pwd)`
ls -l "$0" | grep -e '->' > /dev/null 2>&1
if [ $? = 0 ]; then
#this is softlink
_PWD=`pwd`
_EXEDIR=`dirname "$0"`
cd "$_EXEDIR"
_BASENAME=`basename "$0"`
_REALFILE=`ls -l "$_BASENAME" | sed 's/.*->\ //g'`
BASEDIR=`dirname "$_REALFILE"`/..
BASEDIR=`(cd "$BASEDIR"; pwd)`
cd "$_PWD"
fi
# Wrapper
WRAPPER_CMD="./wrapper"
WRAPPER_CONF="$BASEDIR/etc/wrapper.conf"
Я могу вручную изменить значение BASEDIR, но когда я перекомпилирую, мне нужно снова вручную изменить BASEDIR.
Должно быть BASEDIR ="${project.build.directory}/generate-resources/appassembler/jsw/daemon-science"
Есть ли способ исправить ошибку?
Заранее спасибо.