0

Java-Service-Wrapper の使用を容易にするために appassemblyr-maven-plugin を使用しようとしています

私のセットアップは次のとおりです。

  • JSW から WrapperListner を拡張して start/stop/controlEvent メソッドに完全にアクセスできるクラス MyServiceWrapper を実装しました。
  • appassemblyr-maven-plugin を pom.xml に追加し、JSW を構成しました

MyServiceWrapper:

package aaa.bbb.ccc;
import org.tanukisoftware.wrapper.WrapperListener;
import org.tanukisoftware.wrapper.WrapperManager;

public class MyServiceWrapper implements WrapperListener {

    @Override
    public void controlEvent(int arg0) {
    }

    @Override
    public Integer start(String[] arg0) {
        return null;
    }

    @Override
    public int stop(int exitCode) {
        return exitCode;
    }

    public static void main(String[] args) {
        WrapperManager.start(new MyServiceWrapper(), args);
    }
}

私のpom.xmlのappassemblyr-maven-plugin:

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>appassembler-maven-plugin</artifactId>
    <version>1.3.1</version>
    <executions>
      <execution>
        <id>generate-jsw-scripts</id>
        <phase>package</phase>
        <goals>
          <goal>generate-daemons</goal>
        </goals>
        <configuration>
          <!--declare the JSW config -->
          <daemons>
            <daemon>
              <id>MyServiceWrapper</id>
              <mainClass>aaa.bbb.ccc.MyServiceWrapper</mainClass>
              <platforms>
                <platform>jsw</platform>
              </platforms>              
            </daemon>
          </daemons>
          <target>${project.build.directory}/appassembler</target>
        </configuration>
      </execution>
    </executions>
  </plugin>

これにより、wrapper.conf と他の多くのファイルが生成されます。しかし、間違っている行が 1 つあり、それを正しく生成する方法がわかりません。

間違った行は次のとおりです。

wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp

それは次のようになります。

wrapper.java.mainclass=aaa.bbb.ccc.MyServiceWrapper

この行を手動で正しい言及された行に設定すると、機能します!

だから:この行を正しく生成する方法はありますか?

PS: pom.xml 内から JSW のログレベルを設定することは可能ですか?

4

1 に答える 1

1

appassemblyr はデフォルトで統合方法 #1 を使用します。ここで、(つまり、あなたの) 'メイン クラス' は、実際には WrapperSimpleApp クラスへの最初のパラメーターです。そのため、メインクラスは wrapper.java.mainclass ではなく、wrapper.app.parameter.1 にマップされます...

ほとんどの場合、WrapperListener インターフェイスの独自の実装を生成する必要はなく、統合メソッド #1 に固執することでほとんどの場合は機能します....

本当に統合メソッド#3 を使用したい場合、つまり独自の WrapperListener 実装を提供したい場合は、pom.xml に以下を追加する必要があります。

                 <property>
                  <name>wrapper.java.mainclass</name>
                  <value>my.WrapperListenerImpl</value>
                </property>
                <property>
                  <name>wrapper.logfile.loglevel</name>
                  <value>DEBUG</value>
                </property>

完全な例は>ここ<で見つけることができます

これにより、既存の構成プロパティが追加または上書きされます...ログレベルにも使用できます;)

于 2013-07-11T04:27:09.310 に答える