1

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" である必要があります

エラーを修正する方法はありますか?

前もって感謝します。

4

0 に答える 0