2013-06-12 2 views
0

я пытаюсь использовать appassembler-Maven-плагин, чтобы облегчить использование Java-Service-Упаковочныйappassembler-Maven-плагин JSW - Как установить обертку-Java-MainClass

Мои настройки выглядит следующим образом:

  • реализован класс MyServiceWrapper, который проходит WrapperListner от JSW, чтобы иметь полный доступ к старт/стоп/controlEvent-методы
  • добавившие appassembler-Maven-плагин для моего 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); 
    } 
} 

appassembler-Maven-плагин в моем pom.xml:

<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: Возможно ли установить лог-уровень JSW изнутри pom.xml?

ответ

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> 

Полный пример можно найти >here<

Это добавит или перезапишет существующие свойства конфигурации ... вы можете использовать это также для loglevel;)