appassemblyr を使用してルートを linux(redhat) サービスとして実行する apache camel ルートがあります。サービス ラッパーへのシンボリック リンクを /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}/generated-resources/appassemblyr/jsw/daemon-science" である必要があります
エラーを修正する方法はありますか?
前もって感謝します。