0

我尝试使用 appassembler-maven-plugin 来简化 Java-Service-Wrapper 的使用

我的设置如下:

  • 实现了一个 MyServiceWrapper 类,它从 JSW 扩展 WrapperListner 以完全访问 start/stop/controlEvent-methods
  • 将 appassembler-maven-plugin 添加到我的 pom.xml 并配置 JSW

我的服务包装器:

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 中的 appassembler-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 和许多其他文件!但是有一条线是错误的,我不知道如何正确生成它。

错误的行是:

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

它应该是:

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

如果我手动将此行设置为正确提到的行,它就可以工作!

那么:有什么方法可以正确生成这条线?

PS:是否可以从 pom.xml 中设置 JSW 的日志级别?

4

1 回答 1

1

appassembler 默认使用集成方法#1,其中(即您的)“主类”实际上是 WrapperSimpleApp 类的第一个参数。这就是为什么你的主类被映射到 wrapper.app.parameter.1,而不是 wrapper.java.mainclass ...

在大多数情况下,您不需要生成自己的 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 回答