2014-09-04 7 views
8

Ich möchte jsvc verwenden, um meine Spring-Boot-Anwendung zu starten, weil sie bereits auf dem Zielsystem ist und die Alternative darin besteht, Shell-Skripte für Randfälle zu debuggen. Ich habe die Daemon-Schnittstelle implementiert, so dass SpringApplication.run() in Daemon.start() aufgerufen wird, aber die verschachtelten Gläser können nicht gefunden werden, da ich die JarLoader umgangen habe.Wie kann ich das Laden der geschachtelten Klasse einrichten, wenn es vom Apache commons-Daemon jsvc gestartet wird?

Gibt es eine Möglichkeit, die richtigen Klassenlader usw. programmatisch einzurichten?

@Configuration 
@EnableAutoConfiguration 
@ComponentScan 
@EnableConfigurationProperties 
public class Application implements Daemon { 
private ConfigurableApplicationContext ctx; 
private String[] args; 

    @Override 
    public void init(DaemonContext context) throws Exception { 
    args = context.getArguments(); 
    } 

    @Override 
    public void start() throws Exception { 
    ctx = SpringApplication.run(Application.class, args); 
    } 

    @Override 
    public void stop() throws Exception { 
    ctx.stop(); 
    } 

    @Override 
    public void destroy() { 
    ctx.close(); 
    } 

    // Main - mostly for development. 
    public static void main(String[] args) throws Exception { 
    System.err.println("WARNING - running as current user"); 
    DaemonLoader.Context ctx = new DaemonLoader.Context(); 
    Application app = new Application(); 
    ctx.setArguments(args); 
    app.init(ctx); 
    app.start(); 
    } 
} 

Diese Fehler mit

java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication 
+0

Hallo Paul, hast du eine Lösung für dein Problem gefunden? Gibt es eine Möglichkeit, deine trübe aktuelle Konfiguration einschließlich Tomcat oder Jetty zu sehen? – Tito

+0

@Tito: Ich musste die Arbeit aufgeben und auf Skripte und Runuser etc. zurückgreifen. Dies ist eine Spring-Boot-App, also gibt es keine andere Servlet-Konfiguration als den Standard-Spring-Boot (Tomcat Embedded). –

Antwort

1

habe ich dieses Problem gelöst.

Ich musste schattiertes Glas statt Fettglas produzieren. Dann anstatt JarLoader zu verwenden, habe ich die Hauptklasse direkt in meine Hauptklasse geändert. Bei originalem Poster zur Klasse "Bewerbung".

Verwandte Themen