appassembler-maven-plugin JSW - 如何设置wrapper-java-mainclass

时间:2013-06-12 10:03:50

标签: java-service-wrapper mainclass appassembler

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

我的设置如下:

  • 实现了一个MyServiceWrapper类,它从JSW扩展WrapperListner以完全访问start / stop / controlEvent-methods
  • 将appassembler-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中的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的日志级别?

1 个答案:

答案 0 :(得分:1)

默认情况下,

appassembler使用集成方法#1,其中(即你的)'main class'实际上是WrapperSimpleApp类的第一个参数。这就是为什么你的mainclass被映射到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>

可以找到完整示例>here<

这将添加或覆盖现有的配置属性......您也可以将其用于loglevel;)