我尝试使用appassembler-maven-plugin来简化Java-Service-Wrapper的使用
我的设置如下:
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的日志级别?
答案 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;)